from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from otreeutils.surveys import create_player_model_for_survey # Import modules from survey.modules.boredom_proneness import boredom_proneness from survey.modules.state_boredom_after import state_boredom_after from survey.modules.ibt import ibt # Additional libraries import random import json class Constants(BaseConstants): name_in_url = 'Survey' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def creating_session(self): for i, p in enumerate(self.get_players()): pass class Group(BaseGroup): pass # define survey questions per page # for each page define a page title and a list of questions # the questions have a field name, a question text (input label), and a field type (model field class) SURVEY_DEFINITIONS = ( boredom_proneness, ibt, state_boredom_after, ) OTHER_FIELDS = { 'feedback': models.LongStringField(label="Thank you for taking part in the study! I would be very happy if you could leave me your feedback."), } # now dynamically create the Player class from the survey definitions # we can also pass additional (non-survey) fields via `other_fields` Player = create_player_model_for_survey('survey.models', SURVEY_DEFINITIONS, other_fields=OTHER_FIELDS)