Merge pull request #19220 from edx/Educator-3660-add-waffle-disable-quality

Add waffle flag to disable quality for course-v1:HarvardX+SW12.1x+2016
This commit is contained in:
AsadAzam
2018-11-12 13:11:49 +05:00
committed by GitHub

View File

@@ -8,6 +8,9 @@ from rest_framework.response import Response
from contentstore.views.item import highlights_setting
from edxval.api import get_videos_for_course
from openedx.core.djangoapps.waffle_utils import (
CourseWaffleFlag, WaffleFlagNamespace
)
from openedx.core.lib.cache_utils import request_cached
from openedx.core.lib.api.view_utils import DeveloperErrorViewMixin, view_auth_classes
from openedx.core.lib.graph_traversals import traverse_pre_order
@@ -17,6 +20,13 @@ from .utils import get_bool_param, course_author_access_required
log = logging.getLogger(__name__)
WAFFLE_FLAG_NAMESPACE = WaffleFlagNamespace(name=u'checklist')
DISABLE_COURSE_CHECKLIST_QUALITY = CourseWaffleFlag(
waffle_namespace=WAFFLE_FLAG_NAMESPACE,
flag_name=u'course_checklist',
flag_undefined_default=False
)
@view_auth_classes()
class CourseQualityView(DeveloperErrorViewMixin, GenericAPIView):
@@ -82,14 +92,17 @@ class CourseQualityView(DeveloperErrorViewMixin, GenericAPIView):
"""
Returns validation information for the given course.
"""
def _execute_method_and_log_time(func, *args):
def _execute_method_and_log_time(log_time, func, *args):
"""
Call func passed in method with logging the time it took to complete.
Logging is temporary, we will remove this once we get required information.
"""
start_time = time.time()
output = func(*args)
log.info('[%s] completed in [%f]', func.__name__, (time.time() - start_time))
if log_time:
start_time = time.time()
output = func(*args)
log.info('[%s] completed in [%f]', func.__name__, (time.time() - start_time))
else:
output = func(*args)
return output
all_requested = get_bool_param(request, 'all', False)
@@ -98,46 +111,29 @@ class CourseQualityView(DeveloperErrorViewMixin, GenericAPIView):
with store.bulk_operations(course_key):
course = store.get_course(course_key, depth=self._required_course_depth(request, all_requested))
# Added for EDUCATOR-3660
course_key_harward = True if course_key == 'course-v1:HarvardX+SW12.1x+2016' else False
course_key_harvard = str(course_key) == 'course-v1:HarvardX+SW12.1x+2016'
response = dict(
is_self_paced=course.self_paced,
)
if get_bool_param(request, 'sections', all_requested):
if course_key_harward:
if not DISABLE_COURSE_CHECKLIST_QUALITY.is_enabled(course_key):
if get_bool_param(request, 'sections', all_requested):
response.update(
sections=_execute_method_and_log_time(self._sections_quality, course)
sections=_execute_method_and_log_time(course_key_harvard, self._sections_quality, course)
)
else:
if get_bool_param(request, 'subsections', all_requested):
response.update(
sections=self._sections_quality(course)
subsections=_execute_method_and_log_time(
course_key_harvard, self._subsections_quality, course, request
)
)
if get_bool_param(request, 'subsections', all_requested):
if course_key_harward:
if get_bool_param(request, 'units', all_requested):
response.update(
subsections=_execute_method_and_log_time(self._subsections_quality, course, request)
units=_execute_method_and_log_time(course_key_harvard, self._units_quality, course, request)
)
else:
if get_bool_param(request, 'videos', all_requested):
response.update(
subsections=self._subsections_quality(course, request)
)
if get_bool_param(request, 'units', all_requested):
if course_key_harward:
response.update(
units=_execute_method_and_log_time(self._units_quality, course, request)
)
else:
response.update(
units=self._units_quality(course, request)
)
if get_bool_param(request, 'videos', all_requested):
if course_key_harward:
response.update(
videos=_execute_method_and_log_time(self._videos_quality, course)
)
else:
response.update(
videos=self._videos_quality(course)
videos=_execute_method_and_log_time(course_key_harvard, self._videos_quality, course)
)
return Response(response)