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': self.player.s1q3attempt += 1 if self.player.s1q3attempt >= 3: return ("You have reached the maximum number of attempts, please raise your hand now.") 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': self.player.s1q4attempt += 1 if self.player.s1q4attempt >= 3: return ("You have reached the maximum number of attempts, please raise your hand now.") 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': self.player.s1q5attempt += 1 if self.player.s1q5attempt >= 3: return ("You have reached the maximum number of attempts, please raise your hand now.") 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): return self.group.set_payoffs() body_text = "Waiting for other participants to contribute." class Results1(Page): def vars_for_template(self): return { 'total_earnings': self.group.total_contribution * Constants.multiplier, } class Results(Page): def vars_for_template(self): return self.group.set_payoffs() class code(Page): form_model = models.Player form_fields = ['subjectid'] pass class consent(Page): def is_displayed(self): return self.subsession.round_number == 1 pass 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 = ['newcheck','newcheck2'] def error_message(self, values): if values["newcheck"] != 'Multiplied by 1.6' or values["newcheck2"] != 'Group Members who contribute to the Group Project (or contribute many points) increase the payout of others in the group': self.player.s1q1attempt += 1 if self.player.s1q1attempt >= 4: return "You have reached the maximum number of attempts, please raise your hand now." return 'At least one answer is wrong, please try again.' pass class randomassignment(Page): def is_displayed(self): return self.subsession.round_number == 1 pass page_sequence = [ consent, code, GroupOutcome, Introduction, Comprehension0, Comprehension1, Com1Ans, Comprehension2, Com2Ans, Comprehension3, Com3Ans, ]