Fix embargo migration to the new data models.

The previous version of this migration incorrectly handled
disabled configuration.  When configuration is disabled,
the embargoed country field was the empty string; calling
str.split(",") produced a list with a single empty list entry,
which is not a valid country code.
This commit is contained in:
Will Daly
2015-02-09 13:11:05 -05:00
parent 268280dfb5
commit 7e746f7df0

View File

@@ -11,13 +11,16 @@ class Migration(DataMigration):
for old_course in orm.EmbargoedCourse.objects.all():
new_course, __ = orm.RestrictedCourse.objects.get_or_create(course_key=old_course.course_id)
# Set the message keys to 'embargo'
new_course.enroll_msg_key = 'embargo'
new_course.access_msg_key = 'embargo'
new_course.save()
for country in self._embargoed_countries_list(orm):
country_model = orm.Country.objects.get(country=country)
orm.CountryAccessRule.objects.get_or_create(
country=country_model,
rule_type='blacklist',
enroll_msg_key='embargo',
access_msg_key='embargo',
restricted_course=new_course
)
@@ -31,12 +34,15 @@ class Migration(DataMigration):
# doesn't give us access to class methods on the Django model objects.
try:
current_config = orm.EmbargoedState.objects.order_by('-change_date')[0]
return [
country.strip().upper() for country
in current_config.embargoed_countries.split(',')
]
if current_config.enabled and current_config.embargoed_countries:
return [
country.strip().upper() for country
in current_config.embargoed_countries.split(',')
]
except IndexError:
return []
pass
return []
models = {
'auth.group': {