from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'survey' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): age = models.IntegerField() def age_error_message(self, value): if value < 1900 or value > 2020: return 'Year you were born is not given in yyyy format. Please revise your information.' gender = models.StringField( choices=['Male', 'Female'], widget=widgets.RadioSelect ) edu = models.StringField( choices=['No schooling completed', 'Nursery school to 8th grade','9th-12th grade, no diploma','High school graduate-high school diploma or the equivalent (for example: GED)', 'Some college credit, no degree', 'Associate degree (for example: AA, AS)', 'Bachelor\'s degree (for example: BA, AB, BS)', 'Master\'s degree (for example: MA, MS, MEng, Med, MSW, MBA)', 'Professional degree (for example: MD, DDS, DVM, LLB, JD)', 'Doctorate degree (for example: Phd, EdD)'], widget=widgets.RadioSelect ) job = models.StringField( choices=['Employed for wages', 'Self-employed','Out of work and looking for work','Out of work but not currently looking for work','A homemaker','A student','Retired','Unable to work'], widget=widgets.RadioSelect ) income = models.StringField( choices=['Less than $20,000', '$20,000 to $40,000','$40,000 to $60,000','$60,000 to $80,000','$80,000 to $100,000','$100,000 or more'], widget=widgets.RadioSelect ) exp = models.IntegerField() ethnic = models.StringField( choices=['White', 'Mixed/Multiple ethnic groups','Asian', 'Black/African','Other ethnic group'], widget=widgets.RadioSelect )