Esempio n. 1
0
from mycq import user_store
import csv
import sys

def calculate_score(user_id):
    score = 0
    answers = user_store.hgetall('user_answers:' + user_id)
    for qid in answers.keys():
        correct_answer = user_store.hget('question:' + str(qid), 'correct_answer')
        if answers[qid] == correct_answer:
            score += 10
        else:
            score -= 5
    return score

user_keys = user_store.keys('user:*')
user_scores = []
for user_key in user_keys:
    user = user_store.hgetall(user_key)
    user_score = calculate_score(user['id'])
    user_scores.append((user['id'], user['name'], user['email'], user['roll_no'], user['branch'], user_score))
    user_store.hset(user_key, 'score', user_score)

top_users = sorted(user_scores, key=lambda x:x[-1], reverse=True)
cw = csv.writer(sys.stdout)
cw.writerow(('id', 'name', 'email', 'roll_no', 'branch', 'score'))
for user in top_users:
    cw.writerow(user)
Esempio n. 2
0
 def answer_question(self, form):
     qid = int(form.question.data)
     user_store.sadd('user_answered_questions:' + self.id, qid)
     user_store.hset('user_answers:' + self.id, qid, form.answer.data)