Merge pull request #22865 from cpennington/dont-delete-course-overviews

Dont delete course overviews
This commit is contained in:
Calen Pennington
2020-01-16 13:57:13 -05:00
committed by GitHub
6 changed files with 60 additions and 5 deletions

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2020-01-15 20:22
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('course_modes', '0012_historicalcoursemode'),
]
operations = [
migrations.AlterField(
model_name='coursemode',
name='course',
field=models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.DO_NOTHING, related_name='modes', to='course_overviews.CourseOverview'),
),
]

View File

@@ -54,7 +54,7 @@ class CourseMode(models.Model):
db_constraint=False,
db_index=True,
related_name='modes',
on_delete=models.CASCADE,
on_delete=models.DO_NOTHING,
)
# Django sets the `course_id` property in __init__ with the value from the database

View File

@@ -21,6 +21,7 @@ from six.moves import zip
from course_modes.helpers import enrollment_mode_display
from course_modes.models import CourseMode, Mode, get_cosmetic_display_price, invalidate_course_mode_cache
from course_modes.tests.factories import CourseModeFactory
from openedx.core.djangoapps.content.course_overviews.models import CourseOverview
from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase
from xmodule.modulestore.tests.factories import CourseFactory
@@ -523,6 +524,19 @@ class CourseModeModelTest(TestCase):
self.assertEqual(CourseMode.is_masters_only(self.course_key), expected_is_masters_only)
class TestCourseOverviewIntegration(ModuleStoreTestCase):
def test_course_overview_version_update(self):
course = CourseFactory.create()
course_overview = CourseOverview.get_from_id(course.id)
course_overview.version -= 1
course_overview.save()
course_mode = CourseModeFactory.create(course_id=course_overview.id)
assert CourseMode.objects.filter(pk=course_mode.pk).exists()
CourseOverview.get_from_id(course.id)
assert CourseMode.objects.filter(pk=course_mode.pk).exists()
class TestDisplayPrices(ModuleStoreTestCase):
@override_settings(PAID_COURSE_REGISTRATION_CURRENCY=["USD", "$"])
def test_get_cosmetic_display_price(self):

View File

@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2020-01-15 20:22
from __future__ import unicode_literals
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entitlements', '0013_historicalcourseentitlementsupportdetail'),
]
operations = [
migrations.AlterField(
model_name='courseentitlementsupportdetail',
name='unenrolled_run',
field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, to='course_overviews.CourseOverview'),
),
]

View File

@@ -499,7 +499,7 @@ class CourseEntitlementSupportDetail(TimeStampedModel):
null=True,
blank=True,
db_constraint=False,
on_delete=models.CASCADE,
on_delete=models.DO_NOTHING,
)
history = HistoricalRecords()

View File

@@ -321,9 +321,8 @@ class CourseOverview(TimeStampedModel):
try:
course_overview = cls.objects.select_related('image_set').get(id=course_id)
if course_overview.version < cls.VERSION:
# Throw away old versions of CourseOverview, as they might contain stale data.
course_overview.delete()
course_overview = None
# Reload the overview from the modulestore to update the version
course_overview = cls.load_from_module_store(course_id)
except cls.DoesNotExist:
course_overview = None