diff --git a/lms/djangoapps/branding/tests/test_page.py b/lms/djangoapps/branding/tests/test_page.py index 5ab6ce288a..2649cbe587 100644 --- a/lms/djangoapps/branding/tests/test_page.py +++ b/lms/djangoapps/branding/tests/test_page.py @@ -140,6 +140,7 @@ class PreRequisiteCourseCatalog(ModuleStoreTestCase, LoginEnrollmentTestCase): org='edX', course='900', display_name='pre requisite course', + emit_signals=True, ) pre_requisite_courses = [unicode(pre_requisite_course.id)] @@ -155,6 +156,7 @@ class PreRequisiteCourseCatalog(ModuleStoreTestCase, LoginEnrollmentTestCase): start=datetime.datetime(2013, 1, 1), end=datetime.datetime(2030, 1, 1), pre_requisite_courses=pre_requisite_courses, + emit_signals=True, ) set_prerequisite_courses(course.id, pre_requisite_courses) @@ -180,7 +182,8 @@ class IndexPageCourseCardsSortingTests(ModuleStoreTestCase): metadata={ 'start': datetime.datetime.now(UTC) + datetime.timedelta(days=4), 'announcement': datetime.datetime.now(UTC) + datetime.timedelta(days=3), - } + }, + emit_signals=True, ) self.starting_earlier = CourseFactory.create( org='MITx', @@ -189,12 +192,14 @@ class IndexPageCourseCardsSortingTests(ModuleStoreTestCase): metadata={ 'start': datetime.datetime.now(UTC) + datetime.timedelta(days=2), 'announcement': datetime.datetime.now(UTC) + datetime.timedelta(days=1), - } + }, + emit_signals=True, ) self.course_with_default_start_date = CourseFactory.create( org='MITx', number='1002', display_name='Tech Beta Course', + emit_signals=True, ) self.factory = RequestFactory() diff --git a/lms/djangoapps/courseware/tests/test_microsites.py b/lms/djangoapps/courseware/tests/test_microsites.py index 943b68ea87..849ef224a1 100644 --- a/lms/djangoapps/courseware/tests/test_microsites.py +++ b/lms/djangoapps/courseware/tests/test_microsites.py @@ -34,7 +34,11 @@ class TestMicrosites(ModuleStoreTestCase, LoginEnrollmentTestCase): # IMPORTANT: For these tests to work, this domain must be defined via # DNS configuration (either local or published) - self.course = CourseFactory.create(display_name='Robot_Super_Course', org='TestMicrositeX') + self.course = CourseFactory.create( + display_name='Robot_Super_Course', + org='TestMicrositeX', + emit_signals=True, + ) self.chapter0 = ItemFactory.create(parent_location=self.course.location, display_name='Overview') self.chapter9 = ItemFactory.create(parent_location=self.course.location, @@ -44,13 +48,18 @@ class TestMicrosites(ModuleStoreTestCase, LoginEnrollmentTestCase): self.section9 = ItemFactory.create(parent_location=self.chapter9.location, display_name='factory_section') - self.course_outside_microsite = CourseFactory.create(display_name='Robot_Course_Outside_Microsite', org='FooX') + self.course_outside_microsite = CourseFactory.create( + display_name='Robot_Course_Outside_Microsite', + org='FooX', + emit_signals=True, + ) # have a course which explicitly sets visibility in catalog to False self.course_hidden_visibility = CourseFactory.create( display_name='Hidden_course', org='TestMicrositeX', catalog_visibility=CATALOG_VISIBILITY_NONE, + emit_signals=True, ) # have a course which explicitly sets visibility in catalog and about to true @@ -59,6 +68,7 @@ class TestMicrosites(ModuleStoreTestCase, LoginEnrollmentTestCase): org='TestMicrositeX', course="foo", catalog_visibility=CATALOG_VISIBILITY_CATALOG_AND_ABOUT, + emit_signals=True, ) def setup_users(self): diff --git a/openedx/core/djangoapps/content/course_overviews/management/commands/generate_course_overview.py b/openedx/core/djangoapps/content/course_overviews/management/commands/generate_course_overview.py index 04cfd5e4ea..fb9de7ff57 100644 --- a/openedx/core/djangoapps/content/course_overviews/management/commands/generate_course_overview.py +++ b/openedx/core/djangoapps/content/course_overviews/management/commands/generate_course_overview.py @@ -33,12 +33,10 @@ class Command(BaseCommand): def handle(self, *args, **options): + course_keys = [] if options['all']: - # Have CourseOverview generate course overviews for all - # the courses in the system. - CourseOverview.get_all_courses(force_reseeding=True) + course_keys = [course.id for course in modulestore().get_courses()] else: - course_keys = [] if len(args) < 1: raise CommandError('At least one course or --all must be specified.') try: @@ -49,4 +47,4 @@ class Command(BaseCommand): if not course_keys: log.fatal('No courses specified.') - CourseOverview.get_select_courses(course_keys) + CourseOverview.get_select_courses(course_keys) diff --git a/openedx/core/djangoapps/content/course_overviews/migrations/0005_delete_courseoverviewgeneratedhistory.py b/openedx/core/djangoapps/content/course_overviews/migrations/0005_delete_courseoverviewgeneratedhistory.py new file mode 100644 index 0000000000..9470145e9c --- /dev/null +++ b/openedx/core/djangoapps/content/course_overviews/migrations/0005_delete_courseoverviewgeneratedhistory.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('course_overviews', '0004_courseoverview_org'), + ] + + operations = [ + migrations.DeleteModel( + name='CourseOverviewGeneratedHistory', + ), + ] diff --git a/openedx/core/djangoapps/content/course_overviews/models.py b/openedx/core/djangoapps/content/course_overviews/models.py index e018df6bdb..a7aeff9b8e 100644 --- a/openedx/core/djangoapps/content/course_overviews/models.py +++ b/openedx/core/djangoapps/content/course_overviews/models.py @@ -447,45 +447,20 @@ class CourseOverview(TimeStampedModel): return course_overviews @classmethod - def get_all_courses(cls, force_reseeding=False, org=None): + def get_all_courses(cls, org=None): """ Returns all CourseOverview objects in the database. Arguments: - force_reseeding (bool): Optional parameter. - - If True, the modulestore is used as the source of truth for - the list of courses, even if the CourseOverview table was - previously seeded. However, only non-existing CourseOverview - entries or those with older data model versions or will get - populated. - - If False, the list of courses is retrieved from the - CourseOverview table if it was previously seeded, falling - back to the modulestore if it wasn't seeded. - org (string): Optional parameter that allows filtering by organization. """ - if force_reseeding or not CourseOverviewGeneratedHistory.objects.first(): - # Seed the CourseOverview table with data for all - # courses in the system. - course_keys = [course.id for course in modulestore().get_courses()] - course_overviews = cls.get_select_courses(course_keys) - num_courses = len(course_overviews) - CourseOverviewGeneratedHistory.objects.create(num_courses=num_courses) - if org: - course_overviews = [c for c in course_overviews if c.org == org] - - else: - # Note: If a newly created course is not returned in this QueryList, - # make sure the "publish" signal was emitted when the course was - # created. For tests using CourseFactory, use emit_signals=True. - # Or pass True for force_reseeding. - course_overviews = CourseOverview.objects.all() - if org: - course_overviews = course_overviews.filter(org=org) - + # Note: If a newly created course is not returned in this QueryList, + # make sure the "publish" signal was emitted when the course was + # created. For tests using CourseFactory, use emit_signals=True. + course_overviews = CourseOverview.objects.all() + if org: + course_overviews = course_overviews.filter(org=org) return course_overviews @classmethod @@ -516,14 +491,3 @@ class CourseOverviewTab(models.Model): """ tab_id = models.CharField(max_length=50) course_overview = models.ForeignKey(CourseOverview, db_index=True, related_name="tabs") - - -class CourseOverviewGeneratedHistory(TimeStampedModel): - """ - Model for keeping track of when CourseOverview Models are - generated/seeded. - """ - num_courses = IntegerField(null=True) - - def __unicode__(self): - return self.num_courses diff --git a/openedx/core/djangoapps/content/course_overviews/tests.py b/openedx/core/djangoapps/content/course_overviews/tests.py index 25a03bb5b5..286371ddb9 100644 --- a/openedx/core/djangoapps/content/course_overviews/tests.py +++ b/openedx/core/djangoapps/content/course_overviews/tests.py @@ -450,7 +450,7 @@ class CourseOverviewTestCase(ModuleStoreTestCase): ) def test_get_all_courses(self): - course_ids = [CourseFactory.create().id for __ in range(3)] + course_ids = [CourseFactory.create(emit_signals=True).id for __ in range(3)] self.assertSetEqual( {course_overview.id for course_overview in CourseOverview.get_all_courses()}, set(course_ids), @@ -462,22 +462,14 @@ class CourseOverviewTestCase(ModuleStoreTestCase): CourseOverview.get_all_courses() self.assertFalse(mock_get_from_id.called) - CourseOverview.get_all_courses(force_reseeding=True) - self.assertTrue(mock_get_from_id.called) - def test_get_all_courses_by_org(self): org_courses = [] # list of lists of courses for index in range(2): org_courses.append([ - CourseFactory.create(org='test_org_' + unicode(index)) + CourseFactory.create(org='test_org_' + unicode(index), emit_signals=True) for __ in range(3) ]) - self.assertSetEqual( - {c.id for c in CourseOverview.get_all_courses(org='test_org_0', force_reseeding=True)}, - {c.id for c in org_courses[0]}, - ) - self.assertSetEqual( {c.id for c in CourseOverview.get_all_courses(org='test_org_1')}, {c.id for c in org_courses[1]},