from ._builtin import Page, WaitPage from .models import Constants from operator import attrgetter from random import randint, shuffle from otree.api import (Currency as c) import datetime import math class ChangeOfSetting(Page): def is_displayed(self): return self.participant.vars['id'] == 1 class ManipulationCheck(Page): form_model = 'player' form_fields = ['mc_1', 'mc_2', 'lvlTrans' ] def is_displayed(self): return self.participant.vars['id'] == 1 class ChangeOfSettingQuestion(Page): form_model = 'player' form_fields = ['cos_money'] def is_displayed(self): return self.participant.vars['id'] == 1 class PostSurvey(Page): form_model = 'player' form_fields = ['ppt_post1', 'ppt_post2', 'ppt_post3', 'ppt_post4', 'ppt_post5', 'pot_post1', 'pot_post2', 'pot_post3', 'pot_post4', 'pot_post5', 'pot_post6'] shuffle(form_fields) def is_displayed(self): return self.participant.vars['id'] == 1 class TransparencyBehavior(Page): form_model = 'player' form_fields = ['tb1', 'tb2', 'tb3'] shuffle(form_fields) form_fields.append('corona') class Demographics(Page): form_model = 'player' form_fields = ['gender', 'age', 'income', 'currencyP', 'lvlEducation' ] class PayOut(Page): def vars_for_template(self): payoffs = self.participant.vars['payoffs'] payoff = payoffs[randint(0, (self.session.vars.get('roundNum') - 1))] round_num = payoff.get('round') payout = payoff.get('payoff') # payout_dollar_int = math.ceil((float(payout) / 50) / 0.5) * 0.5 payout_dollar_int = float(payout) * 0.02 # if self.player.id_in_group == 2: # payout_dollar_int += 1 if payout_dollar_int < 2: payout_dollar_int = 2 payout_dollar = '{:.2f}'.format(payout_dollar_int) self.participant.payoff = payout_dollar_int - 2.00 self.participant.vars['payout_Dollar'] = payout_dollar return { 'payoutDollar': payout_dollar, 'round_num': round_num, 'payout': payout, 'payoff': self.participant.payoff } def before_next_page(self): self.player.participant_vars_dump = str(self.participant.vars) class Completion(Page): pass class Feedback(Page): form_model = 'player' form_fields = ['feedback'] page_sequence = [ ChangeOfSetting, ManipulationCheck, ChangeOfSettingQuestion, PostSurvey, TransparencyBehavior, Demographics, PayOut, Completion ]