from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): pass # Seiten für agile Projektplanung class erste_Sprintplanung(Page): form_model = 'player' form_fields = ['modul_1', 'modul_2', 'modul_3', 'modul_4'] def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' # Prüfen, ob mindestens ein Modul zur bearbeitung ausgewählt wurde def error_message(self, values): if values['modul_1'] == 'im folgenden Sprint nicht bearbeiten' and values['modul_2'] == 'im folgenden Sprint nicht bearbeiten' and values['modul_3'] == 'im folgenden Sprint nicht bearbeiten' and values['modul_4'] == 'im folgenden Sprint nicht bearbeiten': return 'Du musst mindestens ein Modul auswählen' def before_next_page(self): if self.player.modul_1 == 'im folgenden Sprint bearbeiten': self.player.modul_1 = 'in Sprint 1 bearbeitet' if self.player.modul_2 == 'im folgenden Sprint bearbeiten': self.player.modul_2 = 'in Sprint 1 bearbeitet' if self.player.modul_3 == 'im folgenden Sprint bearbeiten': self.player.modul_3 = 'in Sprint 1 bearbeitet' if self.player.modul_4 == 'im folgenden Sprint bearbeiten': self.player.modul_4 = 'in Sprint 1 bearbeitet' timeout_seconds = 60 class zweite_Sprintplanung(Page): form_model = 'player' #dynamischer Input aller Felder, die noch nicht im vorherigen Sprint bearbeitet wurden def get_form_fields(self): if self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_3', 'modul_4'] elif self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten' : return ['modul_1', 'modul_3', 'modul_4'] elif self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2', 'modul_4'] elif self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2', 'modul_3'] elif self.player.modul_1 and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_3', 'modul_4'] elif self.player.modul_1 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_4'] elif self.player.modul_1 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_3'] elif self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_4'] elif self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_3'] elif self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2'] elif self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_4'] elif self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_3'] elif self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2'] elif self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1'] def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' and not (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'in Sprint 1 bearbeitet') def before_next_page(self): if self.player.modul_1 == 'im folgenden Sprint bearbeiten': self.player.modul_1 = 'in Sprint 2 bearbeitet' if self.player.modul_2 == 'im folgenden Sprint bearbeiten': self.player.modul_2 = 'in Sprint 2 bearbeitet' if self.player.modul_3 == 'im folgenden Sprint bearbeiten': self.player.modul_3 = 'in Sprint 2 bearbeitet' if self.player.modul_4 == 'im folgenden Sprint bearbeiten': self.player.modul_4 = 'in Sprint 2 bearbeitet' timeout_seconds = 60 class dritte_Sprintplanung(Page): form_model = 'player' # dynamischer Input aller Felder, die noch nicht im vorherigen Sprint bearbeitet wurden def get_form_fields(self): if (self.player.modul_1 == 'in Sprint 1 bearbeitet' or self.player.modul_1 == 'in Sprint 2 bearbeitet') and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_3', 'modul_4'] elif (self.player.modul_2 == 'in Sprint 1 bearbeitet' or self.player.modul_2 == 'in Sprint 2 bearbeitet') and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten' : return ['modul_1', 'modul_3', 'modul_4'] elif (self.player.modul_3 == 'in Sprint 1 bearbeitet' or self.player.modul_3 == 'in Sprint 2 bearbeitet') and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2', 'modul_4'] elif (self.player.modul_3 == 'in Sprint 1 bearbeitet' or self.player.modul_3 == 'in Sprint 2 bearbeitet') and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2', 'modul_3'] elif ((self.player.modul_1 and self.player.modul_2 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_2 == 'in Sprint 2 bearbeitet')) and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_3', 'modul_4'] elif ((self.player.modul_1 and self.player.modul_3 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_3 == 'in Sprint 2 bearbeitet')) and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_4'] elif ((self.player.modul_1 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2', 'modul_3'] elif ((self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet') or (self.player.modul_2 and self.player.modul_3 == 'in Sprint 2 bearbeitet')) and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_4'] elif ((self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_2 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_3'] elif ((self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten' and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1', 'modul_2'] elif ((self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 2 bearbeitet')) and self.player.modul_4 == 'im folgenden Sprint nicht bearbeiten': return ['modul_4'] elif ((self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_3 == 'im folgenden Sprint nicht bearbeiten': return ['modul_3'] elif ((self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_2 == 'im folgenden Sprint nicht bearbeiten': return ['modul_2'] elif ((self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet') or (self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet')) and self.player.modul_1 == 'im folgenden Sprint nicht bearbeiten': return ['modul_1'] def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' and not (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'in Sprint 1 bearbeitet') and not (self.player.modul_1 == 'noch nicht bearbeitet' or self.player.modul_2 == 'noch nicht bearbeitet' or self.player.modul_3 == 'noch nicht bearbeitet' or self.player.modul_4 == 'noch nicht bearbeitet') def before_next_page(self): if self.player.modul_1 == 'im folgenden Sprint bearbeiten': self.player.modul_1 = 'in Sprint 3 bearbeitet' if self.player.modul_2 == 'im folgenden Sprint bearbeiten': self.player.modul_2 = 'in Sprint 3 bearbeitet' if self.player.modul_3 == 'im folgenden Sprint bearbeiten': self.player.modul_3 = 'in Sprint 3 bearbeitet' if self.player.modul_4 == 'im folgenden Sprint bearbeiten': self.player.modul_4 = 'in Sprint 3 bearbeitet' timeout_seconds = 60 class erste_Sprintumsetzung(Page): form_model = 'player' #Auslesen der Formfelder um zu bearbeitende Module in Sprint 1 zu ermitteln def get_form_fields(self): if (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1'] elif (self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_1!= 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet' and self.player.modul_4!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_1!= 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_4!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1!= 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet' and self.player.modul_4!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_1 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_4!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet' and self.player.modul_4!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1!= 'in Sprint 1 bearbeitet' and self.player.modul_3!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and self.player.modul_1!= 'in Sprint 1 bearbeitet' and self.player.modul_2!= 'in Sprint 1 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 1 bearbeitet' and (self.player.modul_4!= 'in Sprint 1 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and (self.player.modul_3!= 'in Sprint 1 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and (self.player.modul_2!= 'in Sprint 1 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet' and (self.player.modul_1!= 'in Sprint 1 bearbeitet')): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 1 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] timeout_seconds = 180 def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' class zweite_Sprintumsetzung(Page): form_model = 'player' def get_form_fields(self): if (self.player.modul_1 == 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1'] elif (self.player.modul_2 == 'in Sprint 2 bearbeitet' and self.player.modul_1!= 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet' and self.player.modul_4!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_3 == 'in Sprint 2 bearbeitet' and self.player.modul_1!= 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_4!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_4 == 'in Sprint 2 bearbeitet' and self.player.modul_1!= 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 == 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet' and self.player.modul_4!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_1 and self.player.modul_3 == 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_4!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 == 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet' and self.player.modul_4!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_2 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and self.player.modul_1!= 'in Sprint 2 bearbeitet' and self.player.modul_3!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and self.player.modul_1!= 'in Sprint 2 bearbeitet' and self.player.modul_2!= 'in Sprint 2 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 2 bearbeitet' and (self.player.modul_4!= 'in Sprint 2 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and (self.player.modul_3!= 'in Sprint 2 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and (self.player.modul_2!= 'in Sprint 2 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet' and (self.player.modul_1!= 'in Sprint 2 bearbeitet')): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 2 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] timeout_seconds = 180 def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' and not (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'in Sprint 1 bearbeitet') class dritte_Sprintumsetzung(Page): form_model = 'player' def get_form_fields(self): if (self.player.modul_1 == 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1'] elif (self.player.modul_2 == 'in Sprint 3 bearbeitet' and self.player.modul_1!= 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet' and self.player.modul_4!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_3 == 'in Sprint 3 bearbeitet' and self.player.modul_1!= 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_4!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_4 == 'in Sprint 3 bearbeitet' and self.player.modul_1!= 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 == 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet' and self.player.modul_4!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2'] elif (self.player.modul_1 and self.player.modul_3 == 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_4!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 == 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet' and self.player.modul_4!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_2 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and self.player.modul_1!= 'in Sprint 3 bearbeitet' and self.player.modul_3!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_3 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and self.player.modul_1!= 'in Sprint 3 bearbeitet' and self.player.modul_2!= 'in Sprint 3 bearbeitet'): return ['payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 == 'in Sprint 3 bearbeitet' and (self.player.modul_4!= 'in Sprint 3 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and (self.player.modul_3!= 'in Sprint 3 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and (self.player.modul_2!= 'in Sprint 3 bearbeitet')): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 3 bearbeitet' and (self.player.modul_1!= 'in Sprint 3 bearbeitet')): return ['payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] elif (self.player.modul_1 and self.player.modul_2 and self.player.modul_3 and self.player.modul_4 == 'in Sprint 3 bearbeitet'): return ['payoffs_modul_1', 'h_payoff_1', 'changes_modul_1', 'payoffs_modul_2', 'h_payoff_2', 'changes_modul_2', 'payoffs_modul_3', 'h_payoff_3', 'changes_modul_3', 'payoffs_modul_4', 'h_payoff_4', 'changes_modul_4'] timeout_seconds = 180 def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' and not (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'in Sprint 1 bearbeitet') and not (self.player.modul_1 == 'noch nicht bearbeitet' or self.player.modul_2 == 'noch nicht bearbeitet' or self.player.modul_3 == 'noch nicht bearbeitet' or self.player.modul_4 == 'noch nicht bearbeitet') class Results(Page): def is_displayed(self): return self.participant.vars['Zuordnung'] == 'agil' and not (self.player.modul_1 == 'in Sprint 1 bearbeitet' and self.player.modul_2 == 'in Sprint 1 bearbeitet' and self.player.modul_3 == 'in Sprint 1 bearbeitet' and self.player.modul_4 == 'in Sprint 1 bearbeitet') page_sequence = [ erste_Sprintplanung, erste_Sprintumsetzung, zweite_Sprintplanung, zweite_Sprintumsetzung, dritte_Sprintplanung, dritte_Sprintumsetzung, Results ]