From 01ebe1e26e26ae2dc5b3d64ef7d993ec985752fb Mon Sep 17 00:00:00 2001 From: bmedx Date: Wed, 9 May 2018 10:40:00 -0400 Subject: [PATCH] Fix issues with retirement state population and unenrollment - Prevent RetirementState state_execution_order collisions when updating - Add slash to end of unenroll API endpoint to match other retirement endpoints --- common/djangoapps/enrollment/urls.py | 2 +- .../management/commands/populate_retirement_states.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/common/djangoapps/enrollment/urls.py b/common/djangoapps/enrollment/urls.py index 41618429a2..da67d9a3e4 100644 --- a/common/djangoapps/enrollment/urls.py +++ b/common/djangoapps/enrollment/urls.py @@ -17,5 +17,5 @@ urlpatterns = [ url(r'^enrollment$', EnrollmentListView.as_view(), name='courseenrollments'), url(r'^course/{course_key}$'.format(course_key=settings.COURSE_ID_PATTERN), EnrollmentCourseDetailView.as_view(), name='courseenrollmentdetails'), - url(r'^unenroll$', UnenrollmentView.as_view(), name='unenrollment'), + url(r'^unenroll/$', UnenrollmentView.as_view(), name='unenrollment'), ] diff --git a/openedx/core/djangoapps/user_api/management/commands/populate_retirement_states.py b/openedx/core/djangoapps/user_api/management/commands/populate_retirement_states.py index 69439bed27..8a2922c44a 100644 --- a/openedx/core/djangoapps/user_api/management/commands/populate_retirement_states.py +++ b/openedx/core/djangoapps/user_api/management/commands/populate_retirement_states.py @@ -16,6 +16,7 @@ import logging from django.conf import settings from django.core.management.base import BaseCommand, CommandError +from django.db.models import F from openedx.core.djangoapps.user_api.models import RetirementState, UserRetirementStatus @@ -101,6 +102,10 @@ class Command(BaseCommand): # Delete states slated for removal RetirementState.objects.filter(state_name__in=states_to_delete).delete() + # Get all of our remaining states out of the way so we don't have + # state_execution_order collisions + RetirementState.objects.all().update(state_execution_order=F('state_execution_order') + 500) + # Add new rows, with space in between to manually insert stages via Django admin if necessary curr_sort_order = 1 for state in new_states: