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.
We now either pass in the relevant courseoverview or when creating the
enrollement we use the factory which automatically creates the relevant
CourseOverview object for testing purposes.
Historically, the CourseEnrollment model used to have a `course_id`
field. A lot of tests still call the factory using that. Instead of a
`course_id` field this model now has a `course` field which is a foreign
key to the CourseOverview model.
The factory still accepts the course_id but uses it to create the
relevant CourseOverview object where necessary. This commit fixes two
issues with the factory.
1. If the course id is passed in as`course_id` instead of `course__id`
then, the generated CourseOverview does not have the correct course_id.
2. Even though the CourseEnrollment model no longer needs the
`course_id` parameter, we were still passing it through. We now remove
it so that it is not passed through to the CourseEnrollment model
instantiation.
It conflicts with an underlying related field on that model which seems
to be getting at the same value from the related table.
Add logging for incorrectly instantiating CourseEnrollment models.
This is to catch any places that might break this that are outside of
edx-platform. Django won't accept `course` values that aren't
course_overviews so we don't need extra logic to test that `course`
values are of the correct type.
fixup! Remove the course_id property on student.CourseEnrollment.
1. Created a new celery queue with key `SOFTWARE_SECURE_VERIFICATION_ROUTING_KEY`.
2. Added a celery task with retry logic.
3. sorted imports with isort.
4. Changed deprecated `log.warn` => `log.warning`.
* Requiring at least one args in a mutually exclusive group to be set
bulk_change_enrollment requires one of agrs: org or course to be set
for it to function correctly.
* Creating new function to verify initial password hash
Starting with django 2.1, the function is_password_usable no longer checks whether encode
is a valid password created by a django hasher(hasher in PASSWORD_HASHERS setting)
Adding this function to create constant behavior as we upgrade django versions
Bulk unenroll command is not supporting unenrolling all the learners
from multiple courses.This PR will enhance this mgmt cmd so that
it can support un-enrollment of learners from multiple courses.
PROD-1347
* Reenabling this since the renames on the schedules table are completed
* Reverting regex change that caused migration to be generated for userprofile
* MICROBA-253 add phone number field api for coaching plugin
* Remove hardcoded value
* Requested changes
* Add logger to models_api.py for student
* Import model with underscore to prevent exporting
* Moved return outside of try/catch block
* Add docstring
* whitespace
Instead of requiring views like the dashboard to know about plugins so
they can include their data in the context, this allows plugins to
define a mapping between a view and a function where the function
returns a dictionary of new context for the view. Each view would have
to purposefully enable this additional context before it could be used.
This will allow new content to be added to the pages without updating
the core with a combination of a plugin to add new context, and a theme
override of that page to use the new context.
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.
Moves the existence check for secondary (recovery) email to validate
method. If the email already exists, silently remove it from the set of
data to be updated. This parallels the existing behavior for updating
the primary email.
ENT-1913
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.
Adds a simple nullable field to the UserProfile model. The only
validation done it to make sure any character saved in that field is a
digit and not a letter. We do not distiguish on a model level if the
phone number is international or not.
Rather than to create or update the account recovery record when the
Account Settings page is updated, defer updating until the new
recovery email is confirmed
ENT-2607
Currently, the /login_ajax endpoint does not regard
any `next` or `course_id` parameters. This commit changes
that, sharing the logic that /login (which the current
templated login page uses) employs to cacluate
a redirect-after-login URL based on `next` and `course_id`.
The new functionality is behind ENABLE_LOGIN_MICROFRONTEND.