from otree.api import * doc = """ Payment info shown based on participant ID. """ def read_csv(): import csv f = open(__name__ + '/payments.csv', encoding='utf-8-sig') rows = list(csv.DictReader(f)) # print(rows) # for row in rows: # print(row) return rows class Constants(BaseConstants): name_in_url = 'payment_info' players_per_group = None payments = read_csv() num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): participantnumber = models.StringField(label='') row_no = models.IntegerField() payment = models.StringField() part1 = models.StringField() part2 = models.StringField() part3 = models.StringField() task1difficulty = models.StringField() task1 = models.StringField() task2 = models.StringField() task2take = models.StringField() task3 = models.StringField() task4 = models.StringField() task5a = models.StringField() task5c = models.StringField() task6a = models.StringField() task6atake = models.StringField() task6c = models.StringField() task7 = models.StringField() task8 = models.StringField() jodchosen = models.StringField() task1payoff = models.StringField() task2payoff = models.StringField() task3payoff = models.StringField() task4payoff = models.StringField() task5payoff = models.StringField() task6payoff = models.StringField() task7payoff = models.StringField() task8payoff = models.StringField() role1 = models.StringField() role2 = models.StringField() role3 = models.StringField() role4 = models.StringField() role5 = models.StringField() role6 = models.StringField() role7 = models.StringField() role8 = models.StringField() attention = models.StringField() part2stat1 = models.StringField() part2stat2 = models.StringField() part2stat3 = models.StringField() part2stat4 = models.StringField() part2stat5 = models.StringField() part2stat6 = models.StringField() part2stat7 = models.StringField() part2stat8 = models.StringField() part2stat9 = models.StringField() part2stat10 = models.StringField() part2stat11 = models.StringField() part2stat12 = models.StringField() part2stat13 = models.StringField() part2stat14 = models.StringField() part2stat15 = models.StringField() part2stat16 = models.StringField() part2stat17 = models.StringField() part2stat18 = models.StringField() part2stat19 = models.StringField() part2stat20 = models.StringField() part2ans1 = models.StringField() part2ans2 = models.StringField() part2ans3 = models.StringField() part2ans4 = models.StringField() part2ans5 = models.StringField() part2ans6 = models.StringField() part2ans7 = models.StringField() part2ans8 = models.StringField() part2ans9 = models.StringField() part2ans10 = models.StringField() part2ans11 = models.StringField() part2ans12 = models.StringField() part2ans13 = models.StringField() part2ans14 = models.StringField() part2ans15 = models.StringField() part2ans16 = models.StringField() part2ans17 = models.StringField() part2ans18 = models.StringField() part2ans19 = models.StringField() part2ans20 = models.StringField() part3chosen = models.StringField() part3choice = models.StringField() round = models.StringField() found = models.IntegerField(initial=0) # FUNCTIONS # PAGES class Intro(Page): form_model = 'player' form_fields = ['participantnumber'] @staticmethod def vars_for_template(self): return dict(country=self.session.config['country'], ) @staticmethod def before_next_page(player: Player, timeout_happened): rows = 0 print(rows) for row in Constants.payments: # print(row, row['parid']) if player.participantnumber == row['participantnumber']: # print(row, row['participantnumber']) print(player.participantnumber) player.payment = row['payment'] player.part1 = row['part1'] player.part2 = row['part2'] player.part3 = row['part3'] player.task1difficulty = row['task1difficulty'] player.task1 = row['task1'] player.task2 = row['task2'] player.task2take = row['task2take'] player.task3 = row['task3'] player.task4 = row['task4'] player.task5a = row['task5a'] player.task5c = row['task5c'] player.task6a = row['task6a'] player.task6atake = row['task6atake'] player.task6c = row['task6c'] player.task7 = row['task7'] player.task8 = row['task8'] player.jodchosen = row['jodchosen'] player.task1payoff = row['task1payoff'] player.task2payoff = row['task2payoff'] player.task3payoff = row['task3payoff'] player.task4payoff = row['task4payoff'] player.task5payoff = row['task5payoff'] player.task6payoff = row['task6payoff'] player.task7payoff = row['task7payoff'] player.task8payoff = row['task8payoff'] player.role1 = row['role1'] player.role2 = row['role2'] player.role3 = row['role3'] player.role4 = row['role4'] player.role5 = row['role5'] player.role6 = row['role6'] player.role7 = row['role7'] player.role8 = row['role8'] print('role 8 is', player.role8) player.attention = row['attention'] player.part2stat1 = row['part2stat1'] player.part2stat2 = row['part2stat2'] player.part2stat3 = row['part2stat3'] player.part2stat4 = row['part2stat4'] player.part2stat5 = row['part2stat5'] player.part2stat6 = row['part2stat6'] player.part2stat7 = row['part2stat7'] player.part2stat8 = row['part2stat8'] player.part2stat9 = row['part2stat9'] player.part2stat10 = row['part2stat10'] player.part2stat11 = row['part2stat11'] player.part2stat12 = row['part2stat12'] player.part2stat13 = row['part2stat13'] player.part2stat14 = row['part2stat14'] player.part2stat15 = row['part2stat15'] player.part2stat16 = row['part2stat16'] player.part2stat17 = row['part2stat17'] player.part2stat18 = row['part2stat18'] player.part2stat19 = row['part2stat19'] player.part2stat20 = row['part2stat20'] player.part2ans1 = row['part2ans1'] player.part2ans2 = row['part2ans2'] player.part2ans3 = row['part2ans3'] player.part2ans4 = row['part2ans4'] player.part2ans5 = row['part2ans5'] player.part2ans6 = row['part2ans6'] player.part2ans7 = row['part2ans7'] player.part2ans8 = row['part2ans8'] player.part2ans9 = row['part2ans9'] player.part2ans10 = row['part2ans10'] player.part2ans11 = row['part2ans11'] player.part2ans12 = row['part2ans12'] player.part2ans13 = row['part2ans13'] player.part2ans14 = row['part2ans14'] player.part2ans15 = row['part2ans15'] player.part2ans16 = row['part2ans16'] player.part2ans17 = row['part2ans17'] player.part2ans18 = row['part2ans18'] player.part2ans19 = row['part2ans19'] player.part2ans20 = row['part2ans20'] player.part3chosen = row['part3chosen'] player.part3choice = row['part3choice'] player.round = row['round'] break @staticmethod def error_message(player: Player, values): for row in Constants.payments: if values['participantnumber'] == row['participantnumber']: player.found = 1 print('player is found?', player.found) if player.found != 1: return 'Please enter a valid participant number.' class PaymentInfo(Page): @staticmethod def vars_for_template(self): return dict(payment=self.payment, part1=self.part1, part2=self.part2, part3=self.part3, country=self.session.config['country'], ) class PaymentInfoPartI(Page): @staticmethod def vars_for_template(player: Player): return dict(part1=player.part1, task1difficulty=player.task1difficulty, task1=player.task1, task2=player.task2, task2take=player.task2take, task3=player.task3, task4=player.task4, task5a=player.task5a, task5c=player.task5c, task6a=player.task6a, task6atake=player.task6atake, task6c=player.task6c, task7=player.task7, task8=player.task8, jodchosen=player.jodchosen, task1payoff=player.task1payoff, task2payoff=player.task2payoff, task3payoff=player.task3payoff, task4payoff=player.task4payoff, task5payoff=player.task5payoff, task6payoff=player.task6payoff, task7payoff=player.task7payoff, task8payoff=player.task8payoff, role1=player.role1, role2=player.role2, role3=player.role3, role4=player.role4, role5=player.role5, role6=player.role6, role7=player.role7, role8=player.role8, ) class PaymentInfoPartII(Page): @staticmethod def vars_for_template(player: Player): return dict(part2=player.part2, attention=player.attention, part2stat1=player.part2stat1, part2stat2=player.part2stat2, part2stat3=player.part2stat3, part2stat4=player.part2stat4, part2stat5=player.part2stat5, part2stat6=player.part2stat6, part2stat7=player.part2stat7, part2stat8=player.part2stat8, part2stat9=player.part2stat9, part2stat10=player.part2stat10, part2stat11=player.part2stat11, part2stat12=player.part2stat12, part2stat13=player.part2stat13, part2stat14=player.part2stat14, part2stat15=player.part2stat15, part2stat16=player.part2stat16, part2stat17=player.part2stat17, part2stat18=player.part2stat18, part2stat19=player.part2stat19, part2stat20=player.part2stat20, part2ans1=player.part2ans1, part2ans2=player.part2ans2, part2ans3=player.part2ans3, part2ans4=player.part2ans4, part2ans5=player.part2ans5, part2ans6=player.part2ans6, part2ans7=player.part2ans7, part2ans8=player.part2ans8, part2ans9=player.part2ans9, part2ans10=player.part2ans10, part2ans11=player.part2ans11, part2ans12=player.part2ans12, part2ans13=player.part2ans13, part2ans14=player.part2ans14, part2ans15=player.part2ans15, part2ans16=player.part2ans16, part2ans17=player.part2ans17, part2ans18=player.part2ans18, part2ans19=player.part2ans19, part2ans20=player.part2ans20, ) class PaymentInfoPartIII(Page): @staticmethod def vars_for_template(player: Player): return dict(part3=player.part3, part3chosen=player.part3chosen, part3choice=player.part3choice, round=player.round, ) class PaymentInfoRepeat(Page): @staticmethod def vars_for_template(self): return dict(payment=self.payment, part1=self.part1, part2=self.part2, part3=self.part3, country=self.session.config['country'], ) page_sequence = [Intro, PaymentInfo, PaymentInfoPartI, PaymentInfoPartII, PaymentInfoPartIII, PaymentInfoRepeat]