from os import environ # the environment variable OTREE_PRODUCTION controls whether Django runs in # DEBUG mode. If OTREE_PRODUCTION==1, then DEBUG=False if environ.get('OTREE_PRODUCTION') not in {None, '', '0'}: APPS_DEBUG = False else: APPS_DEBUG = True # setting for integration with AWS Mturk AWS_ACCESS_KEY_ID = environ.get('AWS_ACCESS_KEY_ID') AWS_SECRET_ACCESS_KEY = environ.get('AWS_SECRET_ACCESS_KEY') Qid_qual = '3RM888DJP83NA9MT64121KG66XX2F1' # Qualification of being able to participate an experiment at a specific time Qid_preferences = '3KVW4MB3P584GRBMDJDG682UC8SXJD' # Qualification ID of Preferences Qid_games = '3T04ZEB6XS3KDFO8D7H8LQ8RTR95AQ' # Qualification ID of Preferences Qid_coopetition = '355NDHMUE4408REV3XQ8DXPSH6SCF1' # Qualification ID of Coopetition Qid_games = '355NDHMUE4408REV3XQ8DXPSH6SCF1' # Qualification ID of Coopetition Qid_qual_sandbox = '39GW9SGGAEVYK6G7KXZV3IVP28GROX' # Qualification of being able to participate an experiment at a specific time Qid_coopetition_sandbox = '3KPASCSMA0FIAKFOHBY5SS3J0R98H3' Qid_preferences_sandbox = '3F97VQZTZ52G8HM1KEZAOKL8XI1HUS' Qid_games_sandbox = '38CFB6RWNQR7NMC9VPCCXY3J39IVK9' Test_workerids = ['A2J47PTIYO03TZ','A38IOZBVC9FXFJ'] SESSION_CONFIGS = [ { 'name': 'games', 'display_name': "Strategic Decision-Making", 'num_demo_participants': 4, 'eet_scale': .15, # scaling of EET payoffs for saliency 'payment': True, 'interactive': True, 'app_sequence': [ 'consent', 'beauty', 'meeting_place', 'guess_number', 'repeated_game_randpay', 'repeated_game_PD', 'eet', 'ultimatum', 'payment' ], }, { 'name': 'info_page', 'display_name': "Information Page", 'num_demo_participants': 4, 'app_sequence': [ 'info_page', ], }, { 'name': 'ambidexterity', 'display_name': "Ambidexterity", 'num_demo_participants': 4, 'crt_payoff_per_question': 50, # points for each correct answer 'ravens_payoff_per_question': 50, # points for each correct answer 'decision_time': 45, 'treatment': 'Det0_60', 'language': 'EN', 'debug' : APPS_DEBUG, 'app_sequence': [ 'consent','repeated_game_randpay', 'coopetition_inclass_quiz', 'coopetition_inclass', 'multiarmed_bandit', 'wildcat', 'risk_preferences', 'bret', 'crt', 'ravens_lite', 'payment', ], }, { 'name': 'bret', 'display_name': "bret", 'num_demo_participants': 4, 'debug': APPS_DEBUG, 'app_sequence': [ 'multiarmed_bandit', ], }, { 'name': 'prob', 'display_name': "Probability Judgment", 'num_demo_participants': 4, 'app_sequence': [ 'consent', 'probability_judgment','end' ], }, { 'name': 'heuristics_biases', 'display_name': "Heuristics and Biases", 'num_demo_participants': 6, 'real_world_currency_per_point': 1, 'debug': False, 'ready_to_start': True, # if False, participants cannot proceed 'app_sequence': ['consent', 'confirmation_bias', 'anchoring', 'crt','dinnerware', 'ravens_lite', 'big5', 'anchoring_range','survey_questions', 'barnum', 'end' ], }, { 'name': 'risky', 'display_name': "Individual Decision-Making", 'num_demo_participants': 4, 'payment': True, 'app_sequence': [ 'consent', 'cem', 'survey_choice', 'ambiguity_cem', 'risk_preferences', 'bret', 'payment' ], }, { 'name': 'negotiation_signup', 'display_name': "Negotiation Signup", 'num_demo_participants': 4, 'app_sequence': [ 'negotiation_signup', ], }, { 'name': 'negotiation_groups', 'display_name': "Negotiation Groups", 'num_demo_participants': 4, # 'starting_times': ["2021-08-13T12:00:00+02:00","2021-08-14T12:00:00+02:00","2021-08-15T12:00:00+02:00","2021-08-16T12:00:00+02:00",], # 'ending_times': ["2021-08-15T09:00:00+02:00","2021-08-16T09:00:00+02:00","2021-08-17T09:00:00+02:00","2021-08-11T09:00:00+02:00",], # 'starting_times': ["2022-08-02T21:00:00+02:00","2022-08-01T12:00:00+02:00","2022-08-03T12:00:00+02:00","2022-08-03T12:00:00+02:00",], # 'ending_times': ["2022-08-03T21:00:00+02:00","2022-08-12T12:00:00+02:00","2022-08-15T12:00:00+02:00","2022-08-16T12:00:00+02:00",], 'starting_times': ["2022-08-11T11:00:00+02:00","2022-08-11T11:00:00+02:00","2022-08-13T12:00:00+02:00","2022-08-15T12:00:00+02:00",], 'ending_times': ["2022-08-12T12:00:00+02:00","2022-08-12T12300:00+02:00","2022-08-15T12:00:00+02:00","2022-08-16T12:00:00+02:00",], 'app_sequence': [ 'negotiation_groups', ], }, { 'name': 'welcome', 'display_name': "Welcome Page", 'num_demo_participants': 4, 'app_sequence': [ 'welcome', ], }, { 'name': 'multiarmed_bandit', 'display_name': "Multiarmed Bandit", 'num_demo_participants': 2, 'app_sequence': [ 'risk_preferences', 'crt', 'multiarmed_bandit', 'payment', ], }, { 'name': 'game', 'display_name': "Repeated Game", 'num_demo_participants': 4, 'app_sequence': [ 'eet', 'ultimatum', 'repeated_game_PD', 'repeated_game_randpay', ], }, { 'name': 'test1', 'display_name': "Test1", 'num_demo_participants': 4, 'app_sequence': [ 'ultimatum', 'payment' ], }, { 'name': 'ravens', 'display_name': "ravens", 'num_demo_participants': 2, 'app_sequence': [ 'ravens_lite', ], }, { 'name': 'cem', 'display_name': "certainty equivalent method", 'num_demo_participants': 2, 'app_sequence': [ 'cem', 'ambiguity_cem', ], }, { 'name': 'survey_preference', 'display_name': "Preference Elicitation Experiment", 'num_demo_participants': 2, 'participation_fee': 2, 'avg_payment': 4, 'max_payment': 6, 'crt_payoff_per_question': 20, # points for each correct answer 'ravens_payoff_per_question': 10, # points for each correct answer 'real_world_currency_per_point': 1 / 100, 'debug': False, 'sandbox': False, 'app_sequence': [ 'consent', 'eet', 'cem', 'ambiguity_cem', 'ravens_lite', 'crt', 'payment', # 'lying1', # 'lying2', # 'lying3', ], }, ] # 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 = dict( real_world_currency_per_point=1.00, participation_fee=0.00, doc="" ) # ISO-639 code # for example: de, fr, ja, ko, zh-hans LANGUAGE_CODE = 'en' # e.g. EUR, CAD, GBP, CHF, CNY, JPY # REAL_WORLD_CURRENCY_CODE = 'RMB ' REAL_WORLD_CURRENCY_CODE = '$' USE_POINTS = True POINTS_CUSTOM_NAME = 'Francs' REAL_WORLD_CURRENCY_DECIMAL_PLACES = 2 POINTS_DECIMAL_PLACES = 0 ROOMS = [ { 'name': 'be', 'display_name': 'BE Class', 'participant_label_file': '_rooms/be.txt', }, { 'name': 'mba', 'display_name': 'MBA Class', 'participant_label_file': '_rooms/mba.txt', }, { 'name': 'sdc', 'display_name': 'SDC', 'participant_label_file': '_rooms/sdc.txt', }, { 'name': '1', 'display_name': 'Room 1', 'participant_label_file': '_rooms/1.txt', }, { 'name': '2', 'display_name': 'Room 2', 'participant_label_file': '_rooms/2.txt', }, { 'name': '3', 'display_name': 'Room 3', 'participant_label_file': '_rooms/3.txt', }, ] # AUTH_LEVEL: # this setting controls which parts of your site are freely accessible, and which are password protected: # - If it's not set (the default), then the whole site is freely accessible. # - If you are launching a study and want visitors to only be able to # play your app if you provided them with a start link, set it to STUDY. # - If you would like to put your site online in public demo mode where # anybody can play a demo version of your game, but not access the rest # of the admin interface, set it to DEMO. # for flexibility, you can set it in the environment variable OTREE_AUTH_LEVEL AUTH_LEVEL = environ.get('OTREE_AUTH_LEVEL') AUTH_LEVEL = 'STUDY' ADMIN_USERNAME = environ.get('OTREE_ADMIN_USERNAME') # for security, best to set admin password in an environment variable ADMIN_PASSWORD = environ.get('OTREE_ADMIN_PASSWORD') DEMO_PAGE_INTRO_HTML = """ Here are some oTree games. """ SECRET_KEY = '^pj7p=ng+g+ay66-!=54r4gxbct=b%hwbnzx61h7196*kbzs5o' # if an app is included in SESSION_CONFIGS, you don't need to list it here INSTALLED_APPS = [ 'otree', 'otreeutils', ]