from . import models from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants import random class Introduction(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class Video1(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class Comprehension1(Page): def is_displayed(self): return self.subsession.round_number == 1 form_model = models.Player form_fields = ['check1'] def error_message(self, values): if values["check1"] != '160': return 'WRONG! Please try again. Raise your hand if you need help.' pass class Com1Ans(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class Com2Ans(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class Com3Ans(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class Comprehension2(Page): def is_displayed(self): return self.subsession.round_number == 1 form_model = models.Player form_fields = ['check2'] def error_message(self, values): if values["check2"] != '220': return 'WRONG! Please try again. Raise your hand if you need help.' pass class Comprehension3(Page): def is_displayed(self): return self.subsession.round_number == 1 form_model = models.Player form_fields = ['check3'] def error_message(self, values): if values["check3"] != '40': return 'WRONG! Please try again. Raise your hand if you need help.' pass class Contribute(Page): """Player: Choose how much to contribute""" form_model = models.Player form_fields = ['contribution'] timeout_submission = {'contribution': c(Constants.endowment / 2)} class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() body_text = "Waiting for other participants to contribute." class Results(Page): def vars_for_template(self): return self.group.set_payoffs() class GroupOutcome(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class MyWaitPage(WaitPage): body_text = "Please wait while other participants are being connected..." pass class Reminder(Page): def is_displayed(self): return self.subsession.round_number == 1 pass class end1(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): return { 'total_payoff': sum([p.payoff for p in self.player.in_all_rounds()]), 'paying_round1': self.participant.vars['earning1'], 'paying_round2': self.participant.vars['earning2'], 'paying_round3': self.participant.vars['earning3'], 'paying_round4': self.participant.vars['earning4'], 'paying_round5': self.participant.vars['earning5'], 'paying_round6': self.participant.vars['earning6'], } pass class Page1(Page): def before_next_page(self): self.participant.vars['earning1'] = self.player.payoff def is_displayed(self): return self.subsession.round_number == 1 class Comprehension0(Page): def is_displayed(self): return self.subsession.round_number == 1 form_model = models.Player form_fields = ['new_check','new_check2'] def error_message(self, values): if values["new_check"] != 'Multiplied by 1.6' or values["new_check2"] != 'Contribution to the group always increases payouts of others': self.player.s1q1attempt += 1 return 'At least one answer is wrong, please try again.' pass page_sequence = [ Introduction, Comprehension0, Comprehension1, Com1Ans, Comprehension2, Com2Ans, Comprehension3, Com3Ans, Contribute, ResultsWaitPage, Results, ]