from otree.api import * doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'exit_questionnaire' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): gender = models.IntegerField( choices=[['1', 'male'], ['2', 'female'], ['3', 'non-binary'], ['4', 'other'], ['5', 'prefer not to say']], doc="""Gender of participant""", label="What gender do you identify as?", widget=widgets.RadioSelect, ) age = models.IntegerField( doc="""Age of participant""", min=18, max=99, label="What is your age?", ) education = models.IntegerField( choices=[['1', 'freshman'], ['2', 'sophomore'], ['3', 'junior'], ['4', 'senior'], ['5', 'graduated with bachelors degree'], ['6', 'graduate student']], doc="""Grade of participant""", label="What grade are you in?", widget=widgets.RadioSelect, ) program = models.IntegerField( choices=[['1', 'Management'], ['2', 'Engineering'], ['3', 'Sciences'], ['4', 'Arts'], ['5', 'Agriculture'], ['6', 'Health'], ['7', 'Other']], doc="""Program of participant""", label="What program is your primary degree in?", widget=widgets.RadioSelect, ) stats_history = models.IntegerField( doc="""Number of stats classes taken""", min=0, max=99, label="How many statistics and/or probability classes have you taken at the college level?", ) trust_metric_strat = models.IntegerField( doc="""Explanation about strategy in trust metric""", label="In Part 2 (the investment decision), which statement BEST describes the strategy you used to make " "your investment decision?", choices=[['1', 'I did not trust myself to make a correct guess.'], ['2', 'I did not trust my partner to make a correct guess.'], ['3', 'I did not see a difference between investing in myself or my partner.'], ['4', 'I did not understand the investment decision.']], widget=widgets.RadioSelect ) cascade_strat = models.IntegerField( doc="""Explanation about strategy in trust metric p1""", label="In part 3 (the repeated guesses), which statement BEST describes the strategy you used to make" "your guesses?", choices=[['1', 'I did not consider what other people did.'], ['2', 'I followed other people sometimes.'], ['3', 'I only followed other people if they had a high score on the quiz.'], ['4', 'I only followed what other people did.'], ['5', 'I did not understand what was going on.']], widget=widgets.RadioSelect ) pred_score_p1 = models.IntegerField( label="How many tokens do you think the person with the HIGH score on the quiz (part 1) invested " "in their partner in Part 2 (0-10)?", min=0, max=10 ) pred_score_p2 = models.IntegerField( label="How many experimental dollars do you think the person with the HIGH score on the quiz (Part 1) earned " "from their guesses in Part 3 (0-30)?", min=0, max=30 ) probability_extrapolation_q1 = models.IntegerField( label="In part 3 let's suppose that you are player 2. The first person guessed Urn A and you drew a WHITE " "ball. What do you believe the approximate percent chance is that the selected urn is Urn A " "(0-100)?" ) probability_extrapolation_q2 = models.IntegerField( label="In part 3 let's suppose that you are player 2. The first person guessed Urn A and you drew a BLACK " "ball. What do you believe the approximate percent chance is that the selected urn is Urn A " "(0-100)?" ) probability_extrapolation_q3 = models.IntegerField( label="In part 3 let's suppose that you are player 1. you drew a BLACK ball. " "What do you believe the approximate percent chance is that the selected urn " "is Urn A (0-100)?" ) trusting = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all trusting) to 5 (very trusting), how trusting do you consider yourself?", widget=widgets.RadioSelectHorizontal, ) relative_skill = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (very), how confident are you in your ability to understand " "statistics and probabilities relative to your peers?", widget=widgets.RadioSelectHorizontal, ) news_media = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all trusting) to 5 (very trusting), how much do you trust major news sources to " "give scientific information?", widget=widgets.RadioSelectHorizontal, ) social_network_politics = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all trusting) to 5 (very trusting), how much do you trust people in your close " "social network (close friends and family) to advise you on political decisions?", widget=widgets.RadioSelectHorizontal, ) social_network_health = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all trusting) to 5 (very trusting), how much do you trust people in your close " "social network (close friends and family) to advise you on health decisions?", widget=widgets.RadioSelectHorizontal, ) social_network_size = models.IntegerField( label="How many people would you consider to be part of your close social network (people that you trust " "with important information)?", min=0, max=100, ) social_network_diversity = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (completely) how much do you agree with the following statement: " "In general, my sources of political information are the same as those in my social network.", widget=widgets.RadioSelectHorizontal, ) political_opinion_diversity = models.IntegerField( label="When making a political decision, approximately how many different news sources do you acquire " "information from before making that decision?", min=0, max=100, ) opinions_on_self_research = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (completely) how much do you agree with the following statement: " "In general, I do a sufficient amount of research before making a political decision.", widget=widgets.RadioSelectHorizontal, ) opinions_on_pub_research = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (completely) how much do you agree with the following statement: " "In general, people do not read enough news sources before making political decisions.", widget=widgets.RadioSelectHorizontal, ) opinions_on_pub_network_inf = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (completely) how much do you agree with the following statement: " "In general, people listen to those in their social network too much before making political decisions.", widget=widgets.RadioSelectHorizontal, ) opinions_on_mainstream_media = models.IntegerField( choices=['1', '2', '3', '4', '5'], label="On a scale of 1 (not at all) to 5 (completely) how much do you agree with the following statement: " "In general, major news sources report different information about politics.", widget=widgets.RadioSelectHorizontal, ) # PAGES class Introduction(Page): pass class Page1(Page): form_model = 'player' form_fields = ['gender', 'age', 'education', 'program', 'stats_history'] class Page2(Page): form_model = 'player' form_fields = ['trust_metric_strat', 'cascade_strat', 'pred_score_p1', 'pred_score_p2', 'probability_extrapolation_q1', 'probability_extrapolation_q2', 'probability_extrapolation_q3'] class Page3(Page): form_model = 'player' form_fields = ['trusting', 'relative_skill', 'news_media', 'social_network_politics', 'social_network_health', 'social_network_size', 'social_network_diversity', 'political_opinion_diversity'] class Page4(Page): form_model = 'player' form_fields = ['opinions_on_self_research', 'opinions_on_pub_research', 'opinions_on_pub_network_inf', 'opinions_on_mainstream_media'] class ResultsWaitPage(WaitPage): pass page_sequence = [Introduction, Page1, Page2, Page3, Page4, ResultsWaitPage]