from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Instructions(Page): def is_displayed(self): return self.round_number == 1 def before_next_page(self): import time # user has 5 minutes to complete as many pages as possible self.participant.vars['expiry'] = time.time() + Constants.time_tables class Work(Page): def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.get_timeout_seconds() > 3 form_model = 'player' form_fields = ['input_sum'] def vars_for_template(self): return{ 'mat': self.session.vars['matrix'], 'total_correct': self.participant.vars['total_correct'], 'solution': self.session.vars['solution'], 'round': self.player.round_number } def before_next_page(self): # built-in method self.player.total_correct() # see in models in Player class class Results(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): return{ 'total': self.participant.vars['total_correct'] } page_sequence = [Instructions, Work, Results]