from . import models from ._builtin import Page, WaitPage from .models import Constants class Introduction(Page): def is_displayed(self): return self.subsession.round_number == 1 class After3(Page): pass class LeaderInstruction(Page): def is_displayed(self): return self.player.role() == 'leader' class MemberInstruction(Page): def is_displayed(self): return self.player.role() == 'member' class Comprehension1(Page): def is_displayed(self): return self.player.role() == 'member' form_model = models.Player form_fields = ['check1', 'check2', 'check3', 'check4'] def error_message(self, values): if values["check1"] !='100' or values["check2"] != 'higher' or values["check3"] != 'higher' or values["check4"] != 'high': self.player.s4q4attempt += 1 return "hehe" pass class SimpleWaitPage2(WaitPage): pass class SimpleWaitPage(WaitPage): pass class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoff() class Results(Page): timeout_seconds = 30 def vars_for_template(self): return{ 'bid': self.player.bid_leader, 'member_type': self.subsession.member_type(self.player) } # class FinalResults(Page): # def is_displayed(self): # return self.subsession.round_number == Constants.num_rounds # def vars_for_template(self): # return self.subsession.vars_for_admin_report() class Pleaseproceed(Page): timeout_seconds = 5 def is_displayed(self): return self.player.role() == 'leader' class BidLeader(Page): def is_displayed(self): return self.player.role() == 'member' form_model = models.Player form_fields = ['bid_leader'] class GroupingWaitPage(WaitPage): group_by_arrival_time = True def get_players_for_group(self, waiting_players): print('in get_players_for_group') leader_players = [p for p in waiting_players if p.participant.vars['type'] == 'C (participants who removed the fewest points)' or p.participant.vars['type'] == 'A (participants who removed the most points)'] member_players = [p for p in waiting_players if p.participant.vars['type'] == 'member'] if len(leader_players) >= 1 and len(member_players) >= 1: print('about to create a group') return [leader_players[0], member_players[0]] print('not enough players to create a group') page_sequence = [ #After3, #Introduction, #LeaderInstruction, #MemberInstruction, #Comprehension1, BidLeader, ResultsWaitPage, Pleaseproceed, Results # FinalResults, ]