From 4088ac54280aa5c28f4a777269ff375a9b515887 Mon Sep 17 00:00:00 2001 From: Calen Pennington Date: Wed, 5 Sep 2012 15:16:40 -0400 Subject: [PATCH] Isolate manual git reload behind a feature flag --- lms/djangoapps/instructor/views.py | 53 ++++++++++--------- lms/envs/common.py | 1 + lms/envs/dev.py | 1 + .../courseware/instructor_dashboard.html | 2 +- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/lms/djangoapps/instructor/views.py b/lms/djangoapps/instructor/views.py index 0c36236021..47ae88510c 100644 --- a/lms/djangoapps/instructor/views.py +++ b/lms/djangoapps/instructor/views.py @@ -88,34 +88,35 @@ def instructor_dashboard(request, course_id): # process actions from form POST action = request.POST.get('action', '') - if 'GIT pull' in action: - data_dir = course.metadata['data_dir'] - log.debug('git pull %s' % (data_dir)) - gdir = settings.DATA_DIR / data_dir - if not os.path.exists(gdir): - msg += "====> ERROR in gitreload - no such directory %s" % gdir - else: - cmd = "cd %s; git reset --hard HEAD; git clean -f -d; git pull origin; chmod g+w course.xml" % gdir - msg += "git pull on %s:

" % data_dir - msg += "

%s

" % escape(os.popen(cmd).read()) - track.views.server_track(request, 'git pull %s' % data_dir, {}, page='idashboard') - - if 'Reload course' in action: - log.debug('reloading %s (%s)' % (course_id, course)) - try: + if settings.MITX_FEATURES['ENABLE_MANUAL_GIT_RELOAD']: + if 'GIT pull' in action: data_dir = course.metadata['data_dir'] - modulestore().try_load_course(data_dir) - msg += "

Course reloaded from %s

" % data_dir - track.views.server_track(request, 'reload %s' % data_dir, {}, page='idashboard') - course_errors = modulestore().get_item_errors(course.location) - msg += '' - except Exception as err: - msg += '

Error: %s

' % escape(err) + log.debug('git pull %s' % (data_dir)) + gdir = settings.DATA_DIR / data_dir + if not os.path.exists(gdir): + msg += "====> ERROR in gitreload - no such directory %s" % gdir + else: + cmd = "cd %s; git reset --hard HEAD; git clean -f -d; git pull origin; chmod g+w course.xml" % gdir + msg += "git pull on %s:

" % data_dir + msg += "

%s

" % escape(os.popen(cmd).read()) + track.views.server_track(request, 'git pull %s' % data_dir, {}, page='idashboard') - elif action == 'Dump list of enrolled students': + if 'Reload course' in action: + log.debug('reloading %s (%s)' % (course_id, course)) + try: + data_dir = course.metadata['data_dir'] + modulestore().try_load_course(data_dir) + msg += "

Course reloaded from %s

" % data_dir + track.views.server_track(request, 'reload %s' % data_dir, {}, page='idashboard') + course_errors = modulestore().get_item_errors(course.location) + msg += '' + except Exception as err: + msg += '

Error: %s

' % escape(err) + + if action == 'Dump list of enrolled students': log.debug(action) datatable = get_student_grade_summary_data(request, course, course_id, get_grades=False) datatable['title'] = 'List of students enrolled in %s' % course_id diff --git a/lms/envs/common.py b/lms/envs/common.py index 089c4618e8..55fa5b457c 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -73,6 +73,7 @@ MITX_FEATURES = { 'ENABLE_SQL_TRACKING_LOGS': False, 'ENABLE_LMS_MIGRATION': False, + 'ENABLE_MANUAL_GIT_RELOAD': False, 'DISABLE_LOGIN_BUTTON': False, # used in systems where login is automatic, eg MIT SSL diff --git a/lms/envs/dev.py b/lms/envs/dev.py index 0427938b70..4c13c4ce11 100644 --- a/lms/envs/dev.py +++ b/lms/envs/dev.py @@ -18,6 +18,7 @@ MITX_FEATURES['ENABLE_SQL_TRACKING_LOGS'] = True MITX_FEATURES['SUBDOMAIN_COURSE_LISTINGS'] = False # Enable to test subdomains--otherwise, want all courses to show up MITX_FEATURES['SUBDOMAIN_BRANDING'] = True MITX_FEATURES['FORCE_UNIVERSITY_DOMAIN'] = None # show all university courses if in dev (ie don't use HTTP_HOST) +MITX_FEATURES['ENABLE_MANUAL_GIT_RELOAD'] = True WIKI_ENABLED = True diff --git a/lms/templates/courseware/instructor_dashboard.html b/lms/templates/courseware/instructor_dashboard.html index 930ec7ef88..b927302bed 100644 --- a/lms/templates/courseware/instructor_dashboard.html +++ b/lms/templates/courseware/instructor_dashboard.html @@ -71,7 +71,7 @@ table.stat_table td {
%endif -%if admin_access: +%if settings.MITX_FEATURES['ENABLE_MANUAL_GIT_RELOAD'] and admin_access: