def site_userchallengedownload(username, challengename): u = User(username) if not u.authenticated() and not u.isadminsession(): return redirect(url_for('site_authenticate', name=username)) c = u.challenge(challengename) rv = app.make_response(c.testcode) #rv.headers.add_header('Content-Disposition: attachment', 'filename=' + u.shortname + c.testname + '.py') rv.headers.add('Content-Disposition','attachment', filename=u.shortname + c.testname + '.py') rv.mimetype = 'text/plain' return rv
def site_userchallengesubmit(username, challengename): u = User(username) c = u.challenge(challengename) if not u.authenticated(): return redirect(url_for('site_authenticate', name=username)) if request.method == 'POST': file = request.files['file'] file.seek(0,2) if not file.tell(): file.close() file = tempfile.NamedTemporaryFile(mode='br+') file.write(bytes(request.form['data'], 'UTF-8')) file.seek(0) c.testcanonicalexample() c.runtest(file) c.savestate(u.datapath) return redirect(c.userchallengeurl(username))
def site_userchallenge(username, challengename): u = User(username) c = u.challenge(challengename) if not u.authenticated() and not u.isadminsession(): return redirect(url_for('site_authenticate', name=username)) return render_template('userchallenge.html', title=u.longname+' - '+c.testname, user=u, challenge=c)