from ._builtin import Page import random class Error(Page): def is_displayed(self): user_agent = self.request.META['HTTP_USER_AGENT'] is_mobile = False for substring in ['Mobi', 'Android']: if substring in user_agent: is_mobile = True return is_mobile class Consent(Page): form_model = 'player' form_fields = ['consent'] class End(Page): def is_displayed(self): return self.player.consent == 2 class Caution(Page): def before_next_page(self): possible_orders = [123, 132, 213, 231, 312, 321] self.player.randomized_order = random.choice(possible_orders) self.player.participant.vars['randomized_order'] = self.player.randomized_order self.player.colors_reversed = random.randint(0, 1) self.player.participant.vars['colors_reversed'] = self.player.colors_reversed self.player.roles_reversed = random.randint(0, 1) self.player.participant.vars['roles_reversed'] = self.player.roles_reversed class Instructions1(Page): pass class Instructions2(Page): def app_after_this_page(self, upcoming_apps): print('upcoming_apps is', upcoming_apps) if self.player.randomized_order == 123 or self.player.randomized_order == 132: return "CTBS1_Part1A" if self.player.randomized_order == 213 or self.player.randomized_order == 231: return "CTBS1_Part2A" if self.player.randomized_order == 312 or self.player.randomized_order == 321: return "CTBS1_Part3A" page_sequence = [ Error, Consent, End, Caution, Instructions1, Instructions2 ]