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.
This commit is contained in:
Troy Sankey
2019-12-04 12:44:05 -05:00
committed by Hassan Javeed
parent f20a064a0c
commit 52eae381ac
2 changed files with 32 additions and 4 deletions

View File

@@ -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),
),
]

View File

@@ -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()