Package: edx-name-affirmation
This library contains data model and business logic to store verified
personal information for learners of the edx-platform.
This library is designed to be a pluggable library to the edx-platform.OverviewThis library mainly stores various stages of a learner’s verified identifying information.
The prevalent example is the learner’s full name. To verify the full name, the learner
has to first initiate from UI that is part of the platform.
Here are the steps of which the PII information, for example: full name, goes through:learner requests to update the namelearner is brought to go through ID verification processlearner submit the ID verification after providing supporting evidencethe ID Verification reviewer approves or denies the verificationthe library receives the verdict and updates the name record in the model accordinglyThe above process can also be triggered by a Proctored exam attempt, where the exam attempt status
can be the input into this library to create and update the name record’s status. In this case,
the learner do not have to go through ID Verification. The proctoring process always collects ID
verification evidence.For more context of the library, seecontext.DependenciesIn addition to the edx-platform repository this library is installing into, the library also leverages
thefrontend-app-accountMicro-Frontend to capture learners’ attempt to update their full name.Installing in Docker DevstackAssuming that yourdevstackrepo lives at~/edx/devstackand thatedx-platformlives right alongside that directory, you’ll want
to checkoutedx-name-affirmationand have it live in~/edx/src/edx-name-affirmation.
This will make it so that you can access it inside an LMS container shell
and easily make modifications for local testing.Runmakelms-shellfrom yourdevstackdirectory to enter a running LMS container.
Once in there, you can do the following to have your devstack pointing at a local development
version ofedx-name-affirmation:$pushd/edx/src/edx-name-affirmation$virtualenvvenv/$sourcevenv/bin/activate$makeinstall$maketest# optional, if you want to see that everything works$deactivate$pushd# should take you back to /edx/edx-platform$pipuninstall-yedx_name_affirmation$pipinstall-e/edx/src/edx-name-affirmationAlternatively, you can add./src/edx-name-affirmationto the edx-platformprivate.txtof therequirementsfolder
This way, when you are pip installing within edx-platform, you don’t have to perform the above step again.Enabling in LMSMake sure your LMS settings have the FeatureENABLE_SPECIAL_EXAMSenabled.
Check your edx-platformlms/envsettings file.Disable the plugin libraryThere are two ways to disable the plugin library:You can uninstall the library from edx-platform.In thesetup.py, you can remove theentry_pointsinto eitherLMSorCMSDevelopmentinstallation and settingsInstall to the python virtualenv with help from virtualenvwrapper:$pipinstall--uservirtualenvwrapper$mkvirtualenvnameaffirmationFor detailed instructions on virtualenvwrapper:https://virtualenvwrapper.readthedocs.io/en/latest/install.htmlRunning testsFrom the edx-name-affirmation repo root, run the tests with the following command:$maketestRunning code quality checkFrom the edx-name-affirmation repo root, run the quality checks with the following command:$makequalityPackage Requirementsrequirements/dev.txtcontains a list of package dependencies which are required for this package.requirements/test.txtis used to install the same dependencies when running the tests for this package.LicenseThe code in this repository is licensed under the AGPL 3.0 unless
otherwise noted.How To ContributeContributions are very welcome.Please readHow To Contributefor details.Even though they were written withedx-platformin mind, the guidelines
should be followed for Open edX code in general.Reporting Security IssuesPlease do not report security issues in public. Please emailsecurity@edx.org.Getting HelpHave a question about this repository, or about Open edX in general?  Please
refer to thislist of resourcesif you need any assistance.Change LogUnreleased[2.3.6] - 2023-07-28Upgrade django-simple-history. Added new migration. Fixed packages upgrade issues.[2.3.5] - 2022-09-09Fix bug that prevents a verified name from being updated if the user already has an approved verified name associated with a proctored exam attempt[2.3.4] - 2022-05-17Fix bug that prevents new verified names from being created if the user is trying to verify the same name[2.3.3] - 2022-04-21Leverage edx-api-doc-tools to provide better swagger documentation for the RESTFul API endpointsUpdated internal documentation. Added to the readme and a new docs context[2.3.2] - 2022-03-11Add simple_history tracking to the VerifiedName model[2.3.1] - 2022-03-02Add two signal handlers to capture post_delete signals from ProctoredExamStudentAttempt and SoftwareSecurePhotoVerification models.
If those signals are received, the corresponding VerifiedName(s), if it exists, will be deleted.[2.3.0] - 2022-02-28Add REST API functionality to update verified name status, and to delete verified names.[2.2.1] - 2022-02-23Update verified name status todeniedif proctoringerrorstatus is received[2.2.0] - 2022-02-14Added Django40 testing and dropped Django22, 30 and 31 support[2.1.0] - 2022-01-11Add optionalstatuses_to_excludeargument toget_verified_namein order to filter out one or
more statuses from the result.[2.0.3] - 2021-11-17Remove unused celery tasks[2.0.2] - 2021-11-16Cut over to new celery tasks for IDV and proctoring handlers.[2.0.1] - 2021-11-15If we receive a non-relevant status for either IDV or proctoring, do not
trigger a celery task.[2.0.0] - 2021-10-27Remove VERIFIED_NAME_FLAG and all references to it.Remove VerifiedNameEnabledView view.Remove verified_name_enabled key from responses for VerifiedNameView view and VerifiedNameHistoryView[1.0.3] - 2021-10-26Add system check to CI.Add additional logs to IDV signal handler and Celery task logic.[1.0.2] - 2021-09-29Add automatic retry logic to celery tasks.[1.0.1] - 2021-09-28Move toggle check out of tasks[1.0.0] - 2021-09-23Move signal receiver logic into celery task[0.11.0] - 2021-09-15Add name change validator[0.10.0] - 2021-09-13Add is verified name enabled endpoint[0.9.2] - 2021-09-07Update IDV signal handler field names to be more explicit about the received names.[0.9.1] - 2021-09-07Add extra validation for the VerifiedName serializer, throwing a 400 error ifverified_namecontains HTML or a URL.[0.9.0] - 2021-09-01Add is verified name enabled to the APIADR for the use of signals in name affirmation service[0.8.2] - 2021-08-31Update django admin to allow editing of VerifiedName and VerifiedNameConfig[0.8.1] - 2021-08-30Emit signal whenVerifiedNamestatus changes to “approved”.[0.8.0] - 2021-08-30Add signal receivers for IDV and proctoring attempts[0.7.0] - 2021-08-26Add verified_name_enabled and use_verified_name_for_certs to the GET response of VerifiedNameHistoryView.[0.6.4] - 2021-08-18Remove verified name is_verified from DB[0.6.3] - 2021-08-18Update admin for verified name status[0.6.2] - 2021-08-17Remove verified name is_verified from model[0.6.1] - 2021-08-17Django settings updates for admin app[0.6.0] - 2021-08-11Add name verification status field, replacing single is_verified boolean.[0.5.0] - 2021-08-11Add API method and endpoint to return a complete list of the user’s
VerifiedNames, ordered by most recently created.[0.4.0] - 2021-08-06Expose API methods throughNameAffirmationService.[0.3.1] - 2021-08-03UpdateMANIFEST.into include all directories underedx_name_affirmation.[0.3.0] - 2021-08-02Adduse_verified_name_for_certsfield to the VerifiedNameView
response, and create a new endpoint to update the user’s verified
name config.Admin page configuration for VerifiedName and VerifiedNameConfig.[0.2.0] - 2021-07-22Add verified_name_enabled to VerifiedNameView GET response.Add PR template.Add VerifiedNameConfig model and API functions.[0.1.2] - 2021-07-02Add plugin support.[0.1.1] - 2021-06-30Fix typo in publish-pypi job.[0.1.0] - 2021-06-30Initialize project along withVerifiedNamemodel, Python API, and REST endpoints.