Proctoring subsystem for Open edX
Project description
This is the exam proctoring subsystem for the Open edX platform.
Overview
Proctored exams are exams with time limits that learners complete while online proctoring software monitors their computers and behavior for activity that might be evidence of cheating. This Python library provides the proctoring implementation used by Open edX.
Documentation
For authoring documentation, see Including Proctored Exams In Your Course.
Installation
To install edx-proctoring:
mkvirtualenv edx-proctoring make install
To run the tests:
make test-all
For a full list of Make targets:
make help
Configuration
In order to use edx-proctoring, you must obtain an account (and secret configuration - see below) with SoftwareSecure, which provides the proctoring review services that edx-proctoring integrates with.
You will need to turn on the ENABLE_SPECIAL_EXAMS in lms.env.json and cms.env.json FEATURES dictionary:
"FEATURES": { : "ENABLE_SPECIAL_EXAMS": true, : }
Also in your lms.env.json and cms.env.json file please add the following:
"PROCTORING_SETTINGS": { "LINK_URLS": { "contact_us": "{add link here}", "faq": "{add link here}", "online_proctoring_rules": "{add link here}", "tech_requirements": "{add link here}" } },
In your lms.auth.json file, please add the following secure information:
"PROCTORING_BACKENDS": { "software_secure": { "crypto_key": "{add SoftwareSecure crypto key here}", "exam_register_endpoint": "{add endpoint to SoftwareSecure}", "exam_sponsor": "{add SoftwareSecure sponsor}", "organization": "{add SoftwareSecure organization}", "secret_key": "{add SoftwareSecure secret key}", "secret_key_id": "{add SoftwareSecure secret key id}", "software_download_url": "{add SoftwareSecure download url}" }, 'DEFAULT': 'software_secure' },
You will need to restart services after these configuration changes for them to take effect.
Email Templates
edx-proctoring provides generic base email templates that are rendered and sent to learners based on changes to the status of a proctored exam attempt. They have been designed such that you may leverage Django template inheritance to customize their content to the proctoring backend. Because proctoring backend plugins are installed in edx-platform, you must create an overriding template in the edx-platform repository. The template path should be emails/proctoring/{backend}/{template_name}. Note that your template can either completely override the base template in edx-proctoring, or it can extend the base template in order to leverage the existing content of the blocks within the base template, particularly if you only need to change a portion of the template.
Debugging
To debug with PDB, run pytest with the -n0 flag. This restricts the number of processes in a way that is compatible with pytest
pytest -n0 [file-path]
License
The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.
Please see LICENSE.txt for details.
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
[2.5.12] - 2021-01-20
Allow blank fields in Django admin for external_id, due_date, and backend in proctored exams.
[2.5.11] - 2021-01-19
Added ProctoredExam to django admin
[2.5.10] - 2021-01-15
Added management command to update is_attempt_active field on review models
[2.5.9] - 2021-01-13
Added is_attempt_active field to ProctoredExamSoftwareSecureReview and ProctoredExamSoftwareSecureReviewHistory models to note if the attempt for that review has been archived. When an attempt is archived and if it is associated with a review, this field will be set to False
[2.5.8] - 2021-01-12
Ignore the ProctoredExamStudentAttemptHistory table when viewing onboarding status. This fixes a bug where the status would return verified even after all attempts had been deleted.
[2.5.7] - 2021-01-08
Allow the creation of multiple exam attempts for a single user in a single exam, as long as the most recent attempt is ready_to_resume or resumed. When an exam is resumed, the time remaining is saved to the new attempt and is used to calculate the expiration time.
[2.5.6] - 2021-01-06
Updated the StudentProctoredExamAttempt view’s PUT handler to allow for a new action “mark_ready_to_resume”, which transitions exam attempts in the “error” state to a “ready_to_resume” state.
[2.5.5] - 2020-01-05
Cover Start System Check button on the proctoring instruction page with the conditions software download link is provided by the proctoring provider, since some providers do not has that step in the onboarding process.
Changed handler for exam ping to remove learner from the exam on 403 error.
Added time_remaining_seconds field to the exam attempt model in order to allow the remaining time on an exam attempt to be saved after it enters an error state.
Fix bug allowing learners access to onboarding setup after exam due date.
[2.5.4] - 2020-12-17
Minor template fix
[2.5.3] - 2020-12-10
Upgrade celery to 5.0.4
[2.5.2] - 2020-12-10
Fixed bug for proctoring info panel
[2.5.1] - 2020-12-10
Add endpoint to expose the learner’s onboarding status
[2.5.0] - 2020-12-09
Changed behavior of practice exam reset to create a new exam attempt instead of rolling back state of the current attempt.
Added new proctoring info panel to expose onboarding exam status to learners
Added option to reset a failed or pending onboarding exam.
[2.4.9] - 2020-11-17
Fix unbound local variable issue in api.get_attempt_status_summary
Added new action to student exam attempt PUT allowing users to reset a completed practice exam.
[2.4.8] - 2020-10-19
Created a separate error message for inactive users. Refined the existing error message to only show for network error or service disruption.
[2.4.7] - 2020-10-06
Removed the rpnowv4_flow waffle flag to cleanup code
For details of changes prior to this release, please see the GitHub commit history.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file edx-proctoring-2.5.12.tar.gz
.
File metadata
- Download URL: edx-proctoring-2.5.12.tar.gz
- Upload date:
- Size: 699.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 624c0dd564d667f667f1931680564918208d382b9afc7774a47b330d5b59dc55 |
|
MD5 | 315a6f4268b56984de284ec0a95ab493 |
|
BLAKE2b-256 | 9df45ce334c4e381f31aa8775e8b6b8b70776e2e17b2ee1ae059c50ce2808387 |
Provenance
File details
Details for the file edx_proctoring-2.5.12-py2.py3-none-any.whl
.
File metadata
- Download URL: edx_proctoring-2.5.12-py2.py3-none-any.whl
- Upload date:
- Size: 855.0 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/51.3.3 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 48e54c8e72aa5e87d88c5f6a9e8995aae06e1f4043e8f6f3dab8beb3b80c66c8 |
|
MD5 | 07e9950ea67bdab4731af7a3ed2b9c47 |
|
BLAKE2b-256 | 37d0018ee77a5e2cf5e7018bf3eba4983892c92c19cf8b7b344245b3de565ed8 |