from otree.api import * author = "Simon Hellman and Monia Lougui" doc = """ This is an app for a game. """ class C(BaseConstants): NAME_IN_URL = 'investeringsspel' PLAYERS_PER_GROUP = None NUM_ROUNDS = 10 # MODELS class Subsession(BaseSubsession): def creating_session(self): if self.round_number == 1: players = self.subsession.get_players() M_players=[p for p in players if p.participant.vars['gender']== 'Man'] F_players=[p for p in players if p.participant.vars['gender'] == ['Kvinna']] group_matrix = [] while F_players: new_group=[ M_players.pop(), M_players.pop(), F_players.pop(), ] group_matrix.append(new_group) #self.set_group_matrix(group_matrix) else: new_group=[ M_players.pop(), M_players.pop(), M_players.pop(), ] group_matrix.append(new_group) self.set_group_matrix(group_matrix) else: self.group_like_round(1) self.group_randomly(fixed_id_in_group=True) class Group(BaseGroup): pass class Player(BasePlayer): age = models.IntegerField(choices=range(18,65,1)) gender = models.CharField( choices = ["Man", "Kvinna"], widget = widgets.RadioSelect ) # PAGES class MyPage(Page): pass class CollectPlayerInformation(Page): @staticmethod def is_displayed(self): if self.round_number == 1: return True else: prev = self.in_previous_rounds()[-1] self.age = prev.age self.gender = prev.gender return False form_model = 'player' form_fields = ['age', "gender"] # @staticmethod # def before_next_page(player, timeout_happend): # pass # # if self.round_number > 1: # # self.participant.vars['age'] = self.age # # self.participant.vars['gender'] = self.gender # # print(self.participant.vars) class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): pass class Results(Page): def vars_for_template(self): print(type(self)) return { 'your_age': self.age } page_sequence = [MyPage, CollectPlayerInformation, ResultsWaitPage, Results]