from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random import math def vars_for_all_templates(self): return { 'result_M3': self.player.participant.vars['result_M3'], 'result_M3_choice': self.player.participant.vars['result_M3_choice'], 'result_part1_payoff': self.player.participant.vars['result_part1_payoff'], 'result_part1_cards': self.player.participant.vars['result_part1_cards'], 'result_part1_baseline': self.player.participant.vars['result_part1_baseline'], 'result_part1_random': self.player.participant.vars['result_part1_random'], 'result_part1_option1option2': self.player.participant.vars['result_part1_option1option2'], 'part1_a': self.player.participant.vars['result_part1_payoff']- self.player.participant.vars['result_part1_baseline'], 'result_part2_cards': self.player.participant.vars['result_part2_cards'], 'result_part2_random': self.player.participant.vars['result_part2_random'], 'result_part2_payoff': self.player.participant.vars['result_part2_payoff'], 'result_part2_option1option2': self.player.participant.vars['result_part2_option1option2'], } class Result_pre(Page): def before_next_page(self): if self.player.participant.vars['result_M3_choice'] == 2: self.player.Deleted = random.choice(self.player.participant.vars['result_M3']) if self.player.participant.vars['result_M3_choice'] == 1: self.player.Part3_payoff = random.choice(self.player.participant.vars['result_M3']) class Result_part1(Page): def vars_for_template(self): return { 'money1': self.player.participant.vars['result_part1_cards'][0], 'money2': self.player.participant.vars['result_part1_cards'][1], 'money3': self.player.participant.vars['result_part1_cards'][-1], } def before_next_page(self): self.player.Part1_payoff = self.player.participant.vars['result_part1_payoff'] class Result_part2(Page): def vars_for_template(self): return { 'money1': self.player.participant.vars['result_part2_cards'][0], 'money2': self.player.participant.vars['result_part2_cards'][1], } def before_next_page(self): self.player.Part2_payoff = self.player.participant.vars['result_part2_payoff'] class Result_part1_1(Page): def is_displayed(self): return self.player.participant.vars['result_M3_choice'] == 2 def vars_for_template(self): return { 'money1': self.player.participant.vars['result_M3'][0], 'money2': self.player.participant.vars['result_M3'][1], 'money3': self.player.participant.vars['result_M3'][-1], 'Deleted': self.player.Deleted, } def before_next_page(self): self.player.participant.vars['result_M3'].remove(self.player.Deleted) self.player.Part3_payoff = random.choice(self.player.participant.vars['result_M3']) class Result_part1_2(Page): def vars_for_template(self): return { 'money1': self.player.participant.vars['result_M3'][0], 'money2': self.player.participant.vars['result_M3'][1], 'money3': self.player.participant.vars['result_M3'][-1], 'payoff': self.player.Part3_payoff, 'Deleted': self.player.Deleted, 'Deleted2': [i for i in self.player.participant.vars['result_M3'] if i !=self.player.Part3_payoff][0], 'Deleted3': [i for i in self.player.participant.vars['result_M3'] if i != self.player.Part3_payoff][-1], } class Reciept(Page): form_model = 'player' form_fields = ['Venmo'] def vars_for_template(self): return { 'P1': self.player.Part1_payoff, 'P2': self.player.Part2_payoff, 'P3': self.player.Part3_payoff, 'total_ECU': self.player.Part1_payoff + self.player.Part2_payoff + self.player.Part3_payoff, 'total_USD': (self.player.Part1_payoff + self.player.Part2_payoff + self.player.Part3_payoff)*(1/10), 'total_Venmo': (self.player.Part1_payoff + self.player.Part2_payoff + self.player.Part3_payoff) * (1 / 10) + Constants.participation_fee } def before_next_page(self): self.player.Venmo_amount= math.ceil((self.player.Part1_payoff+ self.player.Part2_payoff+self.player.Part3_payoff) * (1 / 10) + + Constants.participation_fee) page_sequence = [Result_pre, Result_part1, Result_part2, Result_part1_1, Result_part1_2, Reciept]