Commit 0279326d by Renzo Lucioni

Merge pull request #12137 from mitocw/fix/aq/migration_003_issues

Fixed course not found against ccx issue on migration 0003
parents 173154d1 0d823768
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import unicode_literals from __future__ import unicode_literals
import logging
from ccx_keys.locator import CCXLocator from ccx_keys.locator import CCXLocator
from courseware.courses import get_course_by_id from courseware.courses import get_course_by_id
from django.db import migrations from django.db import migrations
from django.http import Http404
from lms.djangoapps.ccx.utils import ( from lms.djangoapps.ccx.utils import (
add_master_course_staff_to_ccx, add_master_course_staff_to_ccx,
remove_master_course_staff_from_ccx, remove_master_course_staff_from_ccx,
) )
log = logging.getLogger("edx.ccx")
def add_master_course_staff_to_ccx_for_existing_ccx(apps, schema_editor): def add_master_course_staff_to_ccx_for_existing_ccx(apps, schema_editor):
""" """
...@@ -23,16 +28,24 @@ def add_master_course_staff_to_ccx_for_existing_ccx(apps, schema_editor): ...@@ -23,16 +28,24 @@ def add_master_course_staff_to_ccx_for_existing_ccx(apps, schema_editor):
CustomCourseForEdX = apps.get_model("ccx", "CustomCourseForEdX") CustomCourseForEdX = apps.get_model("ccx", "CustomCourseForEdX")
list_ccx = CustomCourseForEdX.objects.all() list_ccx = CustomCourseForEdX.objects.all()
for ccx in list_ccx: for ccx in list_ccx:
if ccx.course_id.deprecated: if not ccx.course_id or ccx.course_id.deprecated:
# prevent migration for deprecated course ids. # prevent migration for deprecated course ids or invalid ids.
continue continue
ccx_locator = CCXLocator.from_course_locator(ccx.course_id, unicode(ccx.id)) ccx_locator = CCXLocator.from_course_locator(ccx.course_id, unicode(ccx.id))
try:
course = get_course_by_id(ccx.course_id)
add_master_course_staff_to_ccx( add_master_course_staff_to_ccx(
get_course_by_id(ccx.course_id), course,
ccx_locator, ccx_locator,
ccx.display_name, ccx.display_name,
send_email=False send_email=False
) )
except Http404:
log.warning(
"Unable to add instructors and staff of master course %s to ccx %s.",
ccx.course_id,
ccx_locator
)
def remove_master_course_staff_from_ccx_for_existing_ccx(apps, schema_editor): def remove_master_course_staff_from_ccx_for_existing_ccx(apps, schema_editor):
...@@ -47,17 +60,24 @@ def remove_master_course_staff_from_ccx_for_existing_ccx(apps, schema_editor): ...@@ -47,17 +60,24 @@ def remove_master_course_staff_from_ccx_for_existing_ccx(apps, schema_editor):
CustomCourseForEdX = apps.get_model("ccx", "CustomCourseForEdX") CustomCourseForEdX = apps.get_model("ccx", "CustomCourseForEdX")
list_ccx = CustomCourseForEdX.objects.all() list_ccx = CustomCourseForEdX.objects.all()
for ccx in list_ccx: for ccx in list_ccx:
if ccx.course_id.deprecated: if not ccx.course_id or ccx.course_id.deprecated:
# prevent migration for deprecated course ids. # prevent migration for deprecated course ids or invalid ids.
continue continue
ccx_locator = CCXLocator.from_course_locator(ccx.course_id, unicode(ccx.id)) ccx_locator = CCXLocator.from_course_locator(ccx.course_id, unicode(ccx.id))
try:
course = get_course_by_id(ccx.course_id)
remove_master_course_staff_from_ccx( remove_master_course_staff_from_ccx(
get_course_by_id(ccx.course_id), course,
ccx_locator, ccx_locator,
ccx.display_name, ccx.display_name,
send_email=False send_email=False
) )
except Http404:
log.warning(
"Unable to remove instructors and staff of master course %s from ccx %s.",
ccx.course_id,
ccx_locator
)
class Migration(migrations.Migration): class Migration(migrations.Migration):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment