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 After4(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): form_model = models.Player form_fields = ['check1'] def error_message(self, values): if values["check1"] != 'higher Total Group Contribution': return 'Wrong! Please try again.' class Comprehension2(Page): form_model = models.Player form_fields = ['check2'] def error_message(self, values): if values["check2"] != 'It will increase by 20%': return 'Wrong! Please try again.' 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'] == 'among those who removed the highest points.' or p.participant.vars['type'] == 'among those who removed the lowest 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 = [ #After4, #LeaderInstruction, #MemberInstruction, #Comprehension1, #Comprehension2, BidLeader, ResultsWaitPage, Pleaseproceed, Results # FinalResults, ]