import random from otree.api import * import itertools doc = """ Welcome Page """ class C(BaseConstants): NAME_IN_URL = 'welcome' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 TREATMENTS = ['red', 'blue'] # red = DBM; blue = CM class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): color = models.StringField() def creating_session(subsession): import itertools treatments = itertools.cycle([1, 2]) session = subsession.session session.completions_by_treatment = {color: 0 for color in C.TREATMENTS} # if subsession.round_number == 1: # for player in subsession.get_players(): # participant = player.participant # participant.treatment = next(treatments) class Consent(Page): pass # PAGES class welcome(Page): @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session player.color = min( C.TREATMENTS, key=lambda color: session.completions_by_treatment[color], ) participant = player.participant participant.color = player.color print('number of subjects in DBM treatments', session.completions_by_treatment['red']) print('number of subjects in CM treatments', session.completions_by_treatment['blue']) @staticmethod def app_after_this_page(player, upcoming_apps): print('upcoming_apps is', upcoming_apps) if player.color == 'blue': return "treatment1_CM" page_sequence = [ Consent, welcome]