from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants, Decision from django.forms import modelformset_factory import random DecisionFormSet5 = modelformset_factory(Decision, fields=('answer_task5',), extra=0) class game5_task5_intro_red(Page): form_model = 'player' form_fields = ['task5_choice', 'task5_correct_pred'] def is_displayed(self): return self.participant.vars['treat'] == 'red' def vars_for_template(self): return { 'rand': self.participant.vars['rnd_treat1'] } class game5_task5_intro_blue(Page): form_model = 'player' form_fields = ['task5_choice', 'task5_correct_pred'] def is_displayed(self): return self.participant.vars['treat'] == 'blue' def vars_for_template(self): return { 'average': self.participant.vars['avg_treat1'] } class game5_task5_intro_green(Page): form_model = 'player' form_fields = ['task5_choice', 'task5_correct_pred'] def is_displayed(self): return self.participant.vars['treat'] == 'green' class game5_task5(Page): timeout_seconds = 90 def vars_for_template(self): decision_qs5 = Decision.objects.filter(player__exact=self.player) assert len(decision_qs5) == Constants.num_ques_task decisions_formset5 = DecisionFormSet5(queryset=decision_qs5) return { 'decision_formset': decisions_formset5, 'num_and_forms': zip(Constants.num1_task5, Constants.num2_task5, Constants.num3_task5, Constants.num4_task5, Constants.num5_task5, Constants.num6_task5, Constants.num7_task5, Constants.num8_task5, Constants.num9_task5, Constants.num10_task5, Constants.num11_task5, Constants.num12_task5, Constants.num13_task5, Constants.num14_task5, Constants.num15_task5, Constants.num16_task5, Constants.num17_task5, Constants.num18_task5, decisions_formset5.forms), } def before_next_page(self): submitted_data = self.form.data for i in range(Constants.num_ques_task): input_prefix = 'form-%d-'%(i) player_answer = submitted_data[input_prefix + 'answer_task5'] if player_answer != '': self.player.task5_correct += (int(player_answer)==Constants.ans_task5[i]) print("Correctly Answered Task 5: ", self.player.task5_correct) class game5_post_task5(Page): form_model = 'player' form_fields = ['task5_rank_pred','task5_top_chance', 'reason'] def vars_for_template(self): return { 'task3_choice': self.participant.vars['game1_task3_choice'] } class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() class wait4(WaitPage): wait_for_all_groups = True page_sequence = [ game5_task5_intro_red, game5_task5_intro_blue, game5_task5_intro_green, wait4, game5_task5, game5_post_task5, ResultsWaitPage]