from ._builtin import Page from .models import Constants import random class Loading(Page): timeout_seconds = 0.5 def before_next_page(self): if self.round_number == 1: randomized_problems = random.sample(Constants.problems, len(Constants.problems)) self.player.participant.vars['randomized_problems2'] = randomized_problems # Temporary: # self.player.colors_reversed = random.randint(0, 1) # self.player.participant.vars['colors_reversed'] = self.player.colors_reversed problem_data = self.player.current_problem() self.player.problem_id = int(problem_data['id']) self.player.x_you = int(problem_data['x_you']) self.player.x_other = int(problem_data['x_other']) self.player.y_you = int(problem_data['y_you']) self.player.y_other = int(problem_data['y_other']) self.player.colors_reversed = self.participant.vars.get('colors_reversed') self.player.options_reversed = random.randint(0, 1) class Instructions(Page): def is_displayed(self): return self.round_number == 1 class ComprehensionQuestions(Page): form_model = 'player' form_fields = ['q1', 'q2', 'q3'] def is_displayed(self): return self.round_number == 1 def before_next_page(self): self.player.q1_error = False if self.player.q1 != 2: self.player.q1_error = True self.player.q2_error = False if self.player.q2 != 420: self.player.q2_error = True self.player.q3_error = False if self.player.q3 != 780: self.player.q3_error = True self.player.cq_error = False if self.player.q1_error or self.player.q2_error or self.player.q3_error: self.player.cq_error = True if self.player.cq_error: self._is_frozen = False self._index_in_pages -= 2 self.participant._index_in_pages -= 2 class Start(Page): def is_displayed(self): return self.round_number == 1 class DecisionSituation(Page): form_model = 'player' form_fields = ['submitted_choice', 'submitted_time'] class End(Page): def is_displayed(self): return self.round_number == Constants.num_rounds page_sequence = [ Loading, Instructions, ComprehensionQuestions, Start, DecisionSituation, End ]