Skip to main content

edx-name-affirmation

Build Status Coveralls

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.

Overview

This 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:

  1. learner requests to update the name

  2. learner is brought to go through ID verification process

  3. learner submit the ID verification after providing supporting evidence

  4. the ID Verification reviewer approves or denies the verification

  5. the library receives the verdict and updates the name record in the model accordingly

The 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, see context.

Dependencies

In addition to the edx-platform repository this library is installing into, the library also leverages the frontend-app-account Micro-Frontend to capture learners’ attempt to update their full name.

Installing in Docker Devstack

Assuming that your devstack repo lives at ~/edx/devstack and that edx-platform lives right alongside that directory, you’ll want to checkout edx-name-affirmation and 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.

Run make lms-shell from your devstack directory to enter a running LMS container. Once in there, you can do the following to have your devstack pointing at a local development version of edx-name-affirmation:

$ pushd /edx/src/edx-name-affirmation
$ virtualenv venv/
$ source venv/bin/activate
$ make install
$ make test  # optional, if you want to see that everything works
$ deactivate
$ pushd  # should take you back to /edx/edx-platform
$ pip uninstall -y edx_name_affirmation
$ pip install -e /edx/src/edx-name-affirmation

Alternatively, you can add ./src/edx-name-affirmation to the edx-platform private.txt of the requirements folder This way, when you are pip installing within edx-platform, you don’t have to perform the above step again.

Enabling in LMS

Make sure your LMS settings have the Feature ENABLE_SPECIAL_EXAMS enabled. Check your edx-platform lms/env settings file.

Disable the plugin library

There are two ways to disable the plugin library:

  • You can uninstall the library from edx-platform.

  • In the setup.py, you can remove the entry_points into either LMS or CMS

Development

installation and settings

Install to the python virtualenv with help from virtualenvwrapper:

$ pip install --user virtualenvwrapper
$ mkvirtualenv nameaffirmation

For detailed instructions on virtualenvwrapper: https://virtualenvwrapper.readthedocs.io/en/latest/install.html

Running tests

From the edx-name-affirmation repo root, run the tests with the following command:

$ make test

Running code quality check

From the edx-name-affirmation repo root, run the quality checks with the following command:

$ make quality

Package Requirements

requirements/dev.txt contains a list of package dependencies which are required for this package.

requirements/test.txt is used to install the same dependencies when running the tests for this package.

License

The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.

How To Contribute

Contributions are very welcome.

Please read How To Contribute for details.

Even though they were written with edx-platform in mind, the guidelines should be followed for Open edX code in general.

Reporting Security Issues

Please do not report security issues in public. Please email security@edx.org.

Getting Help

Have a question about this repository, or about Open edX in general? Please refer to this list of resources if you need any assistance.

Change Log

Unreleased

[3.0.2]

  • Upgrade django-simple-history to latest version

  • Pin click and packaging version to fix upgrade failure

[3.0.1] - 2024-10-07

  • Upgrade django-simple-history and add migration to match the new version.

[3.0.0] - 2024-09-30

  • Add platform verification id field to the VerifiedName model

  • Integrate platform verification id into app

  • Added event handlers for new IDV events on the VerifiedName model

  • Removed event handlers for SoftwareSecurePhotoVerification updates. This is a breaking change.

[2.4.0] - 2024-04-23

  • Added python3.11 support.

[2.3.6] - 2023-07-28

  • Upgrade django-simple-history. Added new migration. Fixed packages upgrade issues.

[2.3.5] - 2022-09-09

  • Fix 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-17

  • Fix bug that prevents new verified names from being created if the user is trying to verify the same name

[2.3.3] - 2022-04-21

  • Leverage edx-api-doc-tools to provide better swagger documentation for the RESTFul API endpoints

  • Updated internal documentation. Added to the readme and a new docs context

[2.3.2] - 2022-03-11

  • Add simple_history tracking to the VerifiedName model

[2.3.1] - 2022-03-02

  • Add 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-28

  • Add REST API functionality to update verified name status, and to delete verified names.

[2.2.1] - 2022-02-23

  • Update verified name status to denied if proctoring error status is received

[2.2.0] - 2022-02-14

  • Added Django40 testing and dropped Django22, 30 and 31 support

[2.1.0] - 2022-01-11

  • Add optional statuses_to_exclude argument to get_verified_name in order to filter out one or more statuses from the result.

