from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'projectgame' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Age = models.StringField(label="How old are you?", choices=[["18-25 y.o.","18-25 y.o."],["26-35 y.o.","26-35 y.o."],["36-45 y.o.","36-45 y.o."],["46-55 y.o.","46-55 y.o."],["56-65 y.o.","56-65 y.o."],["More than 65","More than 65 y.o."]]) Degree = models.StringField(label="What is your level of education (completed or in completion)?", choices=[["Primary education","Primary education"],["Lower secondary education","Lower secondary education"],["Higher secondary education","Higher secondary education"],["Bachelor's or equivalent","Bachelor's or equivalent"],["Master's or equivalent","Master's or equivalent"],["PhD's or equivalent","PhD's or equivalent"]]) Gender = models.StringField(label="What gender you identify in?", choices=[["Male","Male"],["Female","Female"],["Other","Other"]]) Answer = models.StringField(label="Do you accept the offer?", choices=[["Accept","Accept"],["Reject","Reject"]]) Country = models.StringField(label="What is your nationality?", choices=[["Afghan","Afghan"], ["Albanian","Albanian"], ["Algerian","Algerian"], ["American","American"], ["Andorran","Andorran"], ["Angolan","Angolan"], ["Argentinian","Argentinian"], ["Armenian","Armenian"], ["Australian","Australian"], ["Austrian","Austrian"], ["Azerbaijani","Azerbaijani"], ["Bahamian","Bahamian"], ["Bahraini","Bahraini"], ["Bangladeshi","Bangladeshi"], ["Barbadian","Barbadian"], ["Belarusian","Belarusian"], ["Belgian","Belgian"], ["Belizean","Belizean"], ["Beninese","Beninese"], ["Bermudian","Bermudian"], ["Bhutanese","Bhutanese"], ["Bolivian","Bolivian"], ["Bosnian","Bosnian"], ["Botswanan","Botswanan"], ["Brazilian","Brazilian"], ["British","British"], ["Bulgarian","Bulgarian"], ["Burkinese","Burkinese"], ["Burundian","Burundian"], ["Cambodian","Cambodian"], ["Cameroonian","Cameroonian"], ["Canadian","Canadian"], ["Cape Verdean","Cape Verdean"], ["Chadian","Chadian"], ["Chilean","Chilean"], ["Chinese","Chinese"], ["Colombian","Colombian"], ["Congolese","Congolese"], ["Costa Rican","Costa Rican"], ["Croat","Croat"], ["Cuban","Cuban"], ["Cypriot","Cypriot"], ["Czech","Czech"], ["Danish","Danish"], ["Djiboutian","Djiboutian"], ["Dominican","Dominican"], ["Dominican","Dominican"], ["Dutch","Dutch"], ["Ecuadorean","Ecuadorean"], ["Egyptian","Egyptian"], ["Emirati","Emirati"], ["Eritrean","Eritrean"], ["Estonian","Estonian"], ["Ethiopian","Ethiopian"], ["Fijian","Fijian"], ["Finnish","Finnish"], ["French","French"], ["Gabonese","Gabonese"], ["Gambian","Gambian"], ["Georgian","Georgian"], ["German","German"], ["Ghanaian","Ghanaian"], ["Greek","Greek"], ["Grenadian","Grenadian"], ["Guatemalan","Guatemalan"], ["Guinean","Guinean"], ["Guinean","Guinean"], ["Guyanese","Guyanese"], ["Haitian","Haitian"], ["Honduran","Honduran"], ["Hungarian","Hungarian"], ["Icelandic","Icelandic"], ["Indian","Indian"], ["Indonesian","Indonesian"], ["Iranian","Iranian"], ["Iraqi","Iraqi"], ["Ireland","Ireland"], ["Israeli","Israeli"], ["Italian","Italian"], ["Jamaican","Jamaican"], ["Japanese","Japanese"], ["Jordanian","Jordanian"], ["Kazakh","Kazakh"], ["Kenyan","Kenyan"], ["Kuwaiti","Kuwaiti"], ["Latvian","Latvian"], ["Lebanese","Lebanese"], ["Liberian","Liberian"], ["Libyan","Libyan"], ["Lithuanian","Lithuanian"], ["Luxembourgish","Luxembourgish"], ["Madagascan","Madagascan"], ["Malawian","Malawian"], ["Malaysian","Malaysian"], ["Maldivian","Maldivian"], ["Malian","Malian"], ["Maltese","Maltese"], ["Mauritanian","Mauritanian"], ["Mauritian","Mauritian"], ["Mexican","Mexican"], ["Monacan","Monacan"], ["Mongolian","Mongolian"], ["Montenegrin","Montenegrin"], ["Moroccan","Moroccan"], ["Mozambican","Mozambican"], ["Namibian","Namibian"], ["Nepalese","Nepalese"], ["New Zealand","New Zealand"], ["Nicaraguan","Nicaraguan"], ["Nigerian","Nigerian"], ["Nigerien","Nigerien"], ["North Korean","North Korean"], ["Norwegian","Norwegian"], ["Omani","Omani"], ["Pakistani","Pakistani"], ["Panamanian","Panamanian"], ["Paraguayan","Paraguayan"], ["Peruvian","Peruvian"], ["Philippine","Philippine"], ["Polish","Polish"], ["Polynesian","Polynesian"], ["Portuguese","Portuguese"], ["Qatari","Qatari"], ["Romanian","Romanian"], ["Rwandan","Rwandan"], ["Salvadorean","Salvadorean"], ["Samoan","Samoan"], ["Saudi Arabian","Saudi Arabian"], ["Senegalese","Senegalese"], ["Serb or Serbian","Serb or Serbian"], ["Sierra Leonian","Sierra Leonian"], ["Singaporean","Singaporean"], ["Slomoni","Slomoni"], ["Slovak","Slovak"], ["Slovenian","Slovenian"], ["Somali","Somali"], ["South African","South African"], ["South Korean","South Korean"], ["Spanish","Spanish"], ["Sri Lankan","Sri Lankan"], ["Sudanese","Sudanese"], ["Surinamese","Surinamese"], ["Swazi","Swazi"], ["Swedish","Swedish"], ["Swiss","Swiss"], ["Taiwanese","Taiwanese"], ["Tajik","Tajik"], ["Thai","Thai"], ["Togolese","Togolese"], ["Trinidadian","Trinidadian"], ["Tunisian","Tunisian"], ["Turkish","Turkish"], ["Turkoman","Turkoman"], ["Tuvaluan","Tuvaluan"], ["Ugandan","Ugandan"], ["Ukrainian","Ukrainian"], ["Uruguayan","Uruguayan"], ["Uzbek","Uzbek"], ["Vanuatuan","Vanuatuan"], ["Venezuelan","Venezuelan"], ["Vietnamese","Vietnamese"], ["Yemeni","Yemeni"], ["Zambian","Zambian"]]) Treatment = models.IntegerField(label="To prove you are not a robot, can you write here how much did you obtain in the die roll?") Payoff = models.IntegerField(label="To prove you understood well the game, can you write here how much will the payoff be if you will ACCEPT?") # PAGES class Explanation(Page): pass class Consent(Page): pass class Information(Page): form_model = 'player' form_fields = ['Age', 'Gender', 'Degree','Country'] class Draw(Page): def vars_for_template(player): import random d = random.randint(1,200) return dict( d=d, ) class Result(Page): form_model = 'player' form_fields = ['Answer','Treatment','Payoff'] @staticmethod def vars_for_template(player): import random a = random.randint(1,4) b = random.randint(1,2) c = 10-a d = random.randint(1,200) return dict( a=a, b=b, c=c, d=d ) page_sequence = [Explanation, Consent, Information, Result]