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': 1.00, 'participation_fee': 5.00, 'doc': "", } SESSION_CONFIGS = [ { 'name': 'd_evaluation_T1', 'num_demo_participants': 3, 'app_sequence': ['d_evaluations_T1', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma1', 'd_evaluations_payment' ], }, { 'name': 'd_evaluation_T2', 'num_demo_participants': 6, 'app_sequence': ['d_evaluations_T2', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma2', 'd_evaluations_payment' ], }, { 'name': 'd_evaluation_T2_1', 'num_demo_participants': 3, 'app_sequence': ['d_evaluations_T2', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma1', 'd_evaluations_payment' ], }, { 'name': 'd_evaluation_T3', 'num_demo_participants': 3, 'app_sequence': ['d_evaluations_T3', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma2', 'd_evaluations_payment' ], }, { 'name': 'd_evaluation_T4', 'num_demo_participants': 3, 'app_sequence': ['d_evaluations_T4', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma1', 'd_evaluations_payment' ], }, { 'name': 'e_evaluations_T23', 'num_demo_participants': 3, 'app_sequence': ['e_evaluations_T23', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma1', 'd_evaluations_payment' ], }, { 'name': 'PD1', 'num_demo_participants': 1, 'app_sequence': [ 'd_prisoners_dilemma1' ], }, { 'name': 'PD2', 'num_demo_participants': 2, 'app_sequence': [ 'd_prisoners_dilemma2' ], }, { 'name': 'PD3', 'num_demo_participants': 2, 'app_sequence': [ 'd_prisoners_dilemma3' ], }, #{ # 'name': 'belief_endo', # 'num_demo_participants': 2, # 'app_sequence': ['b_belief_formation_Endo' # ], #}, #{ # 'name': 'belief_exo', # 'num_demo_participants': 2, # 'app_sequence': ['b_belief_formation_Exo' # ], #}, #{ # 'name': 'd_evaluation_T1_2', # 'num_demo_participants': 6, # 'app_sequence': ['d_evaluations_T1', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma', 'd_evaluations_payment' # ], #}, #{ # 'name': 'd_evaluation_T2_2', # 'num_demo_participants': 6, # 'app_sequence': ['d_evaluations_T2', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma', 'd_evaluations_payment' # ], #}, #{ # 'name': 'd_evaluation_T3_2', # 'num_demo_participants': 6, # 'app_sequence': ['d_evaluations_T3', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma', 'd_evaluations_payment' # ], #}, #{ # 'name': 'd_evaluation_T4_2', # 'num_demo_participants': 6, # 'app_sequence': ['d_evaluations_T4', 'd_evaluation_post_questionnaire', 'd_prisoners_dilemma', 'd_evaluations_payment' # ], #}, #{ # 'name': 'class_prisoners_dilemma', # 'num_demo_participants': 2, # 'app_sequence': ['class_prisoners_dilemma' # ], #}, #{ # 'name': 'class_ultimatum', # 'num_demo_participants': 2, # 'app_sequence': ['class_ultimatum' # ], #}, #{ # 'name': 'class_trust_simple', # 'num_demo_participants': 2, # 'app_sequence': ['class_trust_simple' # ], #}, #{ # 'name': 'class_public_goods_simple', # 'num_demo_participants': 3, # 'app_sequence': ['class_public_goods_simple' # ], #}, #{ # 'name': 'class_bertrand', # 'num_demo_participants': 2, # 'app_sequence': ['class_bertrand' # ], #}, #{ # 'name': 'class_matching_pennies', # 'num_demo_participants': 2, # 'app_sequence': ['class_matching_pennies' # ], #}, #{ # 'name': 'redistribution59', # 'num_demo_participants': 2, # 'app_sequence': ['c_redistribution59','c_post_questionnaire','c_redistribution_payment' # ], #}, { 'name': 'contract_LD600', 'num_demo_participants': 2, 'app_sequence': ['c_Multiple_LD600_quiz','c_Multiple_LD600','c_post_questionnaire','d_prisoners_dilemma3','c_Multiple_payment' ], }, { 'name': 'contract_OD600', 'num_demo_participants': 2, 'app_sequence': ['c_Multiple_OD600_quiz','c_Multiple_OD600','c_post_questionnaire','d_prisoners_dilemma3','c_Multiple_payment' ], }, { 'name': 'contract_OD600chat', 'num_demo_participants': 2, 'app_sequence': ['c_Multiple_OD600chat_quiz','c_Multiple_OD600chat','c_post_questionnaire','d_prisoners_dilemma2','c_Multiple_payment' ], }, { 'name': 'contract_LD1000', 'num_demo_participants': 2, 'app_sequence': ['c_Multiple_LD1000_quiz','c_Multiple_LD1000','c_post_questionnaire','c_Multiple_payment' ], }, { 'name': 'contract_OD1000', 'num_demo_participants': 2, 'app_sequence': ['c_Multiple_OD1000_quiz','c_Multiple_OD1000','c_post_questionnaire','c_Multiple_payment' ], }, # { # 'name': 'conduct_base_SPM', # 'num_demo_participants': 2, # 'app_sequence': ['a_Game1_Page', # 'a_base_SH', # 'a_Game2_Page', # 'a_base_PD', # 'a_Game3_Page', # 'a_base_MM', # 'a_post_questionnaire', # 'a_payment_SPM'], # }, # { # 'name': 'conduct_intention_PMS', # 'num_demo_participants': 2, # 'app_sequence': ['a_Game1_Page', # 'a_intention_PD', # 'a_Game2_Page', # 'a_intention_MM', # 'a_Game3_Page', # 'a_intention_SH', # 'a_post_questionnaire', # 'a_payment_PMS'], #}, # { # 'name': 'conduct_request_MSP', # 'num_demo_participants': 2, # 'app_sequence': ['a_Game1_Page', # 'a_request_MM', # 'a_Game2_Page', # 'a_request_SH', # 'a_Game3_Page', # 'a_request_PD', # 'a_post_questionnaire', # 'a_payment_MSP'], # }, #{ #'name': 'conduct_free_MSP', #'num_demo_participants': 2, #'app_sequence': ['a_Game1_Page', # 'a_free_MM', # 'a_Game2_Page', # 'a_free_SH', # 'a_Game3_Page', # 'a_free_PD', # 'a_post_questionnaire', # 'a_payment_MSP'], # }, #{ # 'name': 'conduct_chat_SPM', # 'num_demo_participants': 2, # 'app_sequence': ['conduct_chat_SH1', # 'conduct_chat_PD2', # 'conduct_chat_MM3', # 'conduct_communication_post_questionnaire'], #}, #{ # 'name': 'conduct_chat_PMS', # 'num_demo_participants': 2, # 'app_sequence': ['conduct_chat_PD1', # 'conduct_chat_MM2', # 'conduct_chat_SH3', # 'conduct_communication_post_questionnaire'], #}, #{ # 'name': 'conduct_chat_MSP', # 'num_demo_participants': 2, # 'app_sequence': ['conduct_chat_MM1', # 'conduct_chat_SH2', # 'conduct_chat_PD3', # 'conduct_communication_post_questionnaire'], # }, # { # 'name': 'conduct_questionnaire', # 'num_demo_participants': 2, # 'app_sequence': ['conduct_communication_post_questionnaire', # ], #}, # { # 'name': 'class_questionnaire', # 'num_demo_participants': 2, # 'app_sequence': ['class_questionnaire', # ], #}, # { # 'name': 'Beauty_Contest', # 'num_demo_participants': 1, # 'app_sequence': ['class_guess_two_thirds', # ], # }, # { # 'name': 'Public_Goods', # 'num_demo_participants': 3, # 'app_sequence': ['class_public_goods_simple'], # }, # { # 'name': 'Prisoners_Dilemma', # 'num_demo_participants': 2, # 'app_sequence': ['class_prisoners_dilemma', # ], # }, #{ # 'name': 'Bertrand', # 'num_demo_participants': 2, # 'app_sequence': ['class_bertrand', # ], #}, #{ # 'name': 'Matching_Pennies', #'num_demo_participants': 2, #'app_sequence': ['class_matching_pennies'], # }, # { # 'name': 'Quiz_1', # 'num_demo_participants': 1, # 'app_sequence': ['class_quiz_comparative_advantage', 'class_guess_two_thirds'], #}, #{ # 'name': 'Quiz_2', #'num_demo_participants': 1, #'app_sequence': ['class_quiz_elasticities'], # }, # { # 'name': 'Public_Goods', # 'num_demo_participants': 3, # 'app_sequence': ['class_public_goods_notalk24','class_public_goods_notalk18','class_public_goods_simple'], # }, ] # 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 = 'USD' USE_POINTS = True 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': 'econ_class', 'display_name': 'Econ class (no participant labels)', }, { 'name': 'econ_lab', 'display_name': 'Experimental Economics Lab', }, ] # 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') ADMIN_USERNAME = 'admin' # for security, best to set admin password in an environment variable ADMIN_PASSWORD = 'Wsy@123930' # Consider '', None, and '0' to be empty/false DEBUG = (environ.get('OTREE_PRODUCTION') in {None, '', '0'}) 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^ybhb6q89qh_h7jlnq$2clu^)0jnir=fu95q=i$5^a24_mi#y' # if an app is included in SESSION_CONFIGS, you don't need to list it here INSTALLED_APPS = ['otree'] # inactive session configs #{ # 'name': 'public_goods', # 'display_name': "Public Goods", # 'num_demo_participants': 3, # 'app_sequence': ['public_goods', 'payment_info'], #}, #{ # 'name': 'guess_two_thirds', # 'display_name': "Guess 2/3 of the Average", # 'num_demo_participants': 3, # 'app_sequence': ['guess_two_thirds', 'payment_info'], #}, #{ # 'name': 'survey', # 'num_demo_participants': 1, # 'app_sequence': ['survey', 'payment_info'], #}, #{ # 'name': 'quiz', # 'num_demo_participants': 1, # 'app_sequence': ['quiz'], # }, ### { ### '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': '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'], ### },