def admin_files(filename): u = User(ADMIN) if u.isadminsession() and filename in PATHNAMES: data = open(PATHNAMES[filename],'r').read() return render_template('editfile.html', filename=filename, data=data) else: return redirect(url_for('site_main'))
def site_user(name): u = User(name) if u.isadminsession() or u.authenticated(): return render_template('user.html', title=u.longname, user=u ) elif not u.passhash: return redirect(url_for('site_getnewpass', name=name)) elif not u.authenticated(): return redirect(url_for('site_authenticate', name=name)) else: return redirect(url_for('site_users'))
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_authenticatesubmit(name): u = User(name) if request.method == 'POST': u.login(request.form['pass']) return redirect(url_for('site_user', name=name))
def site_getnewpasssubmit(name): u = User(name) if (not u.passhash or u.authenticated()) and request.form['pass1'] == request.form['pass2']: u.setpassword(request.form['pass1']) return redirect(url_for('site_authenticate', name=name))
def site_getnewpass(name): u = User(name) if not u.passhash or u.authenticated(): return render_template('setpass.html', user=u) else: redirect(url_for('site_authenticate', name=name))
def admin_filessubmit(filename): u = User(ADMIN) if u.isadminsession() and filename in PATHNAMES: data = request.form['data'] open(PATHNAMES[filename],'w').write(data) return redirect(url_for('site_main'))
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)