From 52eae381acdeb29ae1ab99acd73fcbc3442e4088 Mon Sep 17 00:00:00 2001 From: Troy Sankey Date: Wed, 4 Dec 2019 12:44:05 -0500 Subject: [PATCH] Rename order in CreditRequirement (1/3) This stage does the following: - Adds the new field and migration to create the column. - Makes all* writes go to both old and new field. (*) Except for writes from the Django Admin for this model. I confirmed with Support that CreditRequirements are never edited through the Django Admin interface. Additionally, I confirmed via the django_admin_log that there is no record of anybody changing any CreditRequirements. --- .../0005_creditrequirement_sort_value.py | 20 +++++++++++++++++++ openedx/core/djangoapps/credit/models.py | 16 +++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 openedx/core/djangoapps/credit/migrations/0005_creditrequirement_sort_value.py diff --git a/openedx/core/djangoapps/credit/migrations/0005_creditrequirement_sort_value.py b/openedx/core/djangoapps/credit/migrations/0005_creditrequirement_sort_value.py new file mode 100644 index 0000000000..a80de9a4d8 --- /dev/null +++ b/openedx/core/djangoapps/credit/migrations/0005_creditrequirement_sort_value.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.26 on 2019-12-04 21:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('credit', '0004_delete_historical_credit_records'), + ] + + operations = [ + migrations.AddField( + model_name='creditrequirement', + name='sort_value', + field=models.PositiveIntegerField(default=0), + ), + ] diff --git a/openedx/core/djangoapps/credit/models.py b/openedx/core/djangoapps/credit/models.py index f6cc0325ae..e2fe766271 100644 --- a/openedx/core/djangoapps/credit/models.py +++ b/openedx/core/djangoapps/credit/models.py @@ -301,9 +301,13 @@ class CreditRequirement(TimeStampedModel): namespace = models.CharField(max_length=255) name = models.CharField(max_length=255) display_name = models.CharField(max_length=255, default=u"") - order = models.PositiveIntegerField(default=0) criteria = JSONField() active = models.BooleanField(default=True) + sort_value = models.PositiveIntegerField(default=0) + + # TODO: Delete this deprecated field during the later stages of the rollout + # which renames `order` to `sort_value`. + order = models.PositiveIntegerField(default=0) CACHE_NAMESPACE = u"credit.CreditRequirement.cache." @@ -315,7 +319,7 @@ class CreditRequirement(TimeStampedModel): return u'{course_id} - {name}'.format(course_id=self.course.course_key, name=self.display_name) @classmethod - def add_or_update_course_requirement(cls, credit_course, requirement, order): + def add_or_update_course_requirement(cls, credit_course, requirement, sort_value): """ Add requirement to a given course. @@ -334,14 +338,18 @@ class CreditRequirement(TimeStampedModel): defaults={ "display_name": requirement["display_name"], "criteria": requirement["criteria"], - "order": order, + # TODO: remove this deprecated field key during later stages of the order->sort_value rename. + "order": sort_value, + "sort_value": sort_value, "active": True } ) if not created: credit_requirement.criteria = requirement["criteria"] credit_requirement.active = True - credit_requirement.order = order + # TODO: remove this deprecated field key during later stages of the order->sort_value rename. + credit_requirement.order = sort_value + credit_requirement.sort_value = sort_value credit_requirement.display_name = requirement["display_name"] credit_requirement.save()