from os import environ # if you set a property in SESSION_CONFIG_DEFAULTS, it will be inherited by all configs # in SESSION_CONFIGS, except those that explicitly override it. # the session config can be accessed from methods in your apps as self.session.config, # e.g. self.session.config['participation_fee'] SESSION_CONFIG_DEFAULTS = { 'real_world_currency_per_point': 0.01, 'participation_fee': 5.00, 'doc': "", 'mturk_hit_settings': { 'keywords': ['bonus', 'study'], 'title': 'Decision Making Study', 'description': 'Make decisions to earn points', 'frame_height': 800, 'preview_template': 'global/MTurkPreview.html', 'minutes_allotted_per_assignment': 60, 'expiration_hours': 7*24, # 7 days #'grant_qualification_id': '36QJSG0B8QIBBL8KEBN7ADPKLTYKRT',# to prevent retakes 'qualification_requirements': [ #{ # 'QualificationTypeId': "36QJSG0B8QIBBL8KEBN7ADPKLTYKRT", # 'Comparator': "DoesNotExist", #}, #{ # 'QualificationTypeId': "00000000000000000071", # 'Comparator': "In", # 'LocaleValues': [{'Country': "US", 'Country':"UK", # 'Country':"CA", # 'Country':"AU", # } # ] #}, ] }, } SESSION_CONFIGS = [ { 'name': 'stag_hunt', 'display_name': "SH 1", 'num_demo_participants': 4, 'app_sequence': ['staghunt_training', 'waiting', 'staghunt', 'timeout_end'], }, { 'name': 'stag_hunt_not_amt', 'display_name': "SHL", 'num_demo_participants': 4, 'app_sequence': ['staghunt_training_notamt', 'staghunt_notamt', 'timeout_end_notamt'], }, { 'name': 'stag_hunt_sixsignals', 'display_name': "SH 3", 'num_demo_participants': 4, 'app_sequence': ['staghunt_training', 'waiting', 'staghunt_sixsignals', 'timeout_end'], }, { 'name': 'stag_hunt_sixsignals_not_amt', 'display_name': "SH3L", 'num_demo_participants': 4, 'app_sequence': ['staghunt_training_notamt', 'staghunt_sixsignals_notamt', 'timeout_end_notamt'], }, #{ # 'name': 'prisoners_dilemma_edited', # 'display_name': "P 2", # 'num_demo_participants': 4, # 'app_sequence': ['prisoner_training_2', 'prisoner'], #}, { 'name': 'p_nosignals', 'display_name': "PL", 'num_demo_participants': 4, 'app_sequence': ['prisoner_training_notamt', 'prisoner_nosignals_notamt', 'timeout_end_notamt'], }, { 'name': 'p_sixsignals', 'display_name': "PL3", 'num_demo_participants': 4, 'app_sequence': ['prisoner_training_notamt', 'prisoner_sixsignals_notamt', 'timeout_end_notamt'], }, { 'name': 'prisoner_edited_no_signals', 'display_name': "P 1", 'num_demo_participants': 4, 'app_sequence': ['prisoner_training_2', 'waiting', 'prisoner_nosignals', 'timeout_end'], }, { 'name': 'prisoner_edited_six_signals', 'display_name': "P 3", 'num_demo_participants': 4, 'app_sequence': ['prisoner_training_2', 'waiting', 'prisoner_sixsignals', 'timeout_end'], #, 'waiting', 'prisoner_sixsignals', 'timeout_end' }, #{ # 'name': 'non_coop_no_signals', # 'display_name': "NC 1", # 'num_demo_participants': 4, # 'app_sequence': ['non_coop_training', 'non_coop_nosignals'], #}, #{ # 'name': 'non_coop_two_signals', # 'display_name': "NC 2", # 'num_demo_participants': 4, # 'app_sequence': ['non_coop_training', 'non_coop_twosignals'], #}, #{ # 'name': 'non_coop_six_signals', # 'display_name': "NC 3", # 'num_demo_participants': 4, # 'app_sequence': ['non_coop_training', 'non_coop_sixsignals'], #}, ] # see the end of this file for the inactive session configs # ISO-639 code # for example: de, fr, ja, ko, zh-hans LANGUAGE_CODE = 'en' # e.g. EUR, GBP, CNY, JPY REAL_WORLD_CURRENCY_CODE = 'GBP' USE_POINTS = True REAL_WORLD_CURRENCY_DECIMAL_PLACES = 2 POINTS_DECIMAL_PLACES = 0 ROOMS = [ { 'name': 'econ101', 'display_name': 'Econ 101 class', 'participant_label_file': '_rooms/econ101.txt', }, { 'name': 'live_demo', 'display_name': 'Room for live demo (no participant labels)', }, { 'name': 'training', 'display_name': 'Pilot', 'participant_label_file': '_rooms/Pilot.txt', }, ] ADMIN_USERNAME = 'admin' # for security, best to set admin password in an environment variable ADMIN_PASSWORD = environ.get('OTREE_ADMIN_PASSWORD') AWS_ACCESS_KEY_ID = environ.get('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = environ.get('AWS_SECRET_ACCESS_KEY') DEMO_PAGE_INTRO_HTML = """ Here are some oTree games. """ # don't share this with anybody. SECRET_KEY = '4%0ofw6qhq$dw(b29d54p^bgss=p-j@i+a&gcu^a=)4f-*end7' # if an app is included in SESSION_CONFIGS, you don't need to list it here INSTALLED_APPS = ['otree'] EXTENSION_APPS = [ 'otree_mturk_utils', ] # inactive session configs ### { ### 'name': 'trust', ### 'display_name': "Trust Game", ### 'num_demo_participants': 2, ### 'app_sequence': ['trust', 'payment_info'], ### }, ### { ### 'name': 'prisoner', ### 'display_name': "Prisoner's Dilemma", ### 'num_demo_participants': 2, ### 'app_sequence': ['prisoner', 'payment_info'], ### }, ### { ### 'name': 'ultimatum', ### 'display_name': "Ultimatum (randomized: strategy vs. direct response)", ### 'num_demo_participants': 2, ### 'app_sequence': ['ultimatum', 'payment_info'], ### }, ### { ### 'name': 'ultimatum_strategy', ### 'display_name': "Ultimatum (strategy method treatment)", ### 'num_demo_participants': 2, ### 'app_sequence': ['ultimatum', 'payment_info'], ### 'use_strategy_method': True, ### }, ### { ### 'name': 'ultimatum_non_strategy', ### 'display_name': "Ultimatum (direct response treatment)", ### 'num_demo_participants': 2, ### 'app_sequence': ['ultimatum', 'payment_info'], ### 'use_strategy_method': False, ### }, ### { ### 'name': 'vickrey_auction', ### 'display_name': "Vickrey Auction", ### 'num_demo_participants': 3, ### 'app_sequence': ['vickrey_auction', 'payment_info'], ### }, ### { ### 'name': 'volunteer_dilemma', ### 'display_name': "Volunteer's Dilemma", ### 'num_demo_participants': 3, ### 'app_sequence': ['volunteer_dilemma', 'payment_info'], ### }, ### { ### 'name': 'cournot', ### 'display_name': "Cournot Competition", ### 'num_demo_participants': 2, ### 'app_sequence': [ ### 'cournot', 'payment_info' ### ], ### }, ### { ### 'name': 'principal_agent', ### 'display_name': "Principal Agent", ### 'num_demo_participants': 2, ### 'app_sequence': ['principal_agent', 'payment_info'], ### }, ### { ### 'name': 'dictator', ### 'display_name': "Dictator Game", ### 'num_demo_participants': 2, ### 'app_sequence': ['dictator', 'payment_info'], ### }, ### { ### 'name': 'matching_pennies', ### 'display_name': "Matching Pennies", ### 'num_demo_participants': 2, ### 'app_sequence': [ ### 'matching_pennies', ### ], ### }, ### { ### 'name': 'traveler_dilemma', ### 'display_name': "Traveler's Dilemma", ### 'num_demo_participants': 2, ### 'app_sequence': ['traveler_dilemma', 'payment_info'], ### }, ### { ### 'name': 'bargaining', ### 'display_name': "Bargaining Game", ### 'num_demo_participants': 2, ### 'app_sequence': ['bargaining', 'payment_info'], ### }, ### { ### 'name': 'common_value_auction', ### 'display_name': "Common Value Auction", ### 'num_demo_participants': 3, ### 'app_sequence': ['common_value_auction', 'payment_info'], ### }, ### { ### 'name': 'bertrand', ### 'display_name': "Bertrand Competition", ### 'num_demo_participants': 2, ### 'app_sequence': [ ### 'bertrand', 'payment_info' ### ], ### }, ### { ### 'name': 'real_effort', ### 'display_name': "Real-effort transcription task", ### 'num_demo_participants': 1, ### 'app_sequence': [ ### 'real_effort', ### ], ### }, ### { ### 'name': 'lemon_market', ### 'display_name': "Lemon Market Game", ### 'num_demo_participants': 3, ### 'app_sequence': [ ### 'lemon_market', 'payment_info' ### ], ### }, ### { ### 'name': 'public_goods_simple', ### 'display_name': "Public Goods (simple version from tutorial)", ### 'num_demo_participants': 3, ### 'app_sequence': ['public_goods_simple', 'payment_info'], ### }, ### { ### 'name': 'trust_simple', ### 'display_name': "Trust Game (simple version from tutorial)", ### 'num_demo_participants': 2, ### 'app_sequence': ['trust_simple'], ### },