* refactor(certificates): replace direct model imports with data classes and APIs
* fix: use Certificates API to create certificates
* docs: update docstring for get_certificate_for_user
* fix: remove trailing whitespace
---------
Co-authored-by: coder1918 <ram.chandra@wgu.edu>
Co-authored-by: Deborah Kaplan <deborahgu@users.noreply.github.com>
* chore: enrollment_date added to csv report and add custom fields method managing
* test: tests added
* fix: pylint fix
* fix: new line at test_basic.py added
* feat: new function added to handle available features with custom fields
* chore: replace include_ parameters with direct feature checks
* feat: type validation for custom attributes added
* chore: site config name and variable updated, attribute fixing erased
* test: tests updated
During the process of generatinng report for problem responses,
there are two places where N + 1 query problem exist. In both
cases, `StudentModule` objects are fetched and looped over where
`student.username` field for each object is accessed. This result
in a seperate database call to get the username for each student
response.
This problem is fixed by creating a join to fetch the related
table in the original query using `select_related`. In a test
conducted on report having 5000 `StudentModule` objects, the
number of queries for the request reduced from 8363 to 29. The
total time taken for the task reduced from 23764 ms to 7394 ms.
* chore: update deprecated import from collections
* chore: remove outdated imports from markdown library
as it hasn't been supported since 2.0.3 and we're on 3.x.
This was deprecated at least as early as 2012!
* docs: add docstring and remove lint-amnesty to markdown plugin
* chore: remove deprecated etree import
* style: remove unnecessary-comprehension for sets
* style: resolve a number of amnestied pylint complaints
Co-authored-by: stvn <stvn@mit.edu>
There are two distinct ways to store a city for users in edx-platform:
one directly in UserProfile.city, and another in UserProfile.meta.
Depending on configuration, both fields can be used. Though the
UserProfile.meta['city'] field is not set unless specifically configured,
so we choose this over the UserProfile.city field when generating the student
features report.
Additional details and discussion available on edx/edx-platform#23171
* MST-682 Add external_user_key to the student profile CSV
This is a request from some Masters school partners. They would like to download the student enrolled list with the Masters external_user_key data referenced. This way, the schools can properly match the students enrolled in the course with the students enrolled through Masters enrollment system
* Generate common/djangoapps import shims for LMS
* Generate common/djangoapps import shims for Studio
* Stop appending project root to sys.path
* Stop appending common/djangoapps to sys.path
* Import from common.djangoapps.course_action_state instead of course_action_state
* Import from common.djangoapps.course_modes instead of course_modes
* Import from common.djangoapps.database_fixups instead of database_fixups
* Import from common.djangoapps.edxmako instead of edxmako
* Import from common.djangoapps.entitlements instead of entitlements
* Import from common.djangoapps.pipline_mako instead of pipeline_mako
* Import from common.djangoapps.static_replace instead of static_replace
* Import from common.djangoapps.student instead of student
* Import from common.djangoapps.terrain instead of terrain
* Import from common.djangoapps.third_party_auth instead of third_party_auth
* Import from common.djangoapps.track instead of track
* Import from common.djangoapps.util instead of util
* Import from common.djangoapps.xblock_django instead of xblock_django
* Add empty common/djangoapps/__init__.py to fix pytest collection
* Fix pylint formatting violations
* Exclude import_shims/ directory tree from linting