def mx_login(): frm = MxForm() frm.add_field('username', 'username required',\ lambda x: x != None and len(x) < 255) frm.add_field('password', 'password required',\ lambda x: x != None and len(x) < 255) postfail = False authfail = False rqm = mx_request_method() if rqm == 'POST': u = frm.get('username') p = frm.get('password') if frm.is_valid(): import hashlib r = model.q_s_user_password(u, hashlib.sha1(p).hexdigest()) if r != None: sid = mx_make_session_id() model.q_i_session(sid) mx_set_cookie('session_id', sid, max_age=3600) mx_redirect('/admin') else: authfail = True else: postfail = True if postfail or rqm == 'GET': return mx_template('login_form.tpl', login_fail=authfail, errors=frm.errors)
def mx_quiz_mark(quiz_id, n=None): p_sid = mx_get_cookie('player_session_id') frm = MxForm() frm.add_field('select_answer', 'Select answer required',\ lambda x: x != None and x.isdigit(), int) postfail = False rqm = mx_request_method() if rqm == 'POST': correct = 0; value = 0; answer_id = 0; question_id = 0; i_r = False a = frm.get('select_answer') if frm.is_valid(): rqu = model.q_s_quiz(quiz_id) quiz_length = rqu[2] ra = model.q_s_answer(a) rq = model.q_s_quiz_question(quiz_id, n) answer_id = ra[0] question_id = rq[0] correct = ra[3] value = rq[3] aa = model.q_s_already_answered(p_sid, quiz_id, answer_id) if aa == []: model.q_i_result(quiz_id, question_id,\ answer_id, p_sid, correct, value) if (n + 1) <= quiz_length: mx_redirect('/quiz/%d/%d' % (quiz_id, n + 1)) else: mx_redirect('/quiz/%d/end' % (quiz_id)) else: postfail = True if postfail or rqm == 'GET': r = model.q_s_quiz(quiz_id) if n == None or p_sid == None: sid = mx_make_session_id() model.q_i_session(sid) mx_set_cookie('player_session_id', sid, max_age=3600) return mx_template('quiz_start.tpl', name=r[1], quiz_id=r[0],\ errors=frm.errors) else: rqq = model.q_s_quiz_question(quiz_id, n) question = {'id':rqq[0], 'content':rqq[1], 'position':rqq[2], 'value':rqq[3], 'image':rqq[4]} ras = model.q_s_answers_for_question(question['id']) return mx_template('quiz_play.tpl',\ question=question,\ answers=ras, quiz_id=quiz_id,\ errors=frm.errors)