def userReport(sid): path = USER_PATH+os.path.basename(sid) test = Test() if not os.path.exists(path+'/test'): return {} test.readFromFile(path+'/test') answer = Answer() if not os.path.exists(path+'/answer'): return {} answer.readFromFile(path+'/answer') test.applyAnswers(answer) ret = {} qcount = test.questionsCount() ret['QUESTION_COUNT'] = str(qcount) aqcount = test.rightAnsweredQuestionsCount() ret['ANSWERED_QUESTION_COUNT'] = str(aqcount) ret['ANSWERED_QUESTION_COUNT_PERCENT'] = str(aqcount*100/qcount) ret['TEST_TITLE'] = escape(test.caption) db_conn = sqlite3.connect(USER_DB) db_cursor = db_conn.cursor() db_cursor.execute('SELECT `date`, `name`, `result`, `rank` FROM `users` WHERE `sid`=?', (sid,)) for row in db_cursor: try: date = datetime.fromtimestamp(int(row[0])).strftime("%d.%m.%Y %H:%m") except: date = "" ret['DATE'] = date user_names = row[1].split(' ') full_user_name = user_names[0] for user_name in user_names[1:]: if len(user_name): full_user_name += " "+user_name[0]+"." ret['USER_NAME'] = escape(full_user_name) ret['TEST_RESULT'] = str(row[2]) ret['USER_RANK'] = escape(row[3]) db_cursor.close() db_conn.close() return ret
def userControlTestHtml(sid): path = USER_PATH+os.path.basename(sid) test = Test() if not os.path.exists(path+'/test'): return u"Пользователь не проходил тест" test.readFromFile(path+'/test') answer = Answer() if not os.path.exists(path+'/answer'): return u"Пользователь не оправлял ответов" answer.readFromFile(path+'/answer') test.applyAnswers(answer) return test.serializeForHtml(show_hint=False)