Files
Braden MacDonald 3e522d5272 feat: bump opaque-keys to get case-sensitivity support + default max_length (#38044)
refactor: remove some 'max_length=255' to be more DRY

feat: example of making an OpaqueKeyField case_sensitive (modulestore_migrator)

test: update test now that we're using case-insensitive collation on SQLite
2026-02-25 09:05:15 -08:00
..
2026-01-08 13:03:46 -05:00
2026-01-08 13:03:46 -05:00
2026-01-08 13:03:46 -05:00

Status: Maintenance

Responsibilities
================
The Certificates app is responsible for creating and managing course certificates, including
certificate settings, course certificate templates, and generated learner course certificates.
The app includes  relevant data models for invalidating certificates and managing the allowlist.

See Also
========
Course Certificates related functionality is scattered across a number of places:

* ``lms/djangoapps/certificates``
* ``openedx/core/djangoapps/credentials``
* ``cms/djangoapps/contentstore/views/certificates.py``
* Various front-end static templates in multiple locations

See also the `credentials service`_, which is the system of record for a learner's Program Certificates.

.. _credentials service: https://github.com/openedx/credentials