from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants, Group class Introduction(Page): def is_displayed(self): return self.round_number == 1 class ResultCurrentPeriod(Page): def is_displayed(self): allRoundsDone = False priceEquilibrium = [g.priceEquilibrium for g in self.group.in_all_rounds()][-1] if (self.group.countRounds < Constants.number_periods - 1) and (priceEquilibrium == True): allRoundsDone = True return allRoundsDone == True class EnterQuantity(Page): #timeout_seconds = Constants.time_to_wait def vars_for_template(self): self.group.UpdatePrice() self.group.certainty = self.session.config['certainty'] return dict( image_path_uncertainty_operations='pictures/Operations - Period ' + str(self.group.countRounds + 1) + '.png'.format(self.round_number), image_path_certainty_operations='pictures/Operations - Period ' + str(self.group.countRounds + 1) + ' - Kopie.png'.format(self.round_number), image_path_uncertainty_sales='pictures/Sales - Period ' + str(self.group.countRounds + 1) + '.png'.format(self.round_number), image_path_certainty_sales='pictures/Sales - Period ' + str(self.group.countRounds + 1) + ' - Kopie.png'.format(self.round_number), ) form_fields = ['countUnits'] form_model = 'player' class ResultsWaitPage(WaitPage): after_all_players_arrive = 'WinningCondition' #after_all_players_arrive = 'CheckEquilibrium' class IntroWaitPage(WaitPage): pass class Results(Page): def vars_for_template(self): t = self.group.RdmRound() #Get random number payoff_sales = [g.reward_Sales for g in self.group.in_all_rounds()] payoff_operations = [g.reward_Operations for g in self.group.in_all_rounds()] final_quantity = [g.finalQuantity for g in self.group.in_all_rounds()] column = 5 * t - 1 PayoffSALES = payoff_sales[column] PayoffOPERATIONS = payoff_operations[column] FinalQuantity = final_quantity[column] return dict( t=t, PayoffSALES = PayoffSALES, PayoffOPERATIONS = PayoffOPERATIONS, FinalQuantity = FinalQuantity ) def is_displayed(self): allRoundsDone = False priceEquilibrium = [g.priceEquilibrium for g in self.group.in_all_rounds()][-1] if (self.group.countRounds == Constants.number_periods - 1) and (priceEquilibrium == True): allRoundsDone = True return allRoundsDone == True def app_after_this_page(self, upcoming_apps): #if self.player.whatever: return upcoming_apps[0] #page_sequence = [Introduction, IntroWaitPage, EnterQuantity, ResultsWaitPage, Results] page_sequence = [Introduction, EnterQuantity, ResultsWaitPage, ResultCurrentPeriod, Results]