from otree.api import * import random import itertools doc = """ Welcome Page """ class Constants(BaseConstants): name_in_url = 'welcome' players_per_group = None num_rounds = 1 treatments = ['red', 'blue', 'green'] # red = Baseline; blue = Graph; Green = frame class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session session.completions_by_treatment = {color: 0 for color in Constants.treatments} class Group(BaseGroup): pass class Player(BasePlayer): color = models.StringField() #PAGES class Consent(Page): pass class welcome(Page): @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session player.color = min( Constants.treatments, key=lambda color: session.completions_by_treatment[color], ) participant = player.participant participant.color = player.color print('number of subjects in Baseline', session.completions_by_treatment['red']) print('number of subjects in Graph', session.completions_by_treatment['blue']) print('number of subjects in frame', session.completions_by_treatment['green']) @staticmethod def app_after_this_page(player: Player, upcoming_apps): print('upcoming_apps is', upcoming_apps) if 'color' in player.session.config: if player.session.config['color'] == 'blue': return "graphInterpretation" elif player.session.config['color'] == 'green': return "similarity" else: return "Bayesian_Grouping" else: if player.color == 'blue': return "graphInterpretation" elif player.color == 'green': return "similarity" else: return "Bayesian_Grouping" page_sequence = [Consent, welcome]