diff --git a/lms/djangoapps/discussion/tests/test_signals.py b/lms/djangoapps/discussion/tests/test_signals.py index f30a422e0a..e303bc11c9 100644 --- a/lms/djangoapps/discussion/tests/test_signals.py +++ b/lms/djangoapps/discussion/tests/test_signals.py @@ -28,7 +28,9 @@ class SendMessageHandlerTestCase(TestCase): @mock.patch('lms.djangoapps.discussion.signals.handlers.send_message') def test_comment_created_signal_sends_message(self, mock_send_message, mock_get_current_site): site_config = SiteConfigurationFactory.create(site=self.site) - site_config.values[ENABLE_FORUM_NOTIFICATIONS_FOR_SITE_KEY] = True + enable_notifications_cfg = {ENABLE_FORUM_NOTIFICATIONS_FOR_SITE_KEY: True} + site_config.site_values = enable_notifications_cfg + site_config.values = enable_notifications_cfg site_config.save() mock_get_current_site.return_value = self.site signals.comment_created.send(sender=self.sender, user=self.user, post=self.post) @@ -56,7 +58,9 @@ class SendMessageHandlerTestCase(TestCase): self, mock_send_message, mock_get_current_site ): site_config = SiteConfigurationFactory.create(site=self.site) - site_config.values[ENABLE_FORUM_NOTIFICATIONS_FOR_SITE_KEY] = False + enable_notifications_cfg = {ENABLE_FORUM_NOTIFICATIONS_FOR_SITE_KEY: False} + site_config.site_values = enable_notifications_cfg + site_config.values = enable_notifications_cfg site_config.save() mock_get_current_site.return_value = self.site signals.comment_created.send(sender=self.sender, user=self.user, post=self.post) diff --git a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py index f3ee5954e5..52deefd82f 100644 --- a/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py +++ b/lms/djangoapps/instructor/tests/views/test_instructor_dashboard.py @@ -168,7 +168,12 @@ class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase, XssT "ENABLE_MANUAL_ENROLLMENT_REASON_FIELD": enbale_reason_field } site = Site.objects.first() - SiteConfiguration.objects.create(site=site, values=configuration_values, enabled=True) + SiteConfiguration.objects.create( + site=site, + site_values=configuration_values, + values=configuration_values, + enabled=True + ) url = reverse( 'instructor_dashboard', @@ -196,7 +201,12 @@ class TestInstructorDashboard(ModuleStoreTestCase, LoginEnrollmentTestCase, XssT ] } site = Site.objects.first() - SiteConfiguration.objects.create(site=site, values=configuration_values, enabled=True) + SiteConfiguration.objects.create( + site=site, + site_values=configuration_values, + values=configuration_values, + enabled=True + ) url = reverse( 'instructor_dashboard', kwargs={ diff --git a/openedx/core/djangoapps/ace_common/tests/test_tracking.py b/openedx/core/djangoapps/ace_common/tests/test_tracking.py index 85f71eaf94..1412acf252 100644 --- a/openedx/core/djangoapps/ace_common/tests/test_tracking.py +++ b/openedx/core/djangoapps/ace_common/tests/test_tracking.py @@ -122,6 +122,9 @@ class TestGoogleAnalyticsTrackingPixel(QueryStringAssertionMixin, CacheIsolation @override_settings(GOOGLE_ANALYTICS_TRACKING_ID='UA-123456-1') def test_site_config_override(self): site_config = SiteConfigurationFactory.create( + site_values=dict( + GOOGLE_ANALYTICS_ACCOUNT='UA-654321-1' + ), values=dict( GOOGLE_ANALYTICS_ACCOUNT='UA-654321-1' ) diff --git a/openedx/core/djangoapps/catalog/views.py b/openedx/core/djangoapps/catalog/views.py index ecc1fd381f..41874667c1 100644 --- a/openedx/core/djangoapps/catalog/views.py +++ b/openedx/core/djangoapps/catalog/views.py @@ -27,6 +27,7 @@ def cache_programs(request): SiteConfiguration.objects.create( site=request.site, enabled=True, + site_values={"COURSE_CATALOG_API_URL": "{catalog_url}/api/v1/".format(catalog_url=CATALOG_STUB_URL)}, values={"COURSE_CATALOG_API_URL": "{catalog_url}/api/v1/".format(catalog_url=CATALOG_STUB_URL)} ) diff --git a/openedx/core/djangoapps/credentials/management/commands/tests/test_notify_credentials.py b/openedx/core/djangoapps/credentials/management/commands/tests/test_notify_credentials.py index a987d393e1..98c2d5e4d0 100644 --- a/openedx/core/djangoapps/credentials/management/commands/tests/test_notify_credentials.py +++ b/openedx/core/djangoapps/credentials/management/commands/tests/test_notify_credentials.py @@ -127,6 +127,7 @@ class TestNotifyCredentials(TestCase): @mock.patch(COMMAND_MODULE + '.handle_cert_change') def test_site(self, mock_grade_interesting, mock_cert_change): site_config = SiteConfigurationFactory.create( + site_values={'course_org_filter': ['testX']}, values={'course_org_filter': ['testX']}, ) diff --git a/openedx/core/djangoapps/credentials/tests/test_signals.py b/openedx/core/djangoapps/credentials/tests/test_signals.py index 0ad7d47bc4..ef2a8196d5 100644 --- a/openedx/core/djangoapps/credentials/tests/test_signals.py +++ b/openedx/core/djangoapps/credentials/tests/test_signals.py @@ -110,6 +110,7 @@ class TestCredentialsSignalsSendGrade(TestCase): def test_send_grade_records_enabled(self, _mock_is_course_run_in_a_program, mock_send_grade_to_credentials, _mock_is_learner_issuance_enabled): site_config = SiteConfigurationFactory.create( + site_values={'course_org_filter': [self.key.org]}, values={'course_org_filter': [self.key.org]}, ) diff --git a/openedx/core/djangoapps/programs/tests/test_signals.py b/openedx/core/djangoapps/programs/tests/test_signals.py index 1a524bb395..82c5299cb7 100644 --- a/openedx/core/djangoapps/programs/tests/test_signals.py +++ b/openedx/core/djangoapps/programs/tests/test_signals.py @@ -146,6 +146,7 @@ class CertChangedReceiverTest(TestCase): mock_is_learner_issuance_enabled.return_value = True site_config = SiteConfigurationFactory.create( + site_values={'course_org_filter': ['edX']}, values={'course_org_filter': ['edX']}, ) diff --git a/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py b/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py index c7651388d3..1296b87e20 100644 --- a/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py +++ b/openedx/core/djangoapps/schedules/management/commands/tests/send_email_base.py @@ -306,8 +306,14 @@ class ScheduleSendEmailTestMixin(FilteredQueryCountMixin): def test_site_config(self, this_org_list, other_org_list, expected_message_count, mock_ace): filtered_org = 'filtered_org' unfiltered_org = 'unfiltered_org' - this_config = SiteConfigurationFactory.create(values={'course_org_filter': this_org_list}) - other_config = SiteConfigurationFactory.create(values={'course_org_filter': other_org_list}) + this_config = SiteConfigurationFactory.create( + site_values={'course_org_filter': this_org_list}, + values={'course_org_filter': this_org_list} + ) + other_config = SiteConfigurationFactory.create( + site_values={'course_org_filter': other_org_list}, + values={'course_org_filter': other_org_list} + ) for config in (this_config, other_config): ScheduleConfigFactory.create(site=config.site) diff --git a/openedx/core/djangoapps/schedules/tests/test_resolvers.py b/openedx/core/djangoapps/schedules/tests/test_resolvers.py index e47458f5e8..83c801b9b1 100644 --- a/openedx/core/djangoapps/schedules/tests/test_resolvers.py +++ b/openedx/core/djangoapps/schedules/tests/test_resolvers.py @@ -88,6 +88,7 @@ class TestBinnedSchedulesBaseResolver(SchedulesResolverTestMixin, TestCase): ) def test_get_course_org_filter_exclude__in(self, course_org_filter, expected_org_list): SiteConfigurationFactory.create( + site_values={'course_org_filter': course_org_filter}, values={'course_org_filter': course_org_filter}, ) mock_query = Mock() diff --git a/openedx/core/djangoapps/site_configuration/management/commands/create_or_update_site_configuration.py b/openedx/core/djangoapps/site_configuration/management/commands/create_or_update_site_configuration.py index 7c57b10e2a..2c670b513f 100644 --- a/openedx/core/djangoapps/site_configuration/management/commands/create_or_update_site_configuration.py +++ b/openedx/core/djangoapps/site_configuration/management/commands/create_or_update_site_configuration.py @@ -107,6 +107,10 @@ class Command(BaseCommand): site_configuration.values.update(site_configuration_values) else: site_configuration.values = site_configuration_values + if site_configuration.site_values: + site_configuration.site_values.update(site_configuration_values) + else: + site_configuration.site_values = site_configuration_values if enabled is not None: site_configuration.enabled = enabled diff --git a/openedx/core/djangoapps/site_configuration/migrations/0003_add_site_values_field.py b/openedx/core/djangoapps/site_configuration/migrations/0003_add_site_values_field.py new file mode 100644 index 0000000000..e9750d6868 --- /dev/null +++ b/openedx/core/djangoapps/site_configuration/migrations/0003_add_site_values_field.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-01-02 22:05 +from __future__ import unicode_literals + +from django.db import migrations +import jsonfield.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ('site_configuration', '0002_auto_20160720_0231'), + ] + + operations = [ + migrations.AddField( + model_name='siteconfiguration', + name='site_values', + field=jsonfield.fields.JSONField(blank=True), + ), + migrations.AddField( + model_name='siteconfigurationhistory', + name='site_values', + field=jsonfield.fields.JSONField(blank=True), + ), + ] diff --git a/openedx/core/djangoapps/site_configuration/models.py b/openedx/core/djangoapps/site_configuration/models.py index fb5d885447..4286938983 100644 --- a/openedx/core/djangoapps/site_configuration/models.py +++ b/openedx/core/djangoapps/site_configuration/models.py @@ -25,12 +25,19 @@ class SiteConfiguration(models.Model): Fields: site (OneToOneField): one to one field relating each configuration to a single site - values (JSONField): json field to store configurations for a site + site_values (JSONField): json field to store configurations for a site .. no_pii: """ site = models.OneToOneField(Site, related_name='configuration', on_delete=models.CASCADE) enabled = models.BooleanField(default=False, verbose_name=u"Enabled") + site_values = JSONField( + null=False, + blank=True, + load_kwargs={'object_pairs_hook': collections.OrderedDict} + ) + # TODO: Delete this deprecated field during the later stages of the rollout + # which renames 'values' to 'site_values'. values = JSONField( null=False, blank=True, @@ -146,12 +153,19 @@ class SiteConfigurationHistory(TimeStampedModel): Fields: site (ForeignKey): foreign-key to django Site - values (JSONField): json field to store configurations for a site + site_values (JSONField): json field to store configurations for a site .. no_pii: """ site = models.ForeignKey(Site, related_name='configuration_histories', on_delete=models.CASCADE) enabled = models.BooleanField(default=False, verbose_name=u"Enabled") + site_values = JSONField( + null=False, + blank=True, + load_kwargs={'object_pairs_hook': collections.OrderedDict} + ) + # TODO: Delete this deprecated field during the later stages of the rollout + # which renames 'values' to 'site_values'. values = JSONField( null=False, blank=True, @@ -185,6 +199,7 @@ def update_site_configuration_history(sender, instance, **kwargs): # pylint: di """ SiteConfigurationHistory.objects.create( site=instance.site, + site_values=instance.values, values=instance.values, enabled=instance.enabled, ) diff --git a/openedx/core/djangoapps/site_configuration/tests/mixins.py b/openedx/core/djangoapps/site_configuration/tests/mixins.py index 6c30b747b9..95294d2891 100644 --- a/openedx/core/djangoapps/site_configuration/tests/mixins.py +++ b/openedx/core/djangoapps/site_configuration/tests/mixins.py @@ -14,33 +14,39 @@ class SiteMixin(object): super(SiteMixin, self).setUp() self.site = SiteFactory.create() + site_config = { + "SITE_NAME": self.site.domain, + "course_email_from_addr": "fake@example.com", + "course_email_template_name": "fake_email_template", + "course_org_filter": "fakeX" + } self.site_configuration = SiteConfigurationFactory.create( site=self.site, - values={ - "SITE_NAME": self.site.domain, - "course_email_from_addr": "fake@example.com", - "course_email_template_name": "fake_email_template", - "course_org_filter": "fakeX" - } + site_values=site_config, + # TODO: Remove this deprecated value eventually. + values=site_config ) self.site_other = SiteFactory.create( domain='testserver.fakeother', name='testserver.fakeother' ) + site_config_other = { + "SITE_NAME": self.site_other.domain, + "SESSION_COOKIE_DOMAIN": self.site_other.domain, + "course_org_filter": "fakeOtherX", + "ENABLE_MKTG_SITE": True, + "SHOW_ECOMMERCE_REPORTS": True, + "MKTG_URLS": { + "ROOT": "https://marketing.fakeother", + "ABOUT": "/fake-about" + } + } self.site_configuration_other = SiteConfigurationFactory.create( site=self.site_other, - values={ - "SITE_NAME": self.site_other.domain, - "SESSION_COOKIE_DOMAIN": self.site_other.domain, - "course_org_filter": "fakeOtherX", - "ENABLE_MKTG_SITE": True, - "SHOW_ECOMMERCE_REPORTS": True, - "MKTG_URLS": { - "ROOT": "https://marketing.fakeother", - "ABOUT": "/fake-about" - } - } + site_values=site_config_other, + # TODO: Remove this deprecated value eventually. + values=site_config_other ) # Initialize client with default site domain @@ -56,6 +62,8 @@ class SiteMixin(object): ) __ = SiteConfigurationFactory.create( site=site, + site_values=site_configuration_values, + # TODO: Remove this deprecated value eventually. values=site_configuration_values ) self.use_site(site) diff --git a/openedx/core/djangoapps/site_configuration/tests/test_middleware.py b/openedx/core/djangoapps/site_configuration/tests/test_middleware.py index 890c6453c2..c66ec84114 100644 --- a/openedx/core/djangoapps/site_configuration/tests/test_middleware.py +++ b/openedx/core/djangoapps/site_configuration/tests/test_middleware.py @@ -41,6 +41,9 @@ class SessionCookieDomainTests(TestCase): ) self.site_configuration = SiteConfigurationFactory.create( site=self.site, + site_values={ + "SESSION_COOKIE_DOMAIN": self.site.domain, + }, values={ "SESSION_COOKIE_DOMAIN": self.site.domain, } @@ -76,6 +79,9 @@ class SessionCookieDomainSiteConfigurationOverrideTests(TestCase): ) self.site_configuration = SiteConfigurationFactory.create( site=self.site, + site_values={ + "SESSION_COOKIE_DOMAIN": self.site.domain, + }, values={ "SESSION_COOKIE_DOMAIN": self.site.domain, } diff --git a/openedx/core/djangoapps/site_configuration/tests/test_models.py b/openedx/core/djangoapps/site_configuration/tests/test_models.py index 0200c58812..4b69d57f58 100644 --- a/openedx/core/djangoapps/site_configuration/tests/test_models.py +++ b/openedx/core/djangoapps/site_configuration/tests/test_models.py @@ -82,6 +82,8 @@ class SiteConfigurationTests(TestCase): site=self.site, ) + site_configuration.site_values = {'test': 'test'} + # TODO: Remove this deprecated value eventually. site_configuration.values = {'test': 'test'} site_configuration.save() @@ -131,6 +133,8 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database site_configuration = SiteConfigurationFactory.create( site=self.site, + site_values=self.test_config1, + # TODO: Remove this deprecated value eventually. values=self.test_config1, ) @@ -179,6 +183,8 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database site_configuration = SiteConfigurationFactory.create( site=self.site, + site_values=invalid_data, + # TODO: Remove this deprecated value eventually. values=invalid_data, ) @@ -200,10 +206,14 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database SiteConfigurationFactory.create( site=self.site, + site_values=self.test_config1, + # TODO: Remove this deprecated value eventually. values=self.test_config1, ) SiteConfigurationFactory.create( site=self.site2, + site_values=self.test_config2, + # TODO: Remove this deprecated value eventually. values=self.test_config2, ) @@ -285,10 +295,14 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database config1 = SiteConfigurationFactory.create( site=self.site, + site_values=self.test_config1, + # TODO: Remove this deprecated value eventually. values=self.test_config1, ) config2 = SiteConfigurationFactory.create( site=self.site2, + site_values=self.test_config2, + # TODO: Remove this deprecated value eventually. values=self.test_config2, ) @@ -314,10 +328,14 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database SiteConfigurationFactory.create( site=self.site, + site_values=self.test_config1, + # TODO: Remove this deprecated value eventually. values=self.test_config1, ) SiteConfigurationFactory.create( site=self.site2, + site_values=self.test_config2, + # TODO: Remove this deprecated value eventually. values=self.test_config2, ) @@ -332,11 +350,15 @@ class SiteConfigurationTests(TestCase): # add SiteConfiguration to database SiteConfigurationFactory.create( site=self.site, + site_values=self.test_config1, + # TODO: Remove this deprecated value eventually. values=self.test_config1, enabled=False, ) SiteConfigurationFactory.create( site=self.site2, + site_values=self.test_config2, + # TODO: Remove this deprecated value eventually. values=self.test_config2, ) diff --git a/openedx/core/djangoapps/site_configuration/tests/test_util.py b/openedx/core/djangoapps/site_configuration/tests/test_util.py index bd6277dcc8..6c13a5fadc 100644 --- a/openedx/core/djangoapps/site_configuration/tests/test_util.py +++ b/openedx/core/djangoapps/site_configuration/tests/test_util.py @@ -29,9 +29,10 @@ def with_site_configuration(domain="test.localhost", configuration=None): site, __ = Site.objects.get_or_create(domain=domain, name=domain) site_configuration, created = SiteConfiguration.objects.get_or_create( site=site, - defaults={"enabled": True, "values": configuration}, + defaults={"enabled": True, "site_values": configuration, "values": configuration}, ) if not created: + site_configuration.site_values = configuration site_configuration.values = configuration site_configuration.save() @@ -56,9 +57,10 @@ def with_site_configuration_context(domain="test.localhost", configuration=None) site, __ = Site.objects.get_or_create(domain=domain, name=domain) site_configuration, created = SiteConfiguration.objects.get_or_create( site=site, - defaults={"enabled": True, "values": configuration}, + defaults={"enabled": True, "site_values": configuration, "values": configuration}, ) if not created: + site_configuration.site_values = configuration site_configuration.values = configuration site_configuration.save() diff --git a/openedx/core/djangoapps/theming/management/commands/create_sites_and_configurations.py b/openedx/core/djangoapps/theming/management/commands/create_sites_and_configurations.py index 148655a43e..255188c719 100644 --- a/openedx/core/djangoapps/theming/management/commands/create_sites_and_configurations.py +++ b/openedx/core/djangoapps/theming/management/commands/create_sites_and_configurations.py @@ -109,7 +109,12 @@ class Command(BaseCommand): SiteTheme.objects.create(site=site, theme_dir_name=theme_dir_name) LOG.info(u"Creating '{site_name}' SiteConfiguration".format(site_name=site_domain)) - SiteConfiguration.objects.create(site=site, values=site_configuration, enabled=True) + SiteConfiguration.objects.create( + site=site, + site_values=site_configuration, + values=site_configuration, + enabled=True + ) else: LOG.info(u"'{site_domain}' site already exists".format(site_domain=site_domain)) diff --git a/openedx/core/djangoapps/user_api/management/tests/test_sync_hubspot_contacts.py b/openedx/core/djangoapps/user_api/management/tests/test_sync_hubspot_contacts.py index 912a5e4fcf..d61bd05f48 100644 --- a/openedx/core/djangoapps/user_api/management/tests/test_sync_hubspot_contacts.py +++ b/openedx/core/djangoapps/user_api/management/tests/test_sync_hubspot_contacts.py @@ -31,6 +31,7 @@ class TestHubspotSyncCommand(TestCase): super(TestHubspotSyncCommand, cls).setUpClass() cls.site_config = SiteConfigurationFactory() cls.hubspot_site_config = SiteConfigurationFactory.create( + site_values={'HUBSPOT_API_KEY': 'test_key'}, values={'HUBSPOT_API_KEY': 'test_key'}, ) cls.users = [] diff --git a/openedx/features/content_type_gating/tests/test_models.py b/openedx/features/content_type_gating/tests/test_models.py index a13c6bf756..c6cf276bdc 100644 --- a/openedx/features/content_type_gating/tests/test_models.py +++ b/openedx/features/content_type_gating/tests/test_models.py @@ -131,8 +131,14 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): # there are no leaks of configuration across contexts non_test_course_enabled = CourseOverviewFactory.create(org='non-test-org-enabled') non_test_course_disabled = CourseOverviewFactory.create(org='non-test-org-disabled') - non_test_site_cfg_enabled = SiteConfigurationFactory.create(values={'course_org_filter': non_test_course_enabled.org}) - non_test_site_cfg_disabled = SiteConfigurationFactory.create(values={'course_org_filter': non_test_course_disabled.org}) + non_test_site_cfg_enabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_enabled.org}, + values={'course_org_filter': non_test_course_enabled.org} + ) + non_test_site_cfg_disabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_disabled.org}, + values={'course_org_filter': non_test_course_disabled.org} + ) ContentTypeGatingConfig.objects.create(course=non_test_course_enabled, enabled=True, enabled_as_of=datetime(2018, 1, 1)) ContentTypeGatingConfig.objects.create(course=non_test_course_disabled, enabled=False) @@ -143,7 +149,10 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): # Set up test objects test_course = CourseOverviewFactory.create(org='test-org') - test_site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': test_course.org}) + test_site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': test_course.org}, + values={'course_org_filter': test_course.org} + ) ContentTypeGatingConfig.objects.create(enabled=global_setting, enabled_as_of=datetime(2018, 1, 1)) ContentTypeGatingConfig.objects.create(course=test_course, enabled=course_setting, enabled_as_of=datetime(2018, 1, 1)) @@ -166,7 +175,10 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): for global_setting in (True, False, None): ContentTypeGatingConfig.objects.create(enabled=global_setting, enabled_as_of=datetime(2018, 1, 1)) for site_setting in (True, False, None): - test_site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': []}) + test_site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': []}, + values={'course_org_filter': []} + ) ContentTypeGatingConfig.objects.create(site=test_site_cfg.site, enabled=site_setting, enabled_as_of=datetime(2018, 1, 1)) for org_setting in (True, False, None): @@ -279,7 +291,10 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): def test_caching_org(self): course = CourseOverviewFactory.create(org='test-org') - site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': course.org}) + site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': course.org}, + values={'course_org_filter': course.org} + ) org_config = ContentTypeGatingConfig(org=course.org, enabled=True, enabled_as_of=datetime(2018, 1, 1)) org_config.save() @@ -324,7 +339,10 @@ class TestContentTypeGatingConfig(CacheIsolationTestCase): def test_caching_course(self): course = CourseOverviewFactory.create(org='test-org') - site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': course.org}) + site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': course.org}, + values={'course_org_filter': course.org} + ) course_config = ContentTypeGatingConfig(course=course, enabled=True, enabled_as_of=datetime(2018, 1, 1)) course_config.save() diff --git a/openedx/features/course_duration_limits/tests/test_models.py b/openedx/features/course_duration_limits/tests/test_models.py index 58078777f1..fe4865fd77 100644 --- a/openedx/features/course_duration_limits/tests/test_models.py +++ b/openedx/features/course_duration_limits/tests/test_models.py @@ -142,9 +142,11 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): non_test_course_enabled = CourseOverviewFactory.create(org='non-test-org-enabled') non_test_course_disabled = CourseOverviewFactory.create(org='non-test-org-disabled') non_test_site_cfg_enabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_enabled.org}, values={'course_org_filter': non_test_course_enabled.org} ) non_test_site_cfg_disabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_disabled.org}, values={'course_org_filter': non_test_course_disabled.org} ) @@ -157,7 +159,10 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): # Set up test objects test_course = CourseOverviewFactory.create(org='test-org') - test_site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': test_course.org}) + test_site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': test_course.org}, + values={'course_org_filter': test_course.org} + ) if reverse_order: CourseDurationLimitConfig.objects.create(site=test_site_cfg.site, enabled=site_setting) @@ -185,7 +190,10 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): for global_setting in (True, False, None): CourseDurationLimitConfig.objects.create(enabled=global_setting, enabled_as_of=datetime(2018, 1, 1)) for site_setting in (True, False, None): - test_site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': []}) + test_site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': []}, + values={'course_org_filter': []} + ) CourseDurationLimitConfig.objects.create( site=test_site_cfg.site, enabled=site_setting, enabled_as_of=datetime(2018, 1, 1) ) @@ -301,7 +309,10 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): def test_caching_org(self): course = CourseOverviewFactory.create(org='test-org') - site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': course.org}) + site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': course.org}, + values={'course_org_filter': course.org} + ) org_config = CourseDurationLimitConfig(org=course.org, enabled=True, enabled_as_of=datetime(2018, 1, 1)) org_config.save() @@ -346,7 +357,10 @@ class TestCourseDurationLimitConfig(CacheIsolationTestCase): def test_caching_course(self): course = CourseOverviewFactory.create(org='test-org') - site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': course.org}) + site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': course.org}, + values={'course_org_filter': course.org} + ) course_config = CourseDurationLimitConfig(course=course, enabled=True, enabled_as_of=datetime(2018, 1, 1)) course_config.save() diff --git a/openedx/features/discounts/tests/test_discount_restriction_models.py b/openedx/features/discounts/tests/test_discount_restriction_models.py index 60343d052a..1de2ca7c72 100644 --- a/openedx/features/discounts/tests/test_discount_restriction_models.py +++ b/openedx/features/discounts/tests/test_discount_restriction_models.py @@ -59,9 +59,11 @@ class TestDiscountRestrictionConfig(CacheIsolationTestCase): non_test_course_disabled = CourseOverviewFactory.create(org='non-test-org-disabled') non_test_course_enabled = CourseOverviewFactory.create(org='non-test-org-enabled') non_test_site_cfg_disabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_disabled.org}, values={'course_org_filter': non_test_course_disabled.org} ) non_test_site_cfg_enabled = SiteConfigurationFactory.create( + site_values={'course_org_filter': non_test_course_enabled.org}, values={'course_org_filter': non_test_course_enabled.org} ) @@ -74,7 +76,10 @@ class TestDiscountRestrictionConfig(CacheIsolationTestCase): # Set up test objects test_course = CourseOverviewFactory.create(org='test-org') - test_site_cfg = SiteConfigurationFactory.create(values={'course_org_filter': test_course.org}) + test_site_cfg = SiteConfigurationFactory.create( + site_values={'course_org_filter': test_course.org}, + values={'course_org_filter': test_course.org} + ) DiscountRestrictionConfig.objects.create(disabled=global_setting) DiscountRestrictionConfig.objects.create(course=test_course, disabled=course_setting)