From 34a96fb58d867e8279c8a88b360d7be3c783747c Mon Sep 17 00:00:00 2001 From: Farhanah Sheets Date: Fri, 2 Mar 2018 18:30:23 -0500 Subject: [PATCH] Remove NewAssets config model & create migration file --- cms/djangoapps/contentstore/admin.py | 21 +---- cms/djangoapps/contentstore/config/forms.py | 29 ------- cms/djangoapps/contentstore/config/models.py | 78 ------------------- .../0003_remove_assets_page_flag.py | 28 +++++++ 4 files changed, 29 insertions(+), 127 deletions(-) delete mode 100644 cms/djangoapps/contentstore/config/forms.py delete mode 100644 cms/djangoapps/contentstore/config/models.py create mode 100644 cms/djangoapps/contentstore/migrations/0003_remove_assets_page_flag.py diff --git a/cms/djangoapps/contentstore/admin.py b/cms/djangoapps/contentstore/admin.py index 0807e6843e..2a73566ee3 100644 --- a/cms/djangoapps/contentstore/admin.py +++ b/cms/djangoapps/contentstore/admin.py @@ -2,30 +2,11 @@ Admin site bindings for contentstore """ -from config_models.admin import ConfigurationModelAdmin, KeyedConfigurationModelAdmin +from config_models.admin import ConfigurationModelAdmin from django.contrib import admin -from contentstore.config.forms import CourseNewAssetsPageAdminForm -from contentstore.config.models import NewAssetsPageFlag, CourseNewAssetsPageFlag from contentstore.models import PushNotificationConfig, VideoUploadConfig -class CourseNewAssetsPageAdmin(KeyedConfigurationModelAdmin): - """ - Admin for enabling new asset page on a course-by-course basis. - Allows searching by course id. - """ - form = CourseNewAssetsPageAdminForm - search_fields = ['course_id'] - fieldsets = ( - (None, { - 'fields': ('course_id', 'enabled'), - 'description': 'Enter a valid course id. If it is invalid, an error message will display.' - }), - ) - -admin.site.register(NewAssetsPageFlag, ConfigurationModelAdmin) -admin.site.register(CourseNewAssetsPageFlag, CourseNewAssetsPageAdmin) - admin.site.register(VideoUploadConfig, ConfigurationModelAdmin) admin.site.register(PushNotificationConfig, ConfigurationModelAdmin) diff --git a/cms/djangoapps/contentstore/config/forms.py b/cms/djangoapps/contentstore/config/forms.py deleted file mode 100644 index f68c7441f2..0000000000 --- a/cms/djangoapps/contentstore/config/forms.py +++ /dev/null @@ -1,29 +0,0 @@ -""" -Defines a form for providing validation. -""" -import logging - -from django import forms -from opaque_keys import InvalidKeyError -from opaque_keys.edx.locator import CourseLocator -from six import text_type - -from contentstore.config.models import CourseNewAssetsPageFlag -from openedx.core.lib.courses import clean_course_id -from xmodule.modulestore.django import modulestore - -log = logging.getLogger(__name__) - - -class CourseNewAssetsPageAdminForm(forms.ModelForm): - """Input form for new asset page enablement, allowing us to verify user input.""" - - class Meta(object): - model = CourseNewAssetsPageFlag - fields = '__all__' - - def clean_course_id(self): - """ - Validate the course id - """ - return clean_course_id(self) diff --git a/cms/djangoapps/contentstore/config/models.py b/cms/djangoapps/contentstore/config/models.py deleted file mode 100644 index 7eb060866d..0000000000 --- a/cms/djangoapps/contentstore/config/models.py +++ /dev/null @@ -1,78 +0,0 @@ -""" -Models for configuration of the feature flags -controlling the new assets page. -""" -from config_models.models import ConfigurationModel -from django.db.models import BooleanField -from opaque_keys.edx.django.models import CourseKeyField -from six import text_type - - -class NewAssetsPageFlag(ConfigurationModel): - """ - Enables the in-development new assets page from studio-frontend. - - Defaults to False platform-wide, but can be overriden via a course-specific - flag. The idea is that we can use this to do a gradual rollout, and remove - the flag entirely once generally released to everyone. - """ - # this field overrides course-specific settings to enable the feature for all courses - enabled_for_all_courses = BooleanField(default=False) - - @classmethod - def feature_enabled(cls, course_id=None): - """ - Looks at the currently active configuration model to determine whether - the new assets page feature is available. - - There are 2 booleans to be concerned with - enabled_for_all_courses, - and the implicit is_enabled(). They interact in the following ways: - - is_enabled(): False, enabled_for_all_courses: True or False - - no one can use the feature. - - is_enabled(): True, enabled_for_all_courses: False - - check for a CourseNewAssetsPageFlag, use that value (default False) - - if no course_id provided, return False - - is_enabled(): True, enabled_for_all_courses: True - - everyone can use the feature - """ - if not NewAssetsPageFlag.is_enabled(): - return False - elif not NewAssetsPageFlag.current().enabled_for_all_courses: - if course_id: - effective = CourseNewAssetsPageFlag.objects.filter(course_id=course_id).order_by('-change_date').first() - return effective.enabled if effective is not None else False - else: - return False - else: - return True - - class Meta(object): - app_label = "contentstore" - - def __unicode__(self): - current_model = NewAssetsPageFlag.current() - return u"NewAssetsPageFlag: enabled {}".format( - current_model.is_enabled() - ) - - -class CourseNewAssetsPageFlag(ConfigurationModel): - """ - Enables new assets page for a specific - course. Only has an effect if the general - flag above is set to True. - """ - KEY_FIELDS = ('course_id',) - - class Meta(object): - app_label = "contentstore" - - # The course that these features are attached to. - course_id = CourseKeyField(max_length=255, db_index=True) - - def __unicode__(self): - not_en = "Not " - if self.enabled: - not_en = "" - # pylint: disable=no-member - return u"Course '{}': New assets page {}Enabled".format(text_type(self.course_id), not_en) diff --git a/cms/djangoapps/contentstore/migrations/0003_remove_assets_page_flag.py b/cms/djangoapps/contentstore/migrations/0003_remove_assets_page_flag.py new file mode 100644 index 0000000000..1131abb39a --- /dev/null +++ b/cms/djangoapps/contentstore/migrations/0003_remove_assets_page_flag.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('contentstore', '0002_add_assets_page_flag'), + ] + + operations = [ + migrations.RemoveField( + model_name='coursenewassetspageflag', + name='changed_by', + ), + migrations.RemoveField( + model_name='newassetspageflag', + name='changed_by', + ), + migrations.DeleteModel( + name='CourseNewAssetsPageFlag', + ), + migrations.DeleteModel( + name='NewAssetsPageFlag', + ), + ]