Exemplo n.º 1
0
    def test_game_lottery2(self):
        u1 = User(nickname = 'john', email = '*****@*****.**',role = ROLE_RESEARCHER)
        u2 = User(nickname = 'john', email = '*****@*****.**')
        survey = Survey(title = "test",researcher = u1)
        s1 = Section (title = "1",description = "a",survey = survey)
        q1 = QuestionText(text="q1",section=s1)
        ans1 = Answer(user=u1,question=q1,answerText="1.5")
        ans2 = Answer(user=u2,question=q1,answerText="2.5")
        db.session.add(u1)
        db.session.add(u2)
        db.session.add(survey)
        db.session.add(s1)
        db.session.add(q1)
        db.session.add(ans1)
        db.session.add(ans2)
        game = GameLottery2(survey=survey, userA=u1,userB=u2,answerA=ans1,answerB=ans2)
        db.session.add(game)
        db.session.commit()
        self.assertEqual(game.moneyA,12.25)
        self.assertEqual(game.moneyB,13.75)

        ans1.answerText="0"
        ans2.answerText="0"
        db.session.add(ans1)
        db.session.add(ans2)
        game = GameLottery1(survey=survey, userA=u1,userB=u2,answerA=ans1,answerB=ans2)
        db.session.add(game)
        db.session.commit()
        self.assertEqual(game.percent_playerA,0)
        self.assertEqual(game.percent_playerB,0)
        self.assertEqual(game.moneyA,10)
        self.assertEqual(game.moneyB,10)
Exemplo n.º 2
0
def new_answer(question, form, user):
    if isinstance(question, QuestionYN):
        answer = Answer(answerYN=(form["c" + str(question.id)].data == "Yes"), user=user, question=question)
        answer.answerText = str(answer.answerYN)
    if isinstance(question, QuestionText):
        if question.isNumber:
            if question.isNumberFloat:
                answer = Answer(
                    answerNumeric=form["c" + str(question.id)].data.replace(",", "."), user=user, question=question
                )
            else:
                answer = Answer(answerNumeric=form["c" + str(question.id)].data, user=user, question=question)
            answer.answerText = answer.answerNumeric
        else:
            answer = Answer(answerText=form["c" + str(question.id)].data, user=user, question=question)
    if isinstance(question, QuestionChoice):
        answer = Answer(answerNumeric=form["c" + str(question.id)].data, user=user, question=question)
        if question.render != "select":
            answer.answerText = form["c" + str(question.id)].choices[int(form["c" + str(question.id)].data)][1]
        else:
            # if ==select, the firts element is empty, form[0]=''
            answer.answerText = form["c" + str(question.id)].choices[int(form["c" + str(question.id)].data) + 1][1]
    if isinstance(question, QuestionLikertScale):
        answer = Answer(answerNumeric=form["c" + str(question.id)].data, user=user, question=question)
        answer.answerText = form["c" + str(question.id)].choices[int(form["c" + str(question.id)].data)][1]
    answer.globalTime = form["globalTimec" + str(question.id)].data
    answer.differentialTime = form["differentialTimec" + str(question.id)].data
    return answer
Exemplo n.º 3
0
 def test_question_expected(self):
     u = User(nickname = 'john', email = '*****@*****.**', 
         role = ROLE_RESEARCHER)
     db.session.add(u)
     survey = Survey(title = "test",researcher = u)
     db.session.add(survey)
     s1 = Section (title = "1",description = "a",
         sequence = 1, percent = 1, survey = survey)
     db.session.add(s1)
     q1 = QuestionText(text="q1",section=s1,expectedAnswer="1",maxNumberAttempt=3)
     db.session.add(q1)
     db.session.commit()
     ans = Answer(user=u,question=q1,answerText="2")
     db.session.add(ans)
     db.session.commit()
     self.assertFalse(ans.answerAttempt())
     self.assertTrue(ans.isMoreAttempt())
     ans.answerText="1"
     self.assertTrue(ans.answerAttempt())
     ans.numberAttempt=4
     self.assertFalse(ans.isMoreAttempt())
     q2 = QuestionYN(text="q1",section=s1,expectedAnswer="yes",maxNumberAttempt=0)
     db.session.add(q2)
     ans = Answer(user=u,question=q2,answerYN=False)
     db.session.add(ans)
     db.session.commit()
     self.assertTrue(ans.isMoreAttempt())
     self.assertFalse(ans.answerAttempt())
     ans.answerYN=True
     self.assertTrue(ans.answerAttempt())
