from otree.api import * class Constants(BaseConstants): name_in_url = 'Optimism' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass def make_q(label): return models.IntegerField( label=label, choices=[4, 3, 2, 1, 0], widget=widgets.RadioSelect, ) class Player(BasePlayer): q1 = make_q('In uncertain times, I usually expect the best.') q2 = make_q('It is easy for me to relax.') q3 = make_q('If something can go wrong for me, it will.') q4 = make_q('I am always optimistic about my future.') q5 = make_q('I enjoy my friends a lot.') q6 = make_q('It is important for me to keep busy.') q7 = make_q('I hardly ever expect things to go my way.') q8 = make_q('I do not get upset too easily.') q9 = make_q('I rarely count on good things happening to me.') q10 = make_q('Overall, I expect more good things to happen to me than bad.') optimism_score = models.IntegerField() optimism_category = models.StringField() def set_results(self): q3_score = 4 - self.q3 q7_score = 4 - self.q7 q9_score = 4 - self.q9 self.optimism_score = ( self.q1 + q3_score + self.q4 + q7_score + q9_score + self.q10 ) if self.optimism_score <= 13: self.optimism_category = 'Low Optimism (High Pessimism)' elif 14 <= self.optimism_score <= 18: self.optimism_category = 'Moderate Optimism' else: self.optimism_category = 'High Optimism (Low Pessimism)'