from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Instructions(Page): form_model = 'player' form_fields = ['test1', 'test2'] def vars_for_template(self): return dict( e1=Constants.examples[0], e2=Constants.examples[1], e3=Constants.examples[2], e4=Constants.examples[3], ) def error_message(self, values): print('values is', values) if values['test1'] != 1 or values['test2'] != 3: return 'Check the table again and enter the correct payoffs.' class Payoffs(Page): def vars_for_template(self): return dict( AforS=Constants.payoffs_sender[0], BforS=Constants.payoffs_sender[1], AforR=Constants.payoffs_receiver[0], BforR=Constants.payoffs_receiver[1], ) timeout_seconds = 20 class Reveal(Page): form_model = 'player' form_fields = ['reveal'] def is_displayed(self): return self.player.id_in_group == 1 & self.group.treatment timeout_seconds = 20 def before_next_page(self): if self.timeout_happened: self.player.reveal = random.choice([True, False]) class Choice(Page): form_model = 'player' form_fields = ['choice'] def vars_for_template(self): return dict( AforS=Constants.payoffs_sender[0], BforS=Constants.payoffs_sender[1], AforR=Constants.payoffs_receiver[0], BforR=Constants.payoffs_receiver[1], ) class ResultsWaitPage(WaitPage): after_all_players_arrive = 'set_payoffs' class Results(Page): pass page_sequence = [Instructions, Payoffs, Reveal, Choice, ResultsWaitPage, Results]