from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ Part 3 - Questionnaire >> Players A Part (1/4) = Socio-Demographics Part (2/4) = Part (3/4) = Part (4/4) = """ class Constants(BaseConstants): name_in_url = 'code_SS_part3_questionnaire' players_per_group = 4 # --> only relevant for Players B - Part 2 # basically the group brings together all Players A from the same batch/session num_rounds = 1 class Subsession(BaseSubsession): n_tokens_equal_to_1_eur = models.IntegerField() def creating_session(self): self.n_tokens_equal_to_1_eur = self.session.config['n_tokens_equal_to_1_eur'] for p in self.get_players(): p.n_tokens_equal_to_1_eur = self.session.config['n_tokens_equal_to_1_eur'] # Conversion rate: number of tokens equal to 1 Euro class Group(BaseGroup): pass class Player(BasePlayer): # n_tokens_equal_to_1_eur = models.IntegerField() # # Part (1/3) - SocioDem questions # quest_sociodem_n1 = models.IntegerField(label="", min=18, max=100) quest_sociodem_n2 = models.IntegerField(label="", choices=[[1, 'Femmina'], [2, 'Maschio'], [3, 'Altro / Non-Binario'], [4, 'Preferisco non rispondere']], widget=widgets.RadioSelect, ) quest_sociodem_n3 = models.IntegerField(label="", choices=[[0, 'Non sono laureato '], [1, 'Matematica, Fisica'], [2, 'Economia, Statistica'], [3, 'Business & Management'], [4, 'Biologia, Chimica & altre Scienze Naturali'], [5, 'Ingegneria & Architettura'], [6, 'Lingue'], [7, 'Studi Classici'], [8, 'Arte'], [9, 'Psicologia, Sociologia & altre Scienze Sociali'], [10, 'Legge & Scienze Politiche'], [11, 'Medicine & altre Scienze della Vita'], [12, 'Altro']], widget=widgets.RadioSelect, ) quest_sociodem_n4 = models.StringField(label="", blank=True) # # Part (2/3) - SocioDem questions # quest_psm_qual_n1 = models.IntegerField(label="", widget=widgets.RadioSelect, choices=[[0, '0 - Assolutamente non disposto/a a correre rischi'], [1, '1'], [2, '2'], [3, '3'], [4, '4'], [5, '5'], [6, '6'], [7, '7'], [8, '8'], [9, '9'], [10, '10 - Completamente disposto/a a correre rischi'], [99, 'Non so']] ) quest_psm_quant_n1 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n2 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n3 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n4 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n5 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n6 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n7 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n8 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n9 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n10 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n11 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n12 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n13 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n14 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n15 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n16 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n17 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n18 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n19 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n20 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n21 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n22 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n23 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n24 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n25 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n26 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n27 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n28 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n29 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n30 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) quest_psm_quant_n31 = models.IntegerField(label="", choices=[[0, 'Lotteria (50% possibilità di ricevere 150 Euro e 50% di ricevere nulla) '], [1, 'Pagamento certo'] ], widget=widgets.RadioSelect, ) # quest_psm_quant_switching_row = models.IntegerField() # # Part (1/3) - SocioDem questions # quest_numeracy_n1 = models.IntegerField(label="", min=0, max=100) quest_numeracy_n2 = models.IntegerField(label="", min=0, max=50) quest_numeracy_n3 = models.IntegerField(label="", min=0, max=70) quest_numeracy_n4 = models.IntegerField(label="", min=0, max=100) #