From 39c61070eda7a5118fcbaf4ddb07cdfdcd877ead Mon Sep 17 00:00:00 2001
From: ichuang
Date: Mon, 28 May 2012 11:25:12 -0400
Subject: [PATCH] new feature - load course.xml + html + problems etc from git
(see courseware.views.quickedit_git_reload)
---
djangoapps/courseware/views.py | 37 ++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/djangoapps/courseware/views.py b/djangoapps/courseware/views.py
index 4274ae830f..6aff13c33e 100644
--- a/djangoapps/courseware/views.py
+++ b/djangoapps/courseware/views.py
@@ -319,6 +319,9 @@ def quickedit(request, id=None, qetemplate='quickedit.html',coursename=None):
if not ('dogfood_id' in request.session and request.session['dogfood_id']==id):
return redirect('/')
+ if id=='course.xml':
+ return quickedit_git_reload(request)
+
# get coursename if stored
if not coursename:
coursename = multicourse_settings.get_coursename_from_request(request)
@@ -414,3 +417,37 @@ def quickedit(request, id=None, qetemplate='quickedit.html',coursename=None):
result = render_to_response(qetemplate, context)
return result
+
+def quickedit_git_reload(request):
+ '''
+ reload course.xml and all courseware files for this course, from the git repo.
+ assumes the git repo has already been setup.
+ staff only.
+ '''
+ if not request.user.is_staff:
+ return redirect('/')
+
+ # get coursename if stored
+ coursename = multicourse_settings.get_coursename_from_request(request)
+ xp = multicourse_settings.get_course_xmlpath(coursename) # path to XML for the course
+
+ msg = ""
+ if 'cancel' in request.POST:
+ return redirect("/courseware")
+
+ if 'gitupdate' in request.POST:
+ import os # FIXME - put at top?
+ cmd = "cd ../data%s; git pull origin %s" % (xp,xp.replace('/',''))
+ msg += 'cmd: %s
' % cmd
+ ret = os.popen(cmd).read()
+ msg += '%s
' % ret.replace('<','<')
+ msg += "git update done!
"
+
+ context = {'id':id,
+ 'msg' : msg,
+ 'coursename' : coursename,
+ 'csrf':csrf(request)['csrf_token'],
+ }
+
+ result = render_to_response("gitupdate.html", context)
+ return result