oTree Forum >

Internal server error

#1 by Anwesha (edited )

Hi there,

Hope you are well. I have recently completed coding my first treatment. And then started to code my survey. Everything seemed to be going well since I did not receive any error in my PyCharm. However, when I ran the survey using otree devserver, I get an error saying 'Internal Server Error'. I tried modifying the survey, such as taking out the questions with checkboxes, but I still keep getting the same error. I am giving some examples of the survey I have designed below:

class C(BaseConstants):
    NAME_IN_URL = 'survey'
    PLAYERS_PER_GROUP = None
    NUM_ROUNDS = 1
    job = [
        dict(name='pt', label="Yes, part time"),
        dict(name='ft', label="Yes, full time"),
        dict(name='no', label="No, I don't"),
        dict(name='benefit', label="Receive benefits/scholarships"),
    ]
    

class Subsession(BaseSubsession):
    pass


class Group(BaseGroup):
    pass


class Player(BasePlayer):
    age = models.StringField(
        choices=[['Less than 18'], ['18-24'], ['25-34'], ['35-44'], ['45-54'], ['Greater than 55'],
                 ['Prefer not to answer']],
        label='1. How old are you?',
        widget=widgets.RadioSelect,
    )
    pt = models.BooleanField(blank=True)
    ft = models.BooleanField(blank=True)
    no = models.BooleanField(blank=True)
    
# FUNCTIONS
# PAGES
class Demographics(Page):
    form_model = 'player'
    form_fields = ['age']

class Job(Page):
    form_model = 'player'

    @staticmethod
    def get_form_fields(player: BasePlayer):
        return [lang['name'] for lang in C.job]

    @staticmethod
    def error_message(player: BasePlayer, values):
        # print('values is', values)
        num_selected = 0
        for lang in C.job:
            if values[lang['name']]:
                num_selected += 1
        if num_selected < 1:
            return "You must select at least 1 option."


page_sequence = [Demographics, Job]

#2 by Fanist

let the 'age' in Player field be:

class Player(BasePlayer):
    age = models.StringField(
        choices=['Less than 18', '18-24', '25-34', '35-44', '45-54', 'Greater than 55',
                 'Prefer not to answer'],
        label='1. How old are you?',
        widget=widgets.RadioSelect,
    )

#3 by Anwesha

Thank you so much, it worked.

Write a reply

Set forum username