from os import environ SESSION_CONFIGS = [ # Built-in simple demos dict( name='guess_two_thirds', display_name="Guess 2/3 of the Average", app_sequence=['guess_two_thirds', 'payment_info'], num_demo_participants=3, ), dict( name='survey', app_sequence=['survey', 'payment_info'], num_demo_participants=1 ), # Class demo sequences (approved scaffold) dict( name='classic_baseline', display_name='Demo: Classical Baseline', app_sequence=['sequence_welcome', 'prisoner', 'trust_simple', 'public_goods_simple', 'payment_info'], num_demo_participants=6, # even; multiple of 3 recommended for public goods # Optional: override prisoner.Introduction timeout (seconds) # prisoner_intro_timeout=100, doc='Welcome → PD → Trust (simple) → Public Goods (groups of 3)' ), dict( name='policy_nudges', display_name='Demo: Policy Framing Tweaks', app_sequence=['policy_dictator_norms', 'policy_trust_framed', 'policy_public_goods_defaults', 'payment_info'], num_demo_participants=6, # multiple of 6 for 2/2/3 grouping doc='Instruction framing and light norm/default cues; no logic changes' ), dict( name='guessing_game_demo', display_name='Demo: Guessing Game with Reference Point', app_sequence=['policy_guess_anchoring', 'payment_info'], num_demo_participants=3, doc='Guess 2/3 with a randomly assigned reference point; flexible group size' ), dict( name='survey_biases', display_name='Demo: Survey Tasks', app_sequence=['policy_survey_biases', 'payment_info'], num_demo_participants=1, doc='Estimation intervals, self-assessment, and information-based survey items.' ), dict( name='survey_biases_full', display_name='Survey: Estimation, Information, and Recall', app_sequence=['policy_survey_biases', 'payment_info'], num_demo_participants=1, doc='One-player survey combining estimation, information, and recall tasks.' ), ] # 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="" ) PARTICIPANT_FIELDS = ['show_anchor', 'anchor_value'] SESSION_FIELDS = [] # 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 = [ 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)'), dict(name='lab_demo', display_name='Behavioral Policy Lab Demo', participant_label_file='_rooms/lab_demo.txt'), ] ADMIN_USERNAME = 'admin' # 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 = '5788694860356' INSTALLED_APPS = ['otree']