from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class PreferencePage(Page): form_model = 'player' form_fields = ['preference'] def vars_for_template(self): axiom = self.player.axiom decision = self.player.decision data=[] data.append(Constants.rdp[axiom][decision][self.player.ord1_1]) data.append(Constants.rdp[axiom][decision][self.player.ord2_1]) data.append(Constants.rdp[axiom][decision][self.player.ord3_1]) data.append(Constants.rdp[axiom][decision][self.player.ord4_1]) data.append(Constants.rdp[axiom][decision][self.player.ord5_1]) data.append(Constants.rdp[axiom][decision][self.player.ord6_1]) data.append(Constants.rdp[axiom][decision][self.player.ord7_1]) data.append(Constants.rdp[axiom][decision][self.player.ord8_1]) data.append(Constants.rdp[axiom][decision][self.player.ord9_1]) data.append(Constants.rdp[axiom][decision][self.player.ord0_1]) data_a = [] data_b = [] if self.player.abord1 == 0: for x in range(10): data_a.append(data[x][0]) data_b.append(data[x][1]) if self.player.abord1 == 1: for x in range(10): data_a.append(data[x][1]) data_b.append(data[x][0]) return dict( data_a=data_a, data_b=data_b, ) class IncomeBonusPage(Page): def vars_for_template(self): axiom = self.player.axiom decision = self.player.decision position = self.player.position chosen = self.player.chosen data = [] data.append(Constants.rdp[axiom][decision][self.player.ord1_1]) data.append(Constants.rdp[axiom][decision][self.player.ord2_1]) data.append(Constants.rdp[axiom][decision][self.player.ord3_1]) data.append(Constants.rdp[axiom][decision][self.player.ord4_1]) data.append(Constants.rdp[axiom][decision][self.player.ord5_1]) data.append(Constants.rdp[axiom][decision][self.player.ord6_1]) data.append(Constants.rdp[axiom][decision][self.player.ord7_1]) data.append(Constants.rdp[axiom][decision][self.player.ord8_1]) data.append(Constants.rdp[axiom][decision][self.player.ord9_1]) data.append(Constants.rdp[axiom][decision][self.player.ord0_1]) data_a = [] data_b = [] if self.player.abord1 == 0: for x in range(10): data_a.append(data[x][0]) data_b.append(data[x][1]) if self.player.abord1 == 1: for x in range(10): data_a.append(data[x][1]) data_b.append(data[x][0]) if self.player.ord1_1 == position: pos = 1 if self.player.ord2_1 == position: pos = 2 if self.player.ord3_1 == position: pos = 3 if self.player.ord4_1 == position: pos = 4 if self.player.ord5_1 == position: pos = 5 if self.player.ord6_1 == position: pos = 6 if self.player.ord7_1 == position: pos = 7 if self.player.ord8_1 == position: pos = 8 if self.player.ord9_1 == position: pos = 9 if self.player.ord0_1 == position: pos = 10 c = chosen - 1 ecu_bonus = Constants.rdp[axiom][decision][position][c] bonus = round(ecu_bonus/10000,2) self.player.bonus = bonus return dict( data_a=data_a, data_b=data_b, bonus = bonus, ecu_bonus = ecu_bonus, pos = pos, ) def before_next_page(self): self.player.set_payoffs() class ThankYouPage(Page): def vars_for_template(self): bonus = round(self.player.bonus,2) relevant = self.player.participant.vars['relevant'] if self.player.participant.vars['correct'] == 1: main_outcome = "correct" main_payoff = 1.5 else: main_outcome = "not correct" main_payoff = 0 total_payoff = round(1 + bonus + main_payoff,2) return dict( main_outcome = main_outcome, main_payoff = main_payoff, bonus = bonus, total_payoff = total_payoff, relevant = relevant, ) page_sequence = [PreferencePage, IncomeBonusPage, ThankYouPage]