From d14cc213957364fd486ef03bd963a8e7e5c14419 Mon Sep 17 00:00:00 2001 From: Christie Rice <8483753+crice100@users.noreply.github.com> Date: Tue, 9 Mar 2021 11:34:12 -0500 Subject: [PATCH] MICROBA-923 Add ADR on course certificate allowlist (#26923) --- .../decisions/001-allowlist-requirements.rst | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lms/djangoapps/certificates/docs/decisions/001-allowlist-requirements.rst diff --git a/lms/djangoapps/certificates/docs/decisions/001-allowlist-requirements.rst b/lms/djangoapps/certificates/docs/decisions/001-allowlist-requirements.rst new file mode 100644 index 0000000000..db286dc985 --- /dev/null +++ b/lms/djangoapps/certificates/docs/decisions/001-allowlist-requirements.rst @@ -0,0 +1,34 @@ +Course Certificate Allowlist Requirements +========================================= + +Status +------ +Accepted + +Background +---------- +Users can earn a course certificate in a particular course run (the certificate +is stored in the GeneratedCertificate model). If a user has not earned a certificate +but the course staff would like them to have a certificate anyway, the user can +be added to the certificate allowlist for the course run. The allowlist is currently +stored in the CertificateWhitelist model, and was previously referred to as the +certificate whitelist. + +Requirements +------------ +Even if a user is on the allowlist for a given course run, they won't necessarily +receive a course certificate in the *downloadable* state. In other words, the user +won't necessarily have a course certificate available to them. To receive a +downloadable allowlist course certificate, the following things must be true at +the time the certificate is generated: + +* The user must be enrolled in the course +* The user must have an approved, unexpired, ID verification +* The user must be on the allowlist for the course run (see the CertificateWhitelist model) +* The user must not have an invalidated certificate for the course run (see the CertificateInvalidation model) +* Certificate generation must be enabled for the course run +* Automatic certificate generation must be enabled + +Note: the above requirements were written for the allowlist, which assumes the +CourseWaffleFlag *certificates_revamp.use_allowlist* has been enabled for the +course run. If it has not been enabled, the prior logic will apply.