from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import json class Q1(Page): form_model = 'player' form_fields = ['choice1'] class Q2(Page): form_model = 'player' form_fields = ['choice2'] class Q3(Page): form_model = 'player' form_fields = ['choice3'] class Q4(Page): form_model = 'player' form_fields = ['choice4'] class Q5(Page): form_model = 'player' form_fields = ['choice_5'] class Q6(Page): form_model = 'player' form_fields = ['choice_6'] class Q7(Page): form_model = 'player' form_fields = ['choice_7'] class Q8(Page): form_model = 'player' form_fields = ['choice_8'] class Q9(Page): form_model = 'player' form_fields = ['choice_9'] class Q10(Page): form_model = 'player' form_fields = ['choice_10'] class Q11(Page): form_model = 'player' form_fields = ['choice_11'] class Q12(Page): form_model = 'player' form_fields = ['choice_12'] class Q13(Page): form_model = 'player' form_fields = ['choice_13'] class Q14(Page): form_model = 'player' form_fields = ['choice_14'] class Q15(Page): form_model = 'player' form_fields = ['choice_15'] class Q16(Page): form_model = 'player' form_fields = ['choice_16'] class Q17(Page): form_model = 'player' form_fields = ['choice_17'] class Q18(Page): form_model = 'player' form_fields = ['choice_18'] class Q19(Page): form_model = 'player' form_fields = ['choice_19'] class Q20(Page): form_model = 'player' form_fields = ['choice_20'] class Q21(Page): form_model = 'player' form_fields = ['choice_21'] initial_page_sequence = [ Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21 ] page_sequence = [ ] class MyPage(Page): def inner_dispatch(self): page_seq = int(self.__class__.__name__.split('_')[1]) page_to_show = json.loads(self.player.page_sequence)[page_seq] self._is_frozen = False self.__class__ = globals()[page_to_show] return super(globals()[page_to_show], self).inner_dispatch() for i, _ in enumerate(initial_page_sequence): NewClassName = "Page_{}".format(i) A = type(NewClassName, (MyPage,), {}) locals()[NewClassName] = A page_sequence.append(locals()[NewClassName])