diff --git a/lib/dogfood/__init__.py b/lib/dogfood/__init__.py index e69de29bb2..d00d8ea793 100644 --- a/lib/dogfood/__init__.py +++ b/lib/dogfood/__init__.py @@ -0,0 +1 @@ +from check import * diff --git a/lib/dogfood/check.py b/lib/dogfood/check.py new file mode 100644 index 0000000000..2a04284a28 --- /dev/null +++ b/lib/dogfood/check.py @@ -0,0 +1,50 @@ +#!/usr/bin/python + +from random import choice +import string +import traceback + +from django.conf import settings +import courseware.capa.capa_problem as lcp +from dogfood.views import update_problem + +def GenID(length=8, chars=string.letters + string.digits): + return ''.join([choice(chars) for i in range(length)]) + +randomid = GenID() + +def check_problem_code(ans,the_lcp,correct_answers,false_answers): + """ + ans = student's answer + the_lcp = LoncapaProblem instance + + returns dict {'ok':is_ok,'msg': message with iframe} + """ + pfn = "dog%s" % randomid + pfn += the_lcp.problem_id.replace('filename','') # add problem ID to dogfood problem name + update_problem(pfn,ans,filestore=the_lcp.system.filestore) + msg = '
Error: %s
" % str(err).replace('<','<') + msg += "%s" % traceback.format_exc().replace('<','<') + + ret = {'ok':is_ok, + 'msg': msg, + } + return ret + + \ No newline at end of file diff --git a/lib/dogfood/views.py b/lib/dogfood/views.py index cbaebbd4ba..54090d744a 100644 --- a/lib/dogfood/views.py +++ b/lib/dogfood/views.py @@ -65,11 +65,11 @@ def df_capa_problem(request, id=None): Accepts XML for a problem, inserts it into the dogfood course.xml. Returns rendered problem. ''' - print "WARNING: UNDEPLOYABLE CODE. FOR DEV USE ONLY." - print "In deployed use, this will only edit on one server" - print "We need a setting to disable for production where there is" - print "a load balanacer" + # "WARNING: UNDEPLOYABLE CODE. FOR DEV USE ONLY." + if settings.DEBUG: + print '[lib.dogfood.df_capa_problem] id=%s' % id + if not 'coursename' in request.session: coursename = DOGFOOD_COURSENAME else: @@ -133,11 +133,8 @@ def df_capa_problem(request, id=None): if not xml: print "[lib.dogfood.df_capa_problem] problem xml not found!" + # add problem ID to list so that is_staff check can be bypassed + request.session['dogfood_id'] = id + # hand over to quickedit to do the rest - try: - html = quickedit(request,id=id,qetemplate='dogfood.html',coursename=coursename) - return html - except Exception, err: - print '[lib.dogfood.df_capa_problem] Error generating html on first pass: %s' % err - return quickedit(request,id=id,qetemplate='dogfood.html',coursename=coursename)