from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from os import environ class Constants(BaseConstants): name_in_url = 'starting' players_per_group = None num_rounds = 6 treatments = ['a', 'b', 'c', 'd' ] instructions_slider = 'svotree/SliderInstructions.html' instructions_9tdm = 'svotree/NineItemTDMInstructions.html' consent_timeout = int(environ.get('CONSENT_TIMEOUT', 120)) class Subsession(BaseSubsession): def creating_session(self): if "counting" not in self.session.vars: counting = [0, 0, 0, 0, 0, 0, 0, 0] self.session.vars["counting"] = counting class Group(BaseGroup): pass class Player(BasePlayer): def set_payoff(self): """Calculate payoff, to be implemented later """ self.payoff = 0 consent = models.BooleanField(widget=widgets.CheckboxInput, default=False, initial=False) # LIA ADDED FOR MANDATORY SLIDER - NOT BEING USED CURRENTLY checkslider = models.IntegerField(blank=True) slider1 = models.FloatField() slider2 = models.FloatField() slider3 = models.FloatField() slider4 = models.FloatField() slider5 = models.FloatField() slider6 = models.FloatField() slider_angle = models.DecimalField(decimal_places=2, max_digits=5) slider_classification = models.CharField() # def update_slider_item(self) -> int: # last_item = self.participant.vars['item_number'] # last_item += 1 # self.participant.vars['item_number'] = last_item # LIA ADDED slider_value = models.FloatField() item_number = models.IntegerField() my_self = models.FloatField() my_other = models.FloatField() # nine_item_tdm_1 = models.CharField() # nine_item_tdm_2 = models.CharField() # nine_item_tdm_3 = models.CharField() # nine_item_tdm_4 = models.CharField() # nine_item_tdm_5 = models.CharField() # nine_item_tdm_6 = models.CharField() # nine_item_tdm_7 = models.CharField() # nine_item_tdm_8 = models.CharField() # nine_item_tdm_9 = models.CharField() # nine_item_tdm_prosocial = models.IntegerField() # nine_item_tdm_individualistic = models.IntegerField() # nine_item_tdm_competitive = models.IntegerField() # nine_item_tdm_classification = models.CharField() timeout = models.IntegerField( choices=[0, 1] ) my_choice = models.CharField() my_treatment = models.StringField() def send_to_next_app(self): self.participant.vars['slider_classification'] = self.slider_classification number_in_cell = models.IntegerField() # as soon as I see 50 come up in number_in_cell, I must freeze recruitment! # how many participants including themselves are already in that cell