from otree.api import * doc = """ Your app description """ def read_csv(): import csv # f = open(__name__ + '/sadp_atdp_items.csv', encoding='utf-8-sig') f = open(__name__ + '/pt.csv', encoding='utf-8-sig') rows = list(csv.DictReader(f)) return rows class Constants(BaseConstants): name_in_url = 'pt' players_per_group = None num_rounds = 1 stimuli = read_csv() class Subsession(BaseSubsession): pass class Group(BaseGroup): pass def mas_scale(label): return models.IntegerField( choices = [1, 2, 3, 4, 5, 6], label = label ) class Player(BasePlayer): for i in Constants.stimuli: locals()[str(i['name'])] = mas_scale(str(i['label'])) del i # PAGES class MyPage(Page): form_model = 'player' @staticmethod def get_form_fields(player: Player): import random form_fields = [i["name"] for i in Constants.stimuli] random.shuffle(form_fields) return form_fields class ResultsWaitPage(WaitPage): pass class Results(Page): pass page_sequence = [MyPage]