Skip to content
This repository has been archived by the owner on Jan 15, 2022. It is now read-only.

Jrbl's State of the edX Certificates World

jrbl edited this page Dec 5, 2014 · 28 revisions

High-level overview of certificates mainline

This is meant to summarize everything linked down below in References, though as of initial authoring, reading those gives a more complete and overall more visceral understanding of the situation.

Todo; mention it's not installable from ansible

Recent Code Changes

Todo; describe and howto use: unicode font selection, centering, autosizing, performance improvements, robustness fixes, support rolling certs, others...?

Platform updates

Todo; none of these exist yet, but it would be nice to have: xblock for grade me button, docker container w/ certs pipeline, studio assets management, documentation documentation, csv certifying, REST endpoint to check for a cert

Outstanding problems

Todo: things which are sucky even with recent updates, incl:

  • configuration in two places
  • template rendering not dynamic enough, requires too much setup
  • xqueue is ok, but why not regular celery tasks?
  • completed certs are not accessible. Sadecki has mock accessible PDFs, can we generate these from reportlab?

Some common things people want to do and how to do them

Rolling Certificates

This is how it was done with the old deprecated repo, it will be be better with the new one.

  • Set up a new machine to run certs

    • mkvirtualenv old-certs
    • add path to dir in ~/.virtualenv/old-certs/.project (new file)
    • Clone old-certs-deprecated repo
    • run pip install -r requirements
    • on a mac, make sure logging conf has dev_env=True
  • Set up configuration for course and do local cert test

    • add course settings to the CERT_DATA dictionary in settings.py

    • Example working Stanza

      ```
      "SelfPaced/Haptics/2014" : {
          #"LONG_COURSE" : "Introduction to Haptics",
          "LONG_ORG" : "Stanford Engineering",
          "VERSION"     : 'stanford-notitle',
      }
      ```
      
    • add course cert template to template_data

    • run python create_pdfs.py -U -c ""THE/COURSE/TRIPLE"" -l "THE COURSE TITLE" -n "Test User"

    • commit and push settings and template file changes to git repo

  • Do manual cert test and set up piping for “Grade Me Button”

    • log into util1.prod
    • in /edx/app/certs/certificates run sudo -u certs GIT_SSH="/tmp/git_ssh.sh" git fetch origin
    • then sudo -u certs GIT_SSH="/tmp/git_ssh.sh" git pull origin jrbl/initial-4
    • sudo tail -f /edx/var/log/supervisor/certs-*.log
    • then run sudo -u www-data /edx/bin/supervisorctl restart certs
    • in new ssh window, ~/manage.sh cert_whitelist -c "THE/COURSE/TRIPLE" -a USERNAME
    • then run ~/manage.sh regenerate_user -c "THE/COURSE/TRIPLE" -u USERNAME
  • Do full cert run (run after the previous section)

    • ~/manage.sh ungenerated_certs -c "THE/COURSE/TRIPLE"

Modify certificate display behavior on dashboard

Todo

One-off certify groups of users into a particular grading condition

Todo

One-off give certs to students regardless of grade (or possibly participation in the course)

Todo

Future Features: ideas that nobody has implemented

Some of these are more realistic than others, and some are more useful than others. They are not ranked in any way.

Decouple certs config from templates

Ideally, the cert-data.yml, env.json and auth.json files would be generated by ansible from static configuration and the information in COURSE_LISTINGS['default'].

Certificate request auditing

The audit trail for a certificate could be improved greatly by the introduction of a 'certificate-request' token, some unique string which gets passed between lms, the management commands, the xqueue and the certificate-agent. This value would get logged every time a cert-related logging event happens, so at the end you can grep for this token in the aggregated logs and see the chain of responsibility for some certificate request.

References