from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random from datetime import date from django import forms class Constants(BaseConstants): name_in_url = 'UK_Survey_Part3' players_per_group = None tasks = ['A', 'B', 'C', 'D'] num_rounds = len(tasks) class Subsession(BaseSubsession): def creating_session(self): # randomize treatments if self.round_number == 1: for player in self.get_players(): player.treat = random.choice(["Control", "Subj. Beliefs", "Bookmaker Beliefs"]) player.participant.vars['treat'] = player.treat pass class Group(BaseGroup): pass class Player(BasePlayer): treat = models.StringField() match_1_changechoice = models.StringField(choices=['Yes', 'No'], label='', widget=widgets.RadioSelect) match_2_changechoice = models.StringField(choices=['Yes', 'No'], label='', widget=widgets.RadioSelect) match_3_changechoice = models.StringField(choices=['Yes', 'No'], label='', widget=widgets.RadioSelect) match_4_changechoice = models.StringField(choices=['Yes', 'No'], label='', widget=widgets.RadioSelect) matchbet_1_change_win = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_1_change_draw = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_1_change_lose = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_1_change_sum = models.IntegerField() def matchbet_1_change_sum_error_message(player, value): print('value is', value) if value < 100 and value > 0: return 'Tokens need to sum to 100' matchbet_2_change_win = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_2_change_draw = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_2_change_lose = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_2_change_sum = models.IntegerField() def matchbet_2_change_sum_error_message(player, value): print('value is', value) if value < 100 and value > 0: return 'Tokens need to sum to 100' matchbet_3_change_win = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_3_change_draw = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_3_change_lose = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_3_change_sum = models.IntegerField() def matchbet_3_change_sum_error_message(player, value): print('value is', value) if value < 100 and value > 0: return 'Tokens need to sum to 100' matchbet_4_change_win = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_4_change_draw = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_4_change_lose = models.IntegerField(min=0, max=100, initial=0, blank=True) matchbet_4_change_sum = models.IntegerField() def matchbet_4_change_sum_error_message(player, value): print('value is', value) if value < 100 and value > 0: return 'Tokens need to sum to 100' MatchBet_a_change_time = models.FloatField() MatchBet_b_change_time = models.FloatField() MatchBet_c_change_time = models.FloatField() MatchBet_d_change_time = models.FloatField()