[2.0.3] - 2021-11-17

  • Remove unused celery tasks

[2.0.2] - 2021-11-16

  • Cut over to new celery tasks for IDV and proctoring handlers.

[2.0.1] - 2021-11-15

  • If we receive a non-relevant status for either IDV or proctoring, do not trigger a celery task.

[2.0.0] - 2021-10-27

  • Remove 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-26

  • Add system check to CI.

  • Add additional logs to IDV signal handler and Celery task logic.

[1.0.2] - 2021-09-29

  • Add automatic retry logic to celery tasks.

[1.0.1] - 2021-09-28

  • Move toggle check out of tasks

[1.0.0] - 2021-09-23

  • Move signal receiver logic into celery task

[0.11.0] - 2021-09-15

  • Add name change validator

[0.10.0] - 2021-09-13

  • Add is verified name enabled endpoint

[0.9.2] - 2021-09-07

  • Update IDV signal handler field names to be more explicit about the received names.

[0.9.1] - 2021-09-07

  • Add extra validation for the VerifiedName serializer, throwing a 400 error if verified_name contains HTML or a URL.

[0.9.0] - 2021-09-01

  • Add is verified name enabled to the API

  • ADR for the use of signals in name affirmation service

[0.8.2] - 2021-08-31

  • Update django admin to allow editing of VerifiedName and VerifiedNameConfig

[0.8.1] - 2021-08-30

  • Emit signal when VerifiedName status changes to “approved”.

[0.8.0] - 2021-08-30

  • Add signal receivers for IDV and proctoring attempts

[0.7.0] - 2021-08-26

  • Add verified_name_enabled and use_verified_name_for_certs to the GET response of VerifiedNameHistoryView.

[0.6.4] - 2021-08-18

  • Remove verified name is_verified from DB

[0.6.3] - 2021-08-18

  • Update admin for verified name status

[0.6.2] - 2021-08-17

  • Remove verified name is_verified from model

[0.6.1] - 2021-08-17

  • Django settings updates for admin app

[0.6.0] - 2021-08-11

  • Add name verification status field, replacing single is_verified boolean.

[0.5.0] - 2021-08-11

  • Add API method and endpoint to return a complete list of the user’s VerifiedNames, ordered by most recently created.

[0.4.0] - 2021-08-06

  • Expose API methods through NameAffirmationService.

[0.3.1] - 2021-08-03

  • Update MANIFEST.in to include all directories under edx_name_affirmation.

[0.3.0] - 2021-08-02

  • Add use_verified_name_for_certs field 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-22

  • Add verified_name_enabled to VerifiedNameView GET response.

  • Add PR template.

  • Add VerifiedNameConfig model and API functions.

[0.1.2] - 2021-07-02

  • Add plugin support.

[0.1.1] - 2021-06-30

  • Fix typo in publish-pypi job.

[0.1.0] - 2021-06-30

  • Initialize project along with VerifiedName model, Python API, and REST endpoints.

Metadata

Release files for edx-name-affirmation 3.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for edx-name-affirmation 3.0.2
File Size Uploaded Provenance
edx-name-affirmation-3.0.2.tar.gz 58.7 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for edx-name-affirmation 3.0.2
File Interpreter ABI Platform
edx_name_affirmation-3.0.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 116.3 kB

Release files / edx-name-affirmation-3.0.2.tar.gz

Download URL edx-name-affirmation-3.0.2.tar.gz
Size 58.7 kB
Tags Source
SHA-256 checksum
How to use checksums
584576b523966768c84729676b751cf7b26960cb03ec753e12036c1bf853a638
BLAKE2b-256 checksum
How to use checksums
db58a45fb94d736538e93bacc1fafbedb261a511ab52215208f228761c1c0b86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.23

Release files / edx_name_affirmation-3.0.2-py2.py3-none-any.whl

Download URL edx_name_affirmation-3.0.2-py2.py3-none-any.whl
Size 57.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
7429d244074f0dccfab5f6e8345acf36a07c6d668c63b3c240f144c48fe882f0
BLAKE2b-256 checksum
How to use checksums
95d812bae357e30dcddbc61c2b7063e4eed3046af7e6c020513a3afd268d2099
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.9.23

Security for edx-name-affirmation 3.0.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

3.0.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page