From aec8fcd5599d678537979df94ac3c25b6625beeb Mon Sep 17 00:00:00 2001 From: Ahtisham Shahid Date: Tue, 5 Sep 2023 15:44:10 +0500 Subject: [PATCH] fix: use disabled as default for posting_restrictions (#33159) --- .../discussion/rest_api/tests/test_api.py | 6 ++++- .../discussion/rest_api/tests/test_utils.py | 5 +++- .../migrations/0018_auto_20230904_1054.py | 23 +++++++++++++++++++ openedx/core/djangoapps/discussions/models.py | 4 ++-- .../discussions/tests/test_models.py | 10 ++++---- 5 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 openedx/core/djangoapps/discussions/migrations/0018_auto_20230904_1054.py diff --git a/lms/djangoapps/discussion/rest_api/tests/test_api.py b/lms/djangoapps/discussion/rest_api/tests/test_api.py index 5b8c39ae73..e99f95b834 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_api.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_api.py @@ -71,7 +71,8 @@ from lms.djangoapps.discussion.rest_api.tests.utils import ( ) from openedx.core.djangoapps.course_groups.models import CourseUserGroupPartitionGroup from openedx.core.djangoapps.course_groups.tests.helpers import CohortFactory -from openedx.core.djangoapps.discussions.models import DiscussionsConfiguration, DiscussionTopicLink, Provider +from openedx.core.djangoapps.discussions.models import DiscussionsConfiguration, DiscussionTopicLink, Provider, \ + PostingRestriction from openedx.core.djangoapps.discussions.tasks import update_discussions_settings_from_course_task from openedx.core.djangoapps.django_comment_common.models import ( FORUM_ROLE_ADMINISTRATOR, @@ -151,6 +152,9 @@ def _set_course_discussion_blackout(course, user_id): datetime.now(UTC) - timedelta(days=3), datetime.now(UTC) + timedelta(days=3) ] + configuration = DiscussionsConfiguration.get(course.id) + configuration.posting_restrictions = PostingRestriction.SCHEDULED + configuration.save() modulestore().update_item(course, user_id) diff --git a/lms/djangoapps/discussion/rest_api/tests/test_utils.py b/lms/djangoapps/discussion/rest_api/tests/test_utils.py index ef02b474cd..b6c08c5094 100644 --- a/lms/djangoapps/discussion/rest_api/tests/test_utils.py +++ b/lms/djangoapps/discussion/rest_api/tests/test_utils.py @@ -13,7 +13,7 @@ import unittest from common.djangoapps.student.roles import CourseStaffRole, CourseInstructorRole from lms.djangoapps.discussion.django_comment_client.tests.utils import ForumsEnableMixin from lms.djangoapps.discussion.rest_api.tests.utils import CommentsServiceMockMixin, ThreadMock -from openedx.core.djangoapps.discussions.models import PostingRestriction +from openedx.core.djangoapps.discussions.models import PostingRestriction, DiscussionsConfiguration from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase from xmodule.modulestore.tests.factories import CourseFactory @@ -43,6 +43,9 @@ class DiscussionAPIUtilsTestCase(ModuleStoreTestCase): self.course = CourseFactory.create() self.course.discussion_blackouts = [datetime.now(UTC) - timedelta(days=3), datetime.now(UTC) + timedelta(days=3)] + configuration = DiscussionsConfiguration.get(self.course.id) + configuration.posting_restrictions = PostingRestriction.SCHEDULED + configuration.save() self.student_role = RoleFactory(name='Student', course_id=self.course.id) self.moderator_role = RoleFactory(name='Moderator', course_id=self.course.id) self.community_ta_role = RoleFactory(name='Community TA', course_id=self.course.id) diff --git a/openedx/core/djangoapps/discussions/migrations/0018_auto_20230904_1054.py b/openedx/core/djangoapps/discussions/migrations/0018_auto_20230904_1054.py new file mode 100644 index 0000000000..cac4f69776 --- /dev/null +++ b/openedx/core/djangoapps/discussions/migrations/0018_auto_20230904_1054.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.20 on 2023-09-04 10:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('discussions', '0017_alter_historicaldiscussionsconfiguration_options'), + ] + + operations = [ + migrations.AlterField( + model_name='discussionsconfiguration', + name='posting_restrictions', + field=models.CharField(choices=[('enabled', 'Enabled'), ('disabled', 'Disabled'), ('scheduled', 'Scheduled')], default='disabled', help_text='The Posting availability in discussions whether it will be enabled, scheduled or indefinitely disabled.', max_length=15), + ), + migrations.AlterField( + model_name='historicaldiscussionsconfiguration', + name='posting_restrictions', + field=models.CharField(choices=[('enabled', 'Enabled'), ('disabled', 'Disabled'), ('scheduled', 'Scheduled')], default='disabled', help_text='The Posting availability in discussions whether it will be enabled, scheduled or indefinitely disabled.', max_length=15), + ), + ] diff --git a/openedx/core/djangoapps/discussions/models.py b/openedx/core/djangoapps/discussions/models.py index c594ef52ae..9d97c90513 100644 --- a/openedx/core/djangoapps/discussions/models.py +++ b/openedx/core/djangoapps/discussions/models.py @@ -424,10 +424,10 @@ class DiscussionsConfiguration(TimeStampedModel): ) posting_restrictions = models.CharField( max_length=15, - default=PostingRestriction.SCHEDULED, + default=PostingRestriction.DISABLED, choices=PostingRestriction.choices, help_text=_( - "The Posting availabilty in discussions whether it will be enabled, scheduled or indefinitely disabled." + "The Posting availability in discussions whether it will be enabled, scheduled or indefinitely disabled." ) ) lti_configuration = models.ForeignKey( diff --git a/openedx/core/djangoapps/discussions/tests/test_models.py b/openedx/core/djangoapps/discussions/tests/test_models.py index 4078fe223d..efa30a0b48 100644 --- a/openedx/core/djangoapps/discussions/tests/test_models.py +++ b/openedx/core/djangoapps/discussions/tests/test_models.py @@ -167,7 +167,7 @@ class DiscussionsConfigurationModelTest(TestCase): """ configuration = DiscussionsConfiguration.objects.get(context_key=self.course_key_with_defaults) assert configuration is not None - assert configuration.posting_restrictions == PostingRestriction.SCHEDULED + assert configuration.posting_restrictions == PostingRestriction.DISABLED assert configuration.enabled # by default assert configuration.lti_configuration is None assert len(configuration.plugin_configuration.keys()) == 0 @@ -192,7 +192,7 @@ class DiscussionsConfigurationModelTest(TestCase): Assert we can update an existing record """ configuration = DiscussionsConfiguration.objects.get(context_key=self.course_key_with_defaults) - configuration.posting_restrictions = PostingRestriction.SCHEDULED + configuration.posting_restrictions = PostingRestriction.DISABLED configuration.enabled = False configuration.plugin_configuration = { 'url': 'http://localhost', @@ -201,7 +201,7 @@ class DiscussionsConfigurationModelTest(TestCase): configuration.save() configuration = DiscussionsConfiguration.objects.get(context_key=self.course_key_with_defaults) assert configuration is not None - assert configuration.posting_restrictions == PostingRestriction.SCHEDULED + assert configuration.posting_restrictions == PostingRestriction.DISABLED assert not configuration.enabled assert configuration.lti_configuration is None assert configuration.plugin_configuration['url'] == 'http://localhost' @@ -240,7 +240,7 @@ class DiscussionsConfigurationModelTest(TestCase): with override_waffle_flag(ENABLE_NEW_STRUCTURE_DISCUSSIONS, active=new_structure_enabled): configuration = DiscussionsConfiguration.get(self.course_key_without_config) assert configuration is not None - assert configuration.posting_restrictions == PostingRestriction.SCHEDULED + assert configuration.posting_restrictions == PostingRestriction.DISABLED assert configuration.enabled == DEFAULT_CONFIG_ENABLED assert configuration.provider_type == default_provider_type assert not configuration.lti_configuration @@ -252,7 +252,7 @@ class DiscussionsConfigurationModelTest(TestCase): """ configuration = DiscussionsConfiguration.get(self.course_key_with_defaults) assert configuration is not None - assert configuration.posting_restrictions == PostingRestriction.SCHEDULED + assert configuration.posting_restrictions == PostingRestriction.DISABLED assert configuration.enabled assert not configuration.lti_configuration assert not configuration.plugin_configuration