This commit adds the non-courseware lms/djangoapps and lms/lib.
These keys are now objects with a limited interface, and the particular
internal representation is managed by the data storage layer (the
modulestore).
For the LMS, there should be no outward-facing changes to the system.
The keys are, for now, a change to internal representation only. For
Studio, the new serialized form of the keys is used in urls, to allow
for further migration in the future.
Co-Author: Andy Armstrong <andya@edx.org>
Co-Author: Christina Roberts <christina@edx.org>
Co-Author: David Baumgold <db@edx.org>
Co-Author: Diana Huang <dkh@edx.org>
Co-Author: Don Mitchell <dmitchell@edx.org>
Co-Author: Julia Hansbrough <julia@edx.org>
Co-Author: Nimisha Asthagiri <nasthagiri@edx.org>
Co-Author: Sarina Canelake <sarina@edx.org>
[LMS-2370]
* -G allows explicit setting of grade condition (e.g., a string such as
'Distinction', 'Pass', 'F', 'B') for the certificate, regardless of
grader output for the user.
* -T allows explicit request of a particular certificate template to be
applied to a given user's certificate regeneration, i.e.:
-T doctor_distinction.pdf
to generate a certificate of distinction for doctors.
Quick-and-dirty end-to-end flow, functional for at least the case of one course in need of re-verification.
Ready for design to start taking a look; still needs tests and code cleanup
* Adds regenerate_user command, which lets you run certificates for one
particular user in one particular class, regardless of whether they
have a pre-existing certificate.
There was a potential though unlikely race condition because the .save()
was after the certificate request was put on the queue.
Now calling .save() immediately after we update the
cert.
Without this, problems fail to load because they can't find how to
render themselves, and the certificate generation grading run will
get an inaccurately low count of the possible points a user could
get (anything they didn't see will be omitted), inflating their
grade during certificate calculation and making it inconsistent
with their Progress page.