from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import numpy as np class MyPage(Page): pass class ResultsWaitPage(WaitPage): pass class CoinFlip(Page): form_model = 'player' def is_displayed(self): return self.player.id_in_group == 3 def vars_for_template(self): c = self.participant.vars['coinflip'] #0 or 1 r = Constants.coinflip_result[c] t = Constants.coinflip_text[c] l = self.participant.vars['lottery'] return dict(coinflip_result=r, coinflip_text=t, lottery_result=l, winner_payoff=Constants.winner_payoff, loser_payoff=Constants.loser_payoff) class Guess(Page): form_model = 'player' form_fields = ['answer_t','answer_p','answer_m'] def before_next_page(self): self.player.total_t = self.participant.vars['total_correct'] self.player.total_p = self.participant.vars['total_points'] self.player.avg_m = np.round(np.average(self.participant.vars['multipliers']),1) return self.player.determine_correct() class Results(Page): form_model = 'player' def vars_for_template(self): #0 or 1 t = self.player.correct_t # correct guess at no. correct entries p = self.player.correct_p # correct guess at no. points m = self.player.correct_m # correct guess at avg. multiplier # return feedback t_text = Constants.reward_text[t] p_text = Constants.reward_text[p] m_text = Constants.reward_text[m] # return reward $ t_reward = c([0,Constants.reward_t][t]) p_reward = c([0,Constants.reward_p][p]) m_reward = c([0,Constants.reward_m][m]) return dict(t_text = t_text, p_text = p_text, m_text = m_text, t_reward = t_reward, p_reward = p_reward, m_reward = m_reward) def before_next_page(self): # 0 or 1 t = self.player.correct_t # correct guess at no. correct entries p = self.player.correct_p # correct guess at no. points m = self.player.correct_m # correct guess at avg. multiplier t_reward = c([0, Constants.reward_t][t]) p_reward = c([0, Constants.reward_p][p]) m_reward = c([0, Constants.reward_m][m]) self.player.payoff = t_reward + p_reward + m_reward page_sequence = [CoinFlip,Guess,Results]