from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants import random from random import shuffle import itertools def vars_for_all_templates(self): return { 'condition': self.participant.vars['condition'], 'counterbal': self.participant.vars['counterbal'] } class TaskInstructions(Page): pass class KnowledgeCheck(Page): form_model = models.Player form_fields = ['kc1', 'kc2', 'kc3', 'kc4'] class Decision(Page): form_model = models.Player form_fields = ['tokens_kept', 'tokens_contributed', 'decision_time'] class PostTask(Page): pass class PEQ(Page): form_model = models.Player form_fields = ['peq_pg_choice_difficulty', 'peq_importance_group_pay', 'peq_importance_individual_pay', 'peq_importance_guilt_avoidance', 'peq_importance_group_letdown', 'peq_importance_others_preference', 'peq_pg_expected_bonus', 'peq_pg_compensation_satisfaction', 'peq_open_ended', 'peq_expected_cooperation', 'peq_turk_income', 'peq_risk_attitude', 'peq_others_risk', 'peq_affect_excited', 'peq_affect_upset', 'peq_affect_proud', 'peq_affect_irritable', 'peq_affect_inspired', 'peq_affect_nervous', 'peq_gender', 'peq_age_range', 'peq_work_experience', 'peq_education' ] class Results(Page): def vars_for_template(self): if self.participant.vars['pay_profit'] < 10: bonus_num = 0.00 elif self.participant.vars['pay_profit'] < 20: bonus_num = 0.50 elif self.participant.vars['pay_profit'] < 30: bonus_num = 1.00 elif self.participant.vars['pay_profit'] < 40: bonus_num = 1.50 elif self.participant.vars['pay_profit'] < 50: bonus_num = 2.00 elif self.participant.vars['pay_profit'] < 60: bonus_num = 2.50 elif self.participant.vars['pay_profit'] < 70: bonus_num = 3.00 elif self.participant.vars['pay_profit'] < 80: bonus_num = 3.50 elif self.participant.vars['pay_profit'] < 90: bonus_num = 4.00 elif self.participant.vars['pay_profit'] < 100: bonus_num = 4.50 elif self.participant.vars['pay_profit'] < 110: bonus_num = 5.00 elif self.participant.vars['pay_profit'] < 120: bonus_num = 5.50 elif self.participant.vars['pay_profit'] < 130: bonus_num = 6.00 elif self.participant.vars['pay_profit'] < 140: bonus_num = 6.50 elif self.participant.vars['pay_profit'] < 150: bonus_num = 7.00 elif self.participant.vars['pay_profit'] < 160: bonus_num = 7.50 elif self.participant.vars['pay_profit'] < 170: bonus_num = 8.00 elif self.participant.vars['pay_profit'] < 180: bonus_num = 8.50 else: bonus_num = 9.00 wait_bonus = round((int(self.participant.vars['total_wait_time'])/60)*0.20, 2) self.player.task_1_bonus = '{0:.2f}'.format(bonus_num) self.player.wait_bonus = '{0:.2f}'.format(wait_bonus) self.player.total_bonus = '{0:.2f}'.format(bonus_num + wait_bonus + 2.00) return { 'pay_period': self.participant.vars['pay_period'], 'pay_profit': self.participant.vars['pay_profit'], 'bonus': '{0:.2f}'.format(bonus_num), 'wait_bonus': '{0:.2f}'.format(wait_bonus), 'bonus_total': '{0:.2f}'.format(bonus_num + wait_bonus + 2.00) } page_sequence = [ TaskInstructions, KnowledgeCheck, Decision, PostTask, PEQ, Results ]