#1 by Mathias
Hi all, I have defined several keys in PARTICIPANT_FIELDS in settings.py but keep getting the Application error (500) KeyError: 'variable_name' despite settings.py reading PARTICIPANT_FIELDS = [ 'variable_name' ] I am using the latest OTree version, running a local dev server, and need to debug this error. Do you have any pointers? 1) Curiously, print() statements --- even if added to lines in creating_session before I assign any keys --- fail to show up neither in the browser console in the terminal console. 2) Secondly, I would like to ask if the PARTICIPANT_FIELDS have any restrictions on form or if I can assign any object (e.g. another object holding objects) as PARTICIPANT_FIELD? Thanks for your help, cheers Jana
#2
by
Shawn
Hi Jana, Would you mind sharing with us how this participant variable is coded in your _init_.py? Shawn
#3 by Mathias
Hi, yes sure, please point out a comma mistake, or coding error, I'd be very glad, I'm quite sure I must have messed something up. This assigns my participant variable `dfe_condition` class Subsession(BaseSubsession): def creating_session(subsession): if subsession.round_number == 1: for p in subsession.get_players(): participant = p.participant # for testing set this to true participant.dfe_condition = True (I *don't* use PyCharm but code it in Sublime Text, but this shouldn't matter.)
#4
by
Chris_oTree
This code is mixing the old and new oTree formats. creating_session should be a function outside of any class. By the way I recommend taking a look at oTree Studio since it prevents this and many other common errors.
#5
by
Furuneko
creating_session() is not a Subsession method, hence it should be placed outside of the class definition. class Subsession(BaseSubsession): pass def creating_session(subsession): if subsession.round_number == 1: for p in subsession.get_players(): participant = p.participant # for testing set this to true participant.dfe_condition = True This kind of errors are prevented by oTree Studio. I would encourage you to give it a try. Best