Exemplo n.º 4
0
def new_answer(question,form,user):
    if isinstance (question,QuestionYN):
        answer = Answer (answerYN = (form["c"+str(question.id)].data=='Yes'), user= user, question = question)
        answer.answerText = str(answer.answerYN)
    if isinstance (question,QuestionText):
        if question.isNumber:
            if question.isNumberFloat:
                answer = Answer (answerNumeric = form["c"+str(question.id)].data.replace(",","."), user= user, question = question)
            else:
                answer = Answer (answerNumeric = form["c"+str(question.id)].data, user= user, question = question)
            answer.answerText= answer.answerNumeric
        else:
            answer = Answer (answerText = form["c"+str(question.id)].data, user= user, question = question)
    if isinstance (question,QuestionChoice):
        answer = Answer (answerNumeric = form["c"+str(question.id)].data, user= user, question = question)
        answer.answerText = form["c"+str(question.id)].choices[int(form["c"+str(question.id)].data)][1]
    if isinstance (question, QuestionLikertScale):
        answer = Answer (answerNumeric = form["c"+str(question.id)].data, user= user, question = question)
        answer.answerText = form["c"+str(question.id)].choices[int(form["c"+str(question.id)].data)][1]
    answer.globalTime = form["globalTimec"+str(question.id)].data
    answer.differentialTime = form["differentialTimec"+str(question.id)].data
    return answer
Exemplo n.º 5
0
 def answer_question(user,q, time):
     l=[0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10]
     l2=[0,2,4,6,8,10,12,14,16,18,20]
     if q.decision=="decision_one_v1":
         i=random.choice(l)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_one_v2":
         i=random.choice(l)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_two":
         i=random.choice(l)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_three":
         i=random.choice(l)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_four":
         i=random.choice(l2)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_six":
         i=random.choice(l2)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText=(i)
     elif q.decision=="decision_five":
         i=random.randrange(0,2)
         answer=models.Answer(answerNumeric=i,user=user,question=q)
         answer.answerText = q.choices[answer.answerNumeric]
     elif isinstance (q, QuestionYN):
         answer = Answer (answerYN =random.randrange(0,2)==1, user= user, question = q)
         answer.answerText = str(answer.answerYN)
     elif isinstance (q, QuestionText):
         if q.isExpectedAnswer():
             if random.choice([0,1,1])==1:
             # 66% of know the answer
                 answer = Answer (answerText =q.expectedAnswer.lower(), user= user, question = q)
                 answer.numberAttempt= random.randrange(1, q.maxNumberAttempt+1)
             else:
                 answer = Answer (answerText =forgery_py.forgery.lorem_ipsum.word(), user= user, question = q)
                 answer.numberAttempt= q.maxNumberAttempt+1
         elif q.isNumber:
             answer = Answer (answerNumeric =random.randrange(0,100), user= user, question = q)
             answer.answerText = answer.answerNumeric
         else:
             answer = Answer (answerText =forgery_py.forgery.lorem_ipsum.word(), user= user, question = q)
     elif isinstance (q,QuestionChoice):
         if q.is_range:
             answer = Answer (answerNumeric =random.randrange(q.range_min,q.range_max), user= user, question = q)
             answer.answerText = answer.answerNumeric
         else:
             answer = Answer (answerNumeric =random.randrange(0,len(q.choices)), user= user, question = q)
             answer.answerText = q.choices[answer.answerNumeric]
     elif isinstance (q,QuestionLikertScale):
         answer = Answer (answerNumeric =random.randrange(q.minLikert,q.maxLikert+1), user= user, question = q)
         answer.answerText = answer.answerNumeric
     else:
         print "tipo de pregunta invalido"
         quit()
     t = random.randrange(900, 6500)
     time = time + t
     answer.globalTime = time
     answer.differentialTime = t
     db.session.add(answer)
     return time