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 Leftoff(Page): form_model = models.Player form_fields = ['number_id','password_to_continue',] def error_message(self, values): if values["password_to_continue"] !='9090': return 'Please wait for the experimenter to assist you.' 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.s4attempt += 1 if self.player.s4attempt >=4: return 'You have reached the maximum number of attempts, please raise your hand for help now.' return 'At least one answer is wrong! Please try again. Please raise your hand if you have any questions.' pass class SimpleWaitPage2(WaitPage): pass class SimpleWaitPage(WaitPage): pass class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): pass class Results(Page): timeout_seconds = 10 def vars_for_template(self): return{ 'type2': self.subsession.player_type(self.player), } class mturk(Page): timeout_seconds = 1000 pass # 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 = 18 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 Trivia(Page): def is_displayed(self): return self.player.role() == 'leader' form_model = models.Player form_fields = ['trivia1','trivia2','trivia3','trivia4'] 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 = [ mturk # FinalResults, ]