from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'a_tom' PLAYERS_PER_GROUP = None NUM_ROUNDS = 16 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): a_tom = models.StringField() n_correct = models.IntegerField() # PAGES class Instr_ADV(Page): form_model = 'player' def is_displayed(player: Player): return player.round_number == 1 class Tom(Page): form_model = 'player' form_fields = ['a_tom'] def vars_for_template(player: Player): n = player.round_number-1 emotions = {'confused': [['Bored','Confused*','Hopeful','Guilty'],['Bored','Confused','Hopeful','Guilty']], 'tired': [['Sneaky','Angry','Guilty','Tired*'],['Sneaky','Angry','Guilty','Tired']], 'sad': [['Guilty','Tired','Confused','Sad*'],['Guilty','Tired','Confused','Sad']], 'disapproving': [['Admiring','Disapproving*','Shocked','Bored'],['Admiring','Disapproving','Shocked','Bored']], 'happy': [['Surprised','Admiring','Happy*','Sneaky'],['Surprised','Admiring','Happy','Sneaky']], 'ashamed': [['Confused','Ashamed*','Scared','Tired'],['Confused','Ashamed','Scared','Tired']], 'angry': [['Angry*','Scared','Sad','Worried'],['Angry','Scared','Sad','Worried']], 'flirting': [['Excited','Confused','Thinking','Flirting*'],['Excited','Confused','Thinking','Flirting']], 'excited': [['Excited*','Happy','Hopeful','Flirting'],['Excited','Happy','Hopeful','Flirting']], 'scared': [['Disgusted','Sad','Angry','Scared*'],['Disgusted','Sad','Angry','Scared']], 'disgusted': [['Scared','Bored','Disgusted*','Angry'],['Scared','Bored','Disgusted','Angry']], 'thinking': [['Surprised','Happy','Thinking*','Disapproving'],['Surprised','Happy','Thinking','Disapproving']], 'sneaky': [['Hopeful','Sneaky*','Thinking','Excited'],['Hopeful','Sneaky','Thinking','Excited']], 'worried': [['Guilty','Bored','Disgusted','Worried*'],['Guilty','Bored','Disgusted','Worried']], 'hopeful': [['Happy','Surprised','Hopeful*','Sneaky'],['Happy','Surprised','Hopeful','Sneaky']], 'surprised': [['Surprised*','Happy','Flirting','Admiring'],['Surprised','Happy','Flirting','Admiring']] } em = list(emotions.keys())[n] return { 'image': '{}.jpg'.format(em), 'values': emotions[em][0], 'labels': emotions[em][1], } def before_next_page(player: Player, timeout_happened): if player.round_number == C.NUM_ROUNDS: answers=[] players = player.in_all_rounds() for p in players: answers+=[p.a_tom] player.n_correct = str(answers).count('*') class Results(Page): form_model = 'player' def vars_for_template(player: Player): return {'correct': player.n_correct} def is_displayed(player: Player): return player.round_number == C.NUM_ROUNDS page_sequence = [Instr_ADV,Tom,Results]