from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants from otree.models import Participant class MyPage1(Page): def vars_for_template(self): # NOTE: to be changed for EACH SESSION with the code of the respective 'Preliminary Part' session code prev_session_code = 'hglqa4do' current_id = self.participant.label self.player.dg_decision_1 = None self.player.dg_decision_2 = None self.player.dg_decision_3 = None self.player.dg_decision_4 = None self.player.dg_decision_5 = None self.player.dg_decision_6 = None self.player.dg_decision_7 = None self.player.dg_decision_8 = None self.player.dg_decision_9 = None self.player.dg_decision_10 = None if current_id is not None: try: old_participant = Participant.objects.get(session__code=prev_session_code, label=current_id) self.player.dg_decision_1 = old_participant.vars.get('DG_dec1') self.player.dg_decision_2 = old_participant.vars.get('DG_dec2') self.player.dg_decision_3 = old_participant.vars.get('DG_dec3') self.player.dg_decision_4 = old_participant.vars.get('DG_dec4') self.player.dg_decision_5 = old_participant.vars.get('DG_dec5') self.player.dg_decision_6 = old_participant.vars.get('DG_dec6') self.player.dg_decision_7 = old_participant.vars.get('DG_dec7') self.player.dg_decision_8 = old_participant.vars.get('DG_dec8') self.player.dg_decision_9 = old_participant.vars.get('DG_dec9') self.player.dg_decision_10 = old_participant.vars.get('DG_dec10') except Participant.DoesNotExist: print('cant find info') class MyPage2(Page): def vars_for_template(self): self.player.randomly_selected_round_DG = Constants.randomly_selected_round_DG self.player.supergroup_task3 = str(self.participant.vars['supergroup_task3']) self.player.id_random = int(self.participant.vars['id_random']) self.player.dg_decision_1 = self.player.dg_decision_1 self.player.dg_decision_2 = self.player.dg_decision_2 self.player.dg_decision_3 = self.player.dg_decision_3 self.player.dg_decision_4 = self.player.dg_decision_4 self.player.dg_decision_5 = self.player.dg_decision_5 self.player.dg_decision_6 = self.player.dg_decision_6 self.player.dg_decision_7 = self.player.dg_decision_7 self.player.dg_decision_8 = self.player.dg_decision_8 self.player.dg_decision_9 = self.player.dg_decision_9 self.player.dg_decision_10 = self.player.dg_decision_10 if Constants.randomly_selected_round_DG == 1: self.player.selected_decision_as_dictator = str(self.player.dg_decision_1) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg1_X_pointsA self.player.dictator_pointsB = Constants.dg1_X_pointsB else: self.player.dictator_pointsA = Constants.dg1_Y_pointsA self.player.dictator_pointsB = Constants.dg1_Y_pointsB if Constants.randomly_selected_round_DG == 2: self.player.selected_decision_as_dictator = str(self.player.dg_decision_2) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg2_X_pointsA self.player.dictator_pointsB = Constants.dg2_X_pointsB else: self.player.dictator_pointsA = Constants.dg2_Y_pointsA self.player.dictator_pointsB = Constants.dg2_Y_pointsB if Constants.randomly_selected_round_DG == 3: self.player.selected_decision_as_dictator = str(self.player.dg_decision_3) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg3_X_pointsA self.player.dictator_pointsB = Constants.dg3_X_pointsB else: self.player.dictator_pointsA = Constants.dg3_Y_pointsA self.player.dictator_pointsB = Constants.dg3_Y_pointsB if Constants.randomly_selected_round_DG == 4: self.player.selected_decision_as_dictator = str(self.player.dg_decision_4) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg4_X_pointsA self.player.dictator_pointsB = Constants.dg4_X_pointsB else: self.player.dictator_pointsA = Constants.dg4_Y_pointsA self.player.dictator_pointsB = Constants.dg4_Y_pointsB if Constants.randomly_selected_round_DG == 5: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg5_X_pointsA self.player.dictator_pointsB = Constants.dg5_X_pointsB else: self.player.dictator_pointsA = Constants.dg5_Y_pointsA self.player.dictator_pointsB = Constants.dg5_Y_pointsB if Constants.randomly_selected_round_DG == 6: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg6_X_pointsA self.player.dictator_pointsB = Constants.dg6_X_pointsB else: self.player.dictator_pointsA = Constants.dg6_Y_pointsA self.player.dictator_pointsB = Constants.dg6_Y_pointsB if Constants.randomly_selected_round_DG == 7: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg7_X_pointsA self.player.dictator_pointsB = Constants.dg7_X_pointsB else: self.player.dictator_pointsA = Constants.dg7_Y_pointsA self.player.dictator_pointsB = Constants.dg7_Y_pointsB if Constants.randomly_selected_round_DG == 8: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg8_X_pointsA self.player.dictator_pointsB = Constants.dg8_X_pointsB else: self.player.dictator_pointsA = Constants.dg8_Y_pointsA self.player.dictator_pointsB = Constants.dg8_Y_pointsB if Constants.randomly_selected_round_DG == 9: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg9_X_pointsA self.player.dictator_pointsB = Constants.dg9_X_pointsB else: self.player.dictator_pointsA = Constants.dg9_Y_pointsA self.player.dictator_pointsB = Constants.dg9_Y_pointsB if Constants.randomly_selected_round_DG == 10: self.player.selected_decision_as_dictator = str(self.player.dg_decision_5) if self.player.selected_decision_as_dictator == 'X': self.player.dictator_pointsA = Constants.dg10_X_pointsA self.player.dictator_pointsB = Constants.dg10_X_pointsB else: self.player.dictator_pointsA = Constants.dg10_Y_pointsA self.player.dictator_pointsB = Constants.dg10_Y_pointsB self.player.dictator_pointsA_eur = self.player.dictator_pointsA*Constants.conversion_rate self.player.dictator_pointsA_eur_to_show = round(self.player.dictator_pointsA_eur, ndigits=2) self.player.dictator_pointsB_eur = self.player.dictator_pointsB * Constants.conversion_rate self.player.dictator_pointsB_eur_to_show = round(self.player.dictator_pointsB_eur, ndigits=2) return {'randomly_selected_round_DG': Constants.randomly_selected_round_DG, 'selected_decision_as_dictator': self.player.selected_decision_as_dictator, 'dictator_pointsA': self.player.dictator_pointsA, 'dictator_pointsB': self.player.dictator_pointsB, 'dictator_pointsA_eur': self.player.dictator_pointsA_eur, 'dictator_pointsA_eur_to_show': self.player.dictator_pointsA_eur_to_show, 'dictator_pointsB_eur': self.player.dictator_pointsB_eur, 'dictator_pointsB_eur_to_show': self.player.dictator_pointsB_eur_to_show } class Wait(WaitPage): after_all_players_arrive = 'set_other_player_choice' class MyPage3(Page): def vars_for_template(self): self.player.points_as_receiver_eur = self.player.points_as_receiver * Constants.conversion_rate self.player.points_as_receiver_eur_to_show = round(self.player.points_as_receiver_eur, ndigits=2) self.participant.vars['payoff_final_DG'] = self.player.dictator_pointsA_eur + self.player.points_as_receiver_eur return{'selected_decision_as_receiver': self.player.selected_decision_as_receiver, 'points_as_receiver': self.player.points_as_receiver, 'points_as_receiver_eur_to_show': self.player.points_as_receiver_eur_to_show } #class Results(Page): # def vars_for_template(self): # print(self.participant.vars) # self.player.id_random = int(self.participant.vars['id_random']) # self.player.supergroup_task1 = str(self.participant.vars['supergroup_task1']) # self.player.supergroup_task2 = str(self.participant.vars['supergroup_task2']) # self.player.decision_guess_task1_r1 = int(self.participant.vars['decision_guess_task1_r1']) # self.player.decision_guess_task1_r5 = int(self.participant.vars['decision_guess_task1_r5']) # self.player.cooprate_task1_r1 = int(self.participant.vars['cooprate_task1_r1']) # self.player.cooprate_task1_r5 = int(self.participant.vars['cooprate_task1_r5']) # self.player.payoff_task1_r1_int = int(self.participant.vars['payoff_task1_r1_int']) # self.player.payoff_task1_r2_int = int(self.participant.vars['payoff_task1_r2_int']) # self.player.payoff_task1_r3_int = int(self.participant.vars['payoff_task1_r3_int']) # self.player.payoff_task1_r4_int = int(self.participant.vars['payoff_task1_r4_int']) # self.player.payoff_task1_r5_int = int(self.participant.vars['payoff_task1_r5_int']) # self.player.decision_guess_task2_m1_r1 = self.participant.vars['decision_guess_task2_m1_r1'] # self.player.cooprate_task2_m1_r1 = self.player.participant.vars['cooprate_task2_m1_r1'] # self.player.cum_payoff_task2_int_m1 = self.player.participant.vars['cum_payoff_task2_int_m1'] # self.player.task2_m1_length = self.player.participant.vars['task2_m1_length'] # #self.player.decision_task1_r1 = int(self.participant.vars['decision_task1_r1']) # # self.player.decision_task1_r2 = int(self.participant.vars['decision_task1_r2']) # # self.player.decision_task1_r3 = int(self.participant.vars['decision_task1_r3']) # # self.player.decision_task1_r4 = int(self.participant.vars['decision_task1_r4']) # # self.player.decision_task1_r5 = int(self.participant.vars['decision_task1_r5']) # # self.player.decision_task1_type_r1 = str(self.participant.vars['decision_task1_type_r1']) # # self.player.decision_task1_type_r2 = str(self.participant.vars['decision_task1_type_r2']) # # self.player.decision_task1_type_r3 = str(self.participant.vars['decision_task1_type_r3']) # # self.player.decision_task1_type_r4 = str(self.participant.vars['decision_task1_type_r4']) # # self.player.decision_task1_type_r5 = str(self.participant.vars['decision_task1_type_r5']) # # self.player.cooprate_task1_r2 = int(self.participant.vars['cooprate_task1_r2']) # # self.player.cooprate_task1_r3 = int(self.participant.vars['cooprate_task1_r3']) # # self.player.cooprate_task1_r4 = int(self.participant.vars['cooprate_task1_r4']) # # if Constants.randomly_selected_round == 1: # self.player.payoff_int = self.player.payoff_task1_r1_int # if Constants.randomly_selected_round == 2: # self.player.payoff_int = self.player.payoff_task1_r2_int # if Constants.randomly_selected_round == 3: # self.player.payoff_int = self.player.payoff_task1_r3_int # if Constants.randomly_selected_round == 4: # self.player.payoff_int = self.player.payoff_task1_r4_int # if Constants.randomly_selected_round == 5: # self.player.payoff_int = self.player.payoff_task1_r5_int # if Constants.randomly_selected_round == 6: # self.player.payoff_int = self.player.cum_payoff_task2_int_m1 # # self.participant.vars['payoff_int'] = self.player.payoff_int # self.player.randomly_selected_round = Constants.randomly_selected_round # self.player.payoff_eur = self.player.payoff_int*Constants.conversion_rate # self.player.payoff_eur_to_show = round(self.player.payoff_eur, ndigits=2) # # if self.player.cooprate_task1_r1 < 21: # self.player.cooprate_task1_r1_class = 1 # elif self.player.cooprate_task1_r1 > 20 and self.player.cooprate_task1_r1 < 41: # self.player.cooprate_task1_r1_class = 2 # elif self.player.cooprate_task1_r1 > 40 and self.player.cooprate_task1_r1 < 61: # self.player.cooprate_task1_r1_class = 3 # elif self.player.cooprate_task1_r1 > 60 and self.player.cooprate_task1_r1 < 81: # self.player.cooprate_task1_r1_class = 4 # else: # self.player.cooprate_task1_r1_class = 5 # # if self.player.cooprate_task1_r5 < 21: # self.player.cooprate_task1_r5_class = 1 # elif self.player.cooprate_task1_r5 > 20 and self.player.cooprate_task1_r5 < 41: # self.player.cooprate_task1_r5_class = 2 # elif self.player.cooprate_task1_r5 > 40 and self.player.cooprate_task1_r5 < 61: # self.player.cooprate_task1_r5_class = 3 # elif self.player.cooprate_task1_r5 > 60 and self.player.cooprate_task1_r5 < 81: # self.player.cooprate_task1_r5_class = 4 # else: # self.player.cooprate_task1_r5_class = 5 # # if self.player.cooprate_task2_m1_r1 < 21: # self.player.cooprate_task2_m1_r1_class = 1 # elif self.player.cooprate_task2_m1_r1 > 20 and self.player.cooprate_task2_m1_r1 < 41: # self.player.cooprate_task2_m1_r1_class = 2 # elif self.player.cooprate_task2_m1_r1 > 40 and self.player.cooprate_task2_m1_r1 < 61: # self.player.cooprate_task2_m1_r1_class = 3 # elif self.player.cooprate_task2_m1_r1 > 60 and self.player.cooprate_task2_m1_r1 < 81: # self.player.cooprate_task2_m1_r1_class = 4 # else: # self.player.cooprate_task2_m1_r1_class = 5 # # if self.player.decision_guess_task1_r1 == self.player.cooprate_task1_r1_class: # self.player.decision_guess_task1_r1_premium = 1 # else: # self.player.decision_guess_task1_r1_premium = 0 # if self.player.decision_guess_task1_r5 == self.player.cooprate_task1_r5_class: # self.player.decision_guess_task1_r5_premium = 1 # else: # self.player.decision_guess_task1_r5_premium = 0 # if self.player.decision_guess_task2_m1_r1 == self.player.cooprate_task2_m1_r1_class: # self.player.decision_guess_task2_m1_r1_premium = 1 # else: # self.player.decision_guess_task2_m1_r1_premium = 0 # # if self.player.randomly_selected_round == 1: # self.player.decision_guess_premium = self.player.decision_guess_task1_r1_premium # elif self.player.randomly_selected_round == 5: # self.player.decision_guess_premium = self.player.decision_guess_task1_r5_premium # elif self.player.randomly_selected_round == 6: # self.player.decision_guess_premium = self.player.decision_guess_task2_m1_r1_premium # else: # self.player.decision_guess_premium = 0 # # self.player.payoff_final = self.player.payoff_eur + self.player.decision_guess_premium*2 # self.player.payoff_final_to_show = round(self.player.payoff_final, ndigits=2) # # if self.player.randomly_selected_round in Constants.rounds_with_guess: # self.player.round_with_guess = 1 # # print(self.participant.vars) # # return {'random_id': self.player.id_random, # 'payoff_int': self.player.payoff_int, # 'randomly_selected_round': self.player.randomly_selected_round, # 'decision_guess_premium': self.player.decision_guess_premium, # 'payoff_eur': self.player.payoff_eur, # 'payoff_eur_to_show': self.player.payoff_eur_to_show, # 'payoff_final': self.player.payoff_final, # 'payoff_final_to_show': self.player.payoff_final_to_show , # 'round_with_guess': self.player.round_with_guess, # 'right_guess_payoff': Constants.right_guess_payoff, # 'n_supergames_task1': Constants.n_supergames_task1, # 'n_selected_match_task2': Constants.n_selected_match_task2 # } # #def after_all_players_arrive(self): #self.player.set_payoff() # def after_all_players_arrive(self): # self.player.set_payoff() #def vars_for_template(self): # return dict(payoff_guess_task=self.player.payoff_guess, # right_guess= self.player.decision_guess_r1 == self.player.coop_rate_r1, # wrong_guess=self.player.decision_guess_r1 != self.player.coop_rate_r1, # ) # def after_all_players_arrive(self): # for g in self.subsession.get_groups(): # for p in g.get_players(): # round_to_pay = random.randint(1,2) # where 4 is your total number of apps, dont forget to 'import random' with the other import statements at the top of the page # if round_to_pay == 1: # p.player.payoff = p.participant.vars.get('decision_r1', 0) # if round_to_pay == 2: # p.player.payoff = p.participant.vars.get('decision_r2', 0) page_sequence = [ MyPage1, MyPage2, Wait, MyPage3 ]