From a153092cb57d0e0a60ca292c8ca911f4e61441cc Mon Sep 17 00:00:00 2001 From: Tim Babych Date: Fri, 27 Jun 2014 17:25:21 +0300 Subject: [PATCH] Add FEATURE['ENABLE_GROUP_CONFIGURATIONS'] and os.environ['FEATURE_GROUP_CONFIGURATIONS']. --- cms/djangoapps/contentstore/views/tests/test_item.py | 3 +++ cms/envs/common.py | 4 ++++ cms/templates/settings.html | 3 +-- cms/templates/settings_advanced.html | 5 ++--- cms/templates/settings_graders.html | 5 ++--- cms/templates/widgets/header.html | 5 ++--- cms/urls.py | 5 ++++- common/test/acceptance/tests/test_studio_split_test.py | 5 ++++- 8 files changed, 22 insertions(+), 13 deletions(-) diff --git a/cms/djangoapps/contentstore/views/tests/test_item.py b/cms/djangoapps/contentstore/views/tests/test_item.py index 4c4e2134ab..d25ddc3684 100644 --- a/cms/djangoapps/contentstore/views/tests/test_item.py +++ b/cms/djangoapps/contentstore/views/tests/test_item.py @@ -6,8 +6,10 @@ import ddt from mock import patch from pytz import UTC +from unittest import skipUnless from webob import Response +from django.conf import settings from django.http import Http404 from django.test import TestCase from django.test.client import RequestFactory @@ -773,6 +775,7 @@ class TestEditItem(ItemTest): self.verify_publish_state(html_usage_key, PublishState.draft) +@skipUnless(settings.FEATURES.get('ENABLE_GROUP_CONFIGURATIONS'), 'Tests Group Configurations feature') class TestEditSplitModule(ItemTest): """ Tests around editing instances of the split_test module. diff --git a/cms/envs/common.py b/cms/envs/common.py index 7cfa0c31fa..4bd842da47 100644 --- a/cms/envs/common.py +++ b/cms/envs/common.py @@ -25,6 +25,7 @@ Longer TODO: # pylint: disable=W0401, W0611, W0614 import imp +import os import sys import lms.envs.common # Although this module itself may not use these imported variables, other dependent modules may. @@ -101,6 +102,9 @@ FEATURES = { # Turn off Advanced Security by default 'ADVANCED_SECURITY': False, + + # Toggles Group Configuration editing functionality + 'ENABLE_GROUP_CONFIGURATIONS': os.environ.get('FEATURE_GROUP_CONFIGURATIONS'), } ENABLE_JASMINE = False diff --git a/cms/templates/settings.html b/cms/templates/settings.html index 631e20e86c..2524507327 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -309,7 +309,6 @@ require(["domReady!", "jquery", "js/models/settings/course_details", "js/views/s course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) grading_config_url = utils.reverse_course_url('grading_handler', context_course.id) advanced_config_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - group_configurations_config_url = utils.reverse_course_url('group_configurations_list_handler', context_course.id) %>

${_("Other Course Settings")}

diff --git a/cms/templates/settings_advanced.html b/cms/templates/settings_advanced.html index 9bfb60d97f..3f0a7cfa24 100644 --- a/cms/templates/settings_advanced.html +++ b/cms/templates/settings_advanced.html @@ -118,7 +118,6 @@ require(["domReady!", "jquery", "gettext", "js/models/settings/advanced", "js/vi details_url = utils.reverse_course_url('settings_handler', context_course.id) grading_url = utils.reverse_course_url('grading_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) - group_configurations_config_url = utils.reverse_course_url('group_configurations_list_handler', context_course.id) %>

${_("Other Course Settings")}

diff --git a/cms/templates/settings_graders.html b/cms/templates/settings_graders.html index 1a82d88e67..506bedbe69 100644 --- a/cms/templates/settings_graders.html +++ b/cms/templates/settings_graders.html @@ -141,7 +141,6 @@ require(["domReady!", "jquery", "js/views/settings/grading", "js/models/settings detailed_settings_url = utils.reverse_course_url('settings_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) advanced_settings_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - group_configurations_config_url = utils.reverse_course_url('group_configurations_list_handler', context_course.id) %>

${_("Other Course Settings")}

diff --git a/cms/templates/widgets/header.html b/cms/templates/widgets/header.html index d66087e794..1b6a6fff0d 100644 --- a/cms/templates/widgets/header.html +++ b/cms/templates/widgets/header.html @@ -27,7 +27,6 @@ settings_url = reverse('contentstore.views.settings_handler', kwargs={'course_key_string': unicode(course_key)}) grading_url = reverse('contentstore.views.grading_handler', kwargs={'course_key_string': unicode(course_key)}) advanced_settings_url = reverse('contentstore.views.advanced_settings_handler', kwargs={'course_key_string': unicode(course_key)}) - group_configurations_config_url = reverse('contentstore.views.group_configurations_list_handler', kwargs={'course_key_string': unicode(course_key)}) tabs_url = reverse('contentstore.views.tabs_handler', kwargs={'course_key_string': unicode(course_key)}) %>

@@ -85,9 +84,9 @@ - % if "split_test" in context_course.advanced_modules: + % if settings.FEATURES.get('ENABLE_GROUP_CONFIGURATIONS') and "split_test" in context_course.advanced_modules: % endif diff --git a/cms/urls.py b/cms/urls.py index f1bc4828fc..55be74e4cf 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -90,9 +90,12 @@ urlpatterns += patterns( url(r'^settings/advanced/(?P[^/]+)$', 'advanced_settings_handler'), url(r'^textbooks/(?P[^/]+)$', 'textbooks_list_handler'), url(r'^textbooks/(?P[^/]+)/(?P\d[^/]*)$', 'textbooks_detail_handler'), - url(r'^group_configurations/(?P[^/]+)$', 'group_configurations_list_handler'), ) +if settings.FEATURES.get('ENABLE_GROUP_CONFIGURATIONS'): + urlpatterns += (url(r'^group_configurations/(?P[^/]+)$', + 'contentstore.views.group_configurations_list_handler'),) + js_info_dict = { 'domain': 'djangojs', # We need to explicitly include external Django apps that are not in LOCALE_PATHS. diff --git a/common/test/acceptance/tests/test_studio_split_test.py b/common/test/acceptance/tests/test_studio_split_test.py index 0ed671b2e6..1edea80928 100644 --- a/common/test/acceptance/tests/test_studio_split_test.py +++ b/common/test/acceptance/tests/test_studio_split_test.py @@ -3,7 +3,8 @@ Acceptance tests for Studio related to the split_test module. """ import json -from unittest import skip +import os +from unittest import skip, skipUnless from ..fixtures.course import CourseFixture, XBlockFixtureDesc @@ -162,6 +163,7 @@ class SplitTest(ContainerBase): self.verify_groups(container, ['alpha'], [], verify_missing_groups_not_present=False) +@skipUnless(os.environ.get('FEATURE_GROUP_CONFIGURATIONS'), 'Tests Group Configurations feature') class SettingsMenuTest(UniqueCourseTest): """ Tests that Setting menu is rendered correctly in Studio @@ -222,6 +224,7 @@ class SettingsMenuTest(UniqueCourseTest): self.assertFalse(self.advanced_settings.q(css=link_css).present) +@skipUnless(os.environ.get('FEATURE_GROUP_CONFIGURATIONS'), 'Tests Group Configurations feature') class GroupConfigurationsTest(UniqueCourseTest): """ Tests that Group Configurations page works correctly with previously