from os import environ # import sentry_sdk # SENTRY ALLOWS US TO LOG THE ERRORS WHEN RUNNING A HEROKU PROJECT # sentry_sdk.init("https://7b33dbe56758400baac3ad6b3293b694@sentry.io/1503623") # 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'] # Mechanial turk settings for the hits SESSION_CONFIG_DEFAULTS = dict( real_world_currency_per_point= 0.10, participation_fee= 0.00, doc= "", mturk_hit_settings = dict( # TODO: We have to change the keywords (X,Y,Z) and *** description before running the game keywords=['X', 'Y', 'Z'], title='XYZ Game', description='***', frame_height=500, preview_template='global/MTurkPreview.html', minutes_allotted_per_assignment=None, expiration_hours=None, # 7 days # 'grant_qualification_id': 'YOUR_QUALIFICATION_ID_HERE',# to prevent retakes qualification_requirements=[ dict(QualificationTypeId="381E1I1SBHAK4LBSH30W3LA9YPW84V", Comparator="DoesNotExist"), dict(QualificationTypeId="000000000000000000L0", Comparator="GreaterThanOrEqualTo", IntegerValues=[95]), dict(QualificationTypeId="00000000000000000040", Comparator="GreaterThanOrEqualTo", IntegerValues=[500]), dict(QualificationTypeId= "00000000000000000071", Comparator= "EqualTo", LocaleValues= [dict(Country="US")])] )) REAL_WORLD_CURRENCY_DECIMAL_PLACES = 2 SESSION_CONFIGS = [ dict(name= 'Collateral_Game', num_demo_participants= 2, app_sequence= ['MobilePhones', 'Instructions_Quiz', 'Collateral_Game', 'Survey'], use_browser_bots= False,), dict(name= 'Collateral_Quiz', num_demo_participants= 2, app_sequence= ['Instructions_Quiz'], use_browser_bots= False), dict(name= 'Survey', num_demo_participants= 2, app_sequence= ['Survey'], use_browser_bots= False) ] # LOOP BROWSER BOTS: For beta testing (only activate this variable when running a bot loop with LINUX) BROWSER_COMMAND = "/mnt/c/Program Files (x86)/Google/Chrome/Application/chrome.exe" # see the end of this file for the inactive session configs # Consider '', None, and '0' to be empty/false OTREE_PRODUCTION = 1 if environ.get('OTREE_PRODUCTION') not in {None, '', '0'}: DEBUG = False else: DEBUG = False # ISO-639 code # for example: de, fr, ja, ko, zh-hans LANGUAGE_CODE = 'en' # e.g. EUR, GBP, CNY, JPY REAL_WORLD_CURRENCY_CODE = 'USD' USE_POINTS = True POINTS_CUSTOM_NAME = '' ROOMS = [ dict(name='econ101', display_name='Econ 101 class', participant_label_file='_rooms/econ101.txt'), dict(name='live_demo', display_name='Room for live demo (no participant labels)') ] ADMIN_USERNAME = 'admin' # for security, best to set admin password in an environment variable ADMIN_PASSWORD = 'gmu_reu2019' DEMO_PAGE_INTRO_HTML = """ Here are various games implemented with oTree. These games are open source, and you can modify them as you wish. """ # don't share this with anybody. SECRET_KEY = 'i*rdvv1pyx-obr7y3*b=3k0pw=6zd44k_-qle1#ij-pbf&ij6g' # if an app is included in SESSION_CONFIGS, you don't need to list it here INSTALLED_APPS = [ 'otree', 'otree_mturk_utils' ] EXTENSION_APPS = [ 'otree_mturk_utils' ] AWS_ACCESS_KEY_ID = 'AKIAJOAKECUJLWNDIN2Q' AWS_SECRET_ACCESS_KEY = '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' # 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'], # },