from random import random from otree.api import * doc = """ Experiment ROT RD - Fall 2023 """ class C(BaseConstants): NAME_IN_URL = 'rot_rp' PLAYERS_PER_GROUP = 1 NUM_ROUNDS = 15 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass red_message = models.StringField() blue_decision = models.StringField() accurate = models.BooleanField() reveal = models.StringField(initial='abc') end_reveal = models.StringField() replace_defense = models.StringField() disclosure = models.StringField() no_replace = models.StringField() class Player(BasePlayer): current_block = models.IntegerField() block_round = models.IntegerField() decision_points = models.IntegerField() verify_cost = models.IntegerField() end_verify_cost = models.IntegerField(initial=0) replace_cost = models.IntegerField(initial=0) #red_message = models.StringField() #blue_decision = models.StringField() #accurate = models.BooleanField() #reveal = models.StringField(initial='abc') #end_reveal = models.StringField() #replace_defense = models.StringField() #disclosure = models.StringField() #no_replace = models.StringField() def role(self): if self.id_in_group == 1: return 'blue' control_option = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Yes, I still want to continue with my partner Red Player', 'No, I want to replace my partner Red Player (cost 1pt)'] ) gender = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Male', 'Female'] ) age = models.StringField() race = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['White', 'Black/African American', 'Hispanic/Latino', 'Asian', 'Alaskan or Native American', 'Pacific Islander', 'Other'] ) nationality = models.StringField() response = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Believe', 'Insure', 'Risk-Avert'] ) verification_choice = models.StringField( widget=widgets.RadioSelect, choices=['Yes (cost 6pts)', 'No'] ) replace_option = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Replace (cost 1pt)', 'Do not Replace'] ) replace_option2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Replace (cost 1pt)', 'Do not Replace'] ) trust1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust1Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust1Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust1Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) benevolence1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability1Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity1Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect1Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect1Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect1Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect1Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect1Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust2Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust2Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust2Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) benevolence2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability2Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity2Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect2Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect2Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect2Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect2Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect2Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust3Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability3Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) benevolence3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity3Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) believe3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) believe3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) believe3Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Yes', '2. No'] ) trust4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust4Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trust4Question4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ability4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) benevolence4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity4Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) integrity4Question6 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) future3Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) future3Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) future4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) future4Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect4Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect4Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect4Question1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect4Question2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect4Question3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) man_check1Question1 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_check1Question2 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_task_q1 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_task_q2 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_task_q3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Believe', 'Insure', 'Avert-Risk'] ) man_task_q4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Believe', 'Insure', 'Avert-Risk'] ) man_task_q5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['Accurate', 'Inaccurate'] ) man_process_q1 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q2 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q3 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q4 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q5 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q6 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q7 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q8 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q9 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) man_process_q10 = models.BooleanField( widget=widgets.RadioSelectHorizontal, choices=['True', 'False'] ) ptt_q1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ptt_q2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ptt_q3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ptt_q4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) ptt_q5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect_b1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect_b2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) pos_affect_b3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect_b1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect_b2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) neg_affect_b3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trait_forg_b1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trait_forg_b2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trait_forg_b3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trait_forg_b4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) trait_forg_b5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prev_b1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prev_b2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prev_b3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prev_b4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prev_b5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prom_b1 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prom_b2 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prom_b3 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prom_b4 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) prom_b5 = models.StringField( widget=widgets.RadioSelectHorizontal, choices=['1. Strongly Disagree', '2. Disagree', '3. Neither Agree Nor Disagree', '4. Agree', '5. Strongly Agree'] ) id_num = models.StringField() # Functions def creating_session(subsession): import random message = random.randint(0, 1) group = subsession.get_groups() for g in group: if message == 0: g.red_message = "The number is EVEN" else: g.red_message = "The number is ODD" for g in group: if subsession.round_number != 6: g.accurate = True else: g.accurate = False players = subsession.get_players() for p in players: if p.round_number < 6: p.current_block = 1 elif p.round_number > 10: p.current_block = 3 else: p.current_block = 2 for p in players: if p.round_number not in [5, 10, 15]: p.block_round = p.round_number % 5 elif p.round_number in [5, 10, 15]: p.block_round = 5 # PAGES class consent_form(Page): def is_displayed(player): return player.round_number in [1] class baseline(Page): form_model = 'player' form_fields = ['id_num', 'gender', 'age', 'race', 'nationality', 'ptt_q1', 'ptt_q2', 'ptt_q3', 'ptt_q4', 'ptt_q5', 'neg_affect_b1', 'neg_affect_b2', 'neg_affect_b3', 'pos_affect_b1', 'pos_affect_b2', 'pos_affect_b3'] def is_displayed(player): return player.round_number in [1] class baseline_one(Page): form_model = 'player' form_fields = ['trait_forg_b1', 'trait_forg_b2', 'trait_forg_b3', 'trait_forg_b4', 'trait_forg_b5', 'prev_b1', 'prev_b2', 'prev_b3', 'prev_b4', 'prev_b5', 'prom_b1', 'prom_b2', 'prom_b3', 'prom_b4', 'prom_b5'] def is_displayed(player): return player.round_number in [1] class task_rules(Page): form_model = 'player' form_fields = ['man_task_q1', 'man_task_q3', 'man_task_q4', 'man_task_q5'] def is_displayed(player): return player.round_number in [1] @staticmethod def error_message(player, values): solutions = dict( man_task_q1=False, man_task_q3='Believe', man_task_q4='Avert-Risk', man_task_q5='Inaccurate' ) error_messages = dict() for field_name in solutions: if values[field_name] != solutions[field_name]: error_messages[field_name] = 'This response is incorrect. Please try again.' return error_messages class process_rules1(Page): form_model = 'player' form_fields = ['man_process_q1', 'man_process_q2'] def is_displayed(player): return player.round_number in [1] @staticmethod def error_message(player, values): solutions = dict( man_process_q1=True, man_process_q2=False ) error_messages = dict() for field_name in solutions: if values[field_name] != solutions[field_name]: error_messages[field_name] = 'This response is incorrect. Please try again.' return error_messages class process_rules2(Page): form_model = 'player' form_fields = ['man_process_q10'] def is_displayed(player): return player.round_number in [1] @staticmethod def error_message(player, values): solutions = dict( man_process_q10=False, ) error_messages = dict() for field_name in solutions: if values[field_name] != solutions[field_name]: error_messages[field_name] = 'This response is incorrect. Please try again.' return error_messages class process_rules3(Page): form_model = 'player' form_fields = ['man_process_q6', 'man_process_q7', 'man_process_q8', 'man_process_q9'] def is_displayed(player): return player.round_number in [1] @staticmethod def error_message(player, values): solutions = dict( man_process_q6=True, man_process_q7=False, man_process_q8=True, man_process_q9=True ) error_messages = dict() for field_name in solutions: if values[field_name] != solutions[field_name]: error_messages[field_name] = 'This response is incorrect. Please try again.' return error_messages class receiver(Page): form_model = 'player' def is_displayed(self): return self.round_number in [1, 6, 11] class receiver_2(Page): form_model = 'player' form_fields = ['verification_choice'] def is_displayed(self): return self.round_number not in [1, 6, 11] class survey_1(Page): form_model = 'player' form_fields = ['trust1Question1', 'trust1Question3', 'trust1Question4', 'integrity1Question1', 'integrity1Question2', 'integrity1Question6', 'neg_affect1Question1', 'neg_affect1Question2', 'neg_affect1Question3', 'pos_affect1Question1', 'pos_affect1Question2', 'pos_affect1Question3'] def is_displayed(player): return player.round_number in [5, 10, 15] class survey_2(Page): form_model = 'player' form_fields = ['trust2Question1', 'trust2Question2', 'trust2Question3', 'trust2Question4', 'integrity2Question1', 'integrity2Question2', 'integrity2Question3', 'integrity2Question4', 'integrity2Question5', 'integrity2Question6', 'pos_affect2Question1', 'pos_affect2Question2', 'pos_affect2Question3', 'neg_affect2Question1', 'neg_affect2Question2', 'neg_affect2Question3'] class survey_3(Page): form_model = 'player' form_fields = ['trust3Question1', 'trust3Question3', 'trust3Question4', 'integrity3Question1', 'integrity3Question2', 'integrity3Question6', 'neg_affect3Question1', 'neg_affect3Question2', 'neg_affect3Question3', 'pos_affect3Question1', 'pos_affect3Question2', 'pos_affect3Question3'] def is_displayed(player): return player.round_number in [5, 10] class survey_4(Page): form_model = 'player' form_fields = ['trust4Question1', 'trust4Question3', 'trust4Question4', 'integrity4Question1', 'integrity4Question2', 'integrity4Question6', 'neg_affect4Question1', 'neg_affect4Question2', 'neg_affect4Question3', 'pos_affect4Question1', 'pos_affect4Question2', 'pos_affect4Question3', 'future4Question1', 'future4Question2'] def is_displayed(player): return player.round_number in [5, 10] and player.replace_option == 'Replace (cost 1pt)' class manipulation_check1(Page): form_model = 'player' form_fields = ['man_check1Question1', 'man_check1Question2'] def is_displayed(player): return player.round_number in [1] class verification_wait(WaitPage): form_model = 'group' def after_all_players_arrive(group): players = group.get_players() for p in players: if p.verification_choice == 'Yes (cost 6pts)': group.reveal = 'Your partner Red Player sent an ACCURATE message' p.payoff -= 6 p.verify_cost = 6 else: group.reveal = 'pass' p.payoff += 0 p.verify_cost = 0 def is_displayed(player): return player.round_number not in [1, 6, 11] class verification(Page): def is_displayed(player): return player.round_number not in [1, 6, 11] and player.group.reveal != 'pass' #def before_next_page(player, timeout_happened): #if player.verification_choice == 'Yes (cost 6pts)': #group.reveal = 'Your partner Red Player sent an ACCURATE message' #player.reveal = 'Your partner Red Player sent an ACCURATE message' #player.payoff -= 6 #player.verify_cost = 6 #else: #group.reveal = 'pass' #player.reveal = 'pass' #player.payoff += 0 #player.verify_cost = 0 class rd_6_defense(Page): def is_displayed(player): return player.round_number in [6] class receiver_choice(Page): form_model = 'player' form_fields = ['response'] class disclose_wait(WaitPage): form_model = 'player' def after_all_players_arrive(group): if group.round_number in [5]: group.disclosure = ' "I sent you all accurate msgs this block and Ill continue that so we cna both get max pts."' elif group.round_number in [10]: group.disclosure = '"Hey! I sent you an inaccurate msg in the 1st rd. I am SO SO SORRY! I shouldnt have done that. I feel horrible. Its my fault so you can have all pts I got in that rd and Ill take 0. I promise I wouldnt do it again. So SORRY!"' elif group.round_number in [15]: group.disclosure = '"I dont have anything to share."' else: pass def is_displayed(self): return self.round_number in [5, 10, 15] class self_disclose(Page): form_model = 'player' def is_displayed(self): return self.round_number in [5, 10, 15] class end_verification_choice(Page): form_model = 'player' def is_displayed(self): return self.round_number in [5, 10] class end_verification_wait(WaitPage): def after_all_players_arrive(group): players = group.get_players() for p in players: if group.round_number in [5]: group.end_reveal = "ACCURATE" elif group.round_number in [10]: group.end_reveal = "INACCURATE" else: pass def is_displayed(player): return player.round_number in [5, 10] class end_verification(Page): def is_displayed(player): return player.round_number in [5, 10] class replace_choice(Page): form_model = 'player' form_fields = ['replace_option'] def is_displayed(player): return player.round_number in [5, 10, 15] class replace_choice2(Page): form_model = 'player' form_fields = ['replace_option2'] def is_displayed(player): return player.round_number in [5, 10] and player.replace_option == 'Replace (cost 1pt)' class replace_defense_wait(WaitPage): form_model = 'player' def after_all_players_arrive(group): players = group.get_players() for p in players: if p.replace_option == 'Replace (cost 1pt)': group.replace_defense = '"I understand you wanting to replace me. But if you dont replace me, you can have 12 pts from my score each rd I send you inaccurate msg in the next block. You do not have anything to lose."' p.payoff -= 1 p.replace_cost = 1 else: group.replace_defense = 'abc' p.replace_option2 = 'Do not Replace' p.control_option = '"Yes, I still want to continue with my partner Red Player"' def is_displayed(player): return player.round_number in [5, 10, 15] class replace_defense(Page): form_model = 'player' def is_displayed(player): return player.round_number in [5, 10, 15] and player.replace_option == 'Replace (cost 1pt)' class control_choice(Page): form_model = 'player' form_fields = ['control_option'] def is_displayed(player): return player.round_number in [15] and player.replace_option == 'Do not Replace' and player.in_round( 10).replace_option == 'Replace (cost 1pt)' and player.in_round(10).replace_option2 == 'Do not Replace' class no_replace_wait(WaitPage): def after_all_players_arrive(group): players = group.get_players() for p in players: if p.replace_option2 == 'Replace (cost 1pt)': group.no_replace = 'Your partner Red Player has been replaced. You have now been assigned a new Red Player partner' p.payoff -= 1 p.replace_cost = 1 else: group.no_replace = 'abc' p.replace_cost = 0 def is_displayed(player): return player.round_number in [5, 10] and player.replace_option2 == 'Replace (cost 1pt)' class message_no_replace(Page): def is_displayed(player): return player.round_number in [5, 10] and player.replace_option2 == 'Replace (cost 1pt)' class ResultsWaitPage(WaitPage): def after_all_players_arrive(group): players = group.get_players() for p in players: if p.role() == "blue": if p.response == "Believe": group.blue_decision = "Believe" elif p.response == "Insure": group.blue_decision = "Insure" else: group.blue_decision = "Risk-Avert" for p in players: if group.accurate == True and group.blue_decision == 'Believe': p.payoff += 12 p.decision_points = 12 elif group.accurate == True and group.blue_decision == 'Insure': p.payoff += 9 p.decision_points = 9 elif group.accurate == True and group.blue_decision == 'Risk-Avert': p.payoff += 6 p.decision_points = 6 elif group.accurate == False and group.blue_decision == 'Believe': p.payoff += 0 p.decision_points = 0 elif group.accurate == False and group.blue_decision == 'Insure': p.payoff += 3 p.decision_points = 3 else: p.payoff += 6 p.decision_points = 6 class Results(Page): def is_displayed(group): return group.round_number in [1, 2, 3, 4, 5, 11, 12, 13, 14] class final_page(Page): def is_displayed(group): return group.round_number in [15] class start_wait_time(Page): sec = 7 timeout_seconds = sec def is_displayed(player): return player.round_number in [1, 6, 11] class start_waittime(Page): sec1 = 3 timeout_seconds = sec1 def is_displayed(player): return player.round_number not in [1, 6, 11] class disclosure_wait_time(Page): sec2 = 22 timeout_seconds = sec2 def is_displayed(player): return player.round_number in [5, 10, 15] class replacement_wait_time(Page): sec3 = 17 timeout_seconds = sec3 def is_displayed(player): if player.round_number != 15: return player.replace_option2 == 'Replace (cost 1pt)' else: return False class explain_replace_wait_time(Page): sec4 = 30 timeout_seconds = sec4 def is_displayed(player): return player.replace_option == 'Replace (cost 1pt)' class explain_inaccurate_wait_time(Page): sec = 14 timeout_seconds = sec def is_displayed(player): return player.round_number in [6] class replace_correction_wait(WaitPage): def after_all_players_arrive(group): players = group.get_players() for p in players: if p.round_number not in [5, 10, 15]: p.replace_option = 'Do not Replace' p.replace_option2 = 'Do not Replace' def is_displayed(group): return group.round_number not in [5, 10, 15] page_sequence = [baseline, baseline_one, task_rules, process_rules1, process_rules2, process_rules3, start_waittime, start_wait_time, receiver, receiver_2, verification_wait, verification, replace_correction_wait, receiver_choice, end_verification_wait, end_verification, survey_1, disclosure_wait_time, disclose_wait, self_disclose, survey_3, replace_choice, replace_defense_wait, explain_replace_wait_time, replace_defense, survey_4, replace_choice2, no_replace_wait, replacement_wait_time, message_no_replace, control_choice, ResultsWaitPage, Results, final_page ]