Instead of going up the stacktrace to find the module names of waffle
flags and switches, we manually pass the module __name__ whenever the
flag is created. This is similar to `logging.getLogger(__name__)`
standard behaviour.
As the waffle classes are used outside of edx-platform, we make the new
module_name argument an optional keyword argument. This will change once
we pull waffle_utils outside of edx-platform.
Note that the module name is normally only required to view the list of
existing waffle flags and switches. The module name should not be
necessary to verify if a flag is enabled. Thus, maybe it would make
sense to create a `add` class methor similar to:
class WaffleFlag:
@classmethod
def add(cls, namespace, flag, module):
instance = cls(namespace, flag)
cls._class_instances.add((instance, module))
- Add a new CourseEnrollmentCelebration model, which ties a
course enrollment to some booleans about progress celebrations
- Add serialization of the new model to the existing courseware_api
app's existing course info view
- Add new API in courseware_api to update a celebration model
We don't use this field in edx-platform since we rely on UserProfile
instead. But we need to do this to prevent accidental incorrect use of
this field. Django adds a migration between 1.11 and 2.2 to increase
the length of this field that we are opting to skip. This change
enforces the old limit.
This stage does the following:
- Includes a data migration to copy the values from old to new field.
- Changes business logic to switch to using new field.
- Deletes all code references of the old field.
This was previously disabled because changing another user's password is
both not usually recommended and bypasses password policy. Here, we add
a feature flag (`ENABLE_CHANGE_USER_PASSWORD_ADMIN`) to allow
re-enabling this password change form. This allows continued use of this
functionality by clients that require it.
student enrollments. We no longer need to parse the course key into an
opaque key since the opaque key class can already handle strings and the
parsing happens there. We also need to specify which course enrollment
are we editing or else the reference is lost when saving the edits.
unlock student accounts that have been locked out for excessive login
failures. This change will allow to quickly unlock student accounts when
time is of the essence (e.g. Timed exams).
* uses openedx waffle_utils instead of straight waffle
* adds student.STUDENT_WAFFLE_NAMESPACE
* improves comment
Also changed the waffle switch to use _ instead of . to respect current conventions.
The read-only protection is more hassle than it's worth when testing locally and on stage. It's a solution to a problem we don't actually have, so I have reverted the changes.