from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants from .models import Player class Page1(Page): form_model = 'player' timeout_seconds = 10 # ^list of demographic questions to ask pass class GatheringPage(WaitPage): after_all_players_arrive = 'labeling' wait_for_all_groups = True # gets existing players into a list # from here, filter players into pairs based on their best match # repick players into new groups of 4 # re shuffle players into new chat group pairs pass class chatpage1(Page): def vars_for_template(self): return dict( nickname="Participant " + str(self.participant.id_in_session) ) timer_text = 'Time left to discuss:' timeout_seconds = 360 class rankingpage(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 3 def get_form_fields(self): form_fields = [] for p in self.participant.vars['currently_matched']: print(p) form_fields.append(Constants.ratingslist[p-1]) print(form_fields) return form_fields def error_message(self, values): print('values is', values) if len(values) != len(set(values.values())): return 'Error! Please only select one rank per chat partner.' def before_next_page(self): if self.is_displayed: self.participant.vars['A1'] = self.player.A1 self.participant.vars['B1'] = self.player.B1 self.participant.vars['C1'] = self.player.C1 self.participant.vars['D1'] = self.player.D1 self.participant.vars['A2'] = self.player.A2 self.participant.vars['B2'] = self.player.B2 self.participant.vars['C2'] = self.player.C2 self.participant.vars['D2'] = self.player.D2 class rankingpage2(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 5 def get_form_fields(self): form_fields = [] for p in self.participant.vars['currently_matched']: print(p) form_fields.append(Constants.ratingslist[p-1]) print(form_fields) return form_fields def error_message(self, values): print('values is', values) if len(values) != len(set(values.values())): return 'Error! Please only select one rank per chat partner.' def before_next_page(self): if self.is_displayed: self.participant.vars['A1'] = self.player.A1 self.participant.vars['B1'] = self.player.B1 self.participant.vars['C1'] = self.player.C1 self.participant.vars['D1'] = self.player.D1 self.participant.vars['A2'] = self.player.A2 self.participant.vars['B2'] = self.player.B2 self.participant.vars['C2'] = self.player.C2 self.participant.vars['D2'] = self.player.D2 class postchatratings(Page): form_model = 'player' def get_form_fields(self): form_fields = [] if self.participant.vars['currently_matched'][-1] == 1: form_fields.append('A1satisfaction') form_fields.append('A1_liking') form_fields.append('A1_emosupp') form_fields.append('A1_instrusupp') elif self.participant.vars['currently_matched'][-1] == 2: form_fields.append('B1satisfaction') form_fields.append('B1_liking') form_fields.append('B1_emosupp') form_fields.append('B1_instrusupp') elif self.participant.vars['currently_matched'][-1] == 3: form_fields.append('C1satisfaction') form_fields.append('C1_liking') form_fields.append('C1_emosupp') form_fields.append('C1_instrusupp') elif self.participant.vars['currently_matched'][-1] == 4: form_fields.append('D1satisfaction') form_fields.append('D1_liking') form_fields.append('D1_emosupp') form_fields.append('D1_instrusupp') elif self.participant.vars['currently_matched'][-1] == 5: form_fields.append('A2satisfaction') form_fields.append('A2_liking') form_fields.append('A2_emosupp') form_fields.append('A2_instrusupp') elif self.participant.vars['currently_matched'][-1] == 6: form_fields.append('B2satisfaction') form_fields.append('B2_liking') form_fields.append('B2_emosupp') form_fields.append('B2_instrusupp') elif self.participant.vars['currently_matched'][-1] == 7: form_fields.append('C2satisfaction') form_fields.append('C2_liking') form_fields.append('C2_emosupp') form_fields.append('C2_instrusupp') elif self.participant.vars['currently_matched'][-1] == 8: form_fields.append('D2satisfaction') form_fields.append('D2_liking') form_fields.append('D2_emosupp') form_fields.append('D2_instrusupp') return form_fields def before_next_page(self): if self.participant.vars['currently_matched'][-1] == 1: self.participant.vars['A1satisfaction'] = self.player.A1satisfaction self.participant.vars['A1_liking'] = self.player.A1_liking self.participant.vars['A1_emosupp'] = self.player.A1_emosupp self.participant.vars['A1_instrusupp'] = self.player.A1_instrusupp elif self.participant.vars['currently_matched'][-1] == 2: self.participant.vars['B1satisfaction'] = self.player.B1satisfaction self.participant.vars['B1_liking'] = self.player.B1_liking self.participant.vars['B1_emosupp'] = self.player.B1_emosupp self.participant.vars['B1_instrusupp'] = self.player.B1_instrusupp elif self.participant.vars['currently_matched'][-1] == 3: self.participant.vars['C1satisfaction'] = self.player.C1satisfaction self.participant.vars['C1_liking'] = self.player.C1_liking self.participant.vars['C1_emosupp'] = self.player.C1_emosupp self.participant.vars['C1_instrusupp'] = self.player.C1_instrusupp elif self.participant.vars['currently_matched'][-1] == 4: self.participant.vars['D1satisfaction'] = self.player.D1satisfaction self.participant.vars['D1_liking'] = self.player.D1_liking self.participant.vars['D1_emosupp'] = self.player.D1_emosupp self.participant.vars['D1_instrusupp'] = self.player.D1_instrusupp elif self.participant.vars['currently_matched'][-1] == 5: self.participant.vars['A2satisfaction'] = self.player.A2satisfaction self.participant.vars['A2_liking'] = self.player.A2_liking self.participant.vars['A2_emosupp'] = self.player.A2_emosupp self.participant.vars['A2_instrusupp'] = self.player.A2_instrusupp elif self.participant.vars['currently_matched'][-1] == 6: self.participant.vars['B2satisfaction'] = self.player.B2satisfaction self.participant.vars['B2_liking'] = self.player.B2_liking self.participant.vars['B2_emosupp'] = self.player.B2_emosupp self.participant.vars['B2_instrusupp'] = self.player.B2_instrusupp elif self.participant.vars['currently_matched'][-1] == 7: self.participant.vars['C2satisfaction'] = self.player.C2satisfaction self.participant.vars['C2_liking'] = self.player.C2_liking self.participant.vars['C2_emosupp'] = self.player.C2_emosupp self.participant.vars['C2_instrusupp'] = self.player.C2_instrusupp elif self.participant.vars['currently_matched'][-1] == 8: self.participant.vars['D2satisfaction'] = self.player.D2satisfaction self.participant.vars['D2_liking'] = self.player.D2_liking self.participant.vars['D2_emosupp'] = self.player.D2_emosupp self.participant.vars['D2_instrusupp'] = self.player.D2_instrusupp class inclusion_other_in_self(Page): form_model = 'player' def get_form_fields(self): form_fields = [] if self.participant.vars['currently_matched'][-1] == 1: form_fields.append('A1_ios') elif self.participant.vars['currently_matched'][-1] == 2: form_fields.append('B1_ios') elif self.participant.vars['currently_matched'][-1] == 3: form_fields.append('C1_ios') elif self.participant.vars['currently_matched'][-1] == 4: form_fields.append('D1_ios') elif self.participant.vars['currently_matched'][-1] == 5: form_fields.append('A2_ios') elif self.participant.vars['currently_matched'][-1] == 6: form_fields.append('B2_ios') elif self.participant.vars['currently_matched'][-1] == 7: form_fields.append('C2_ios') elif self.participant.vars['currently_matched'][-1] == 8: form_fields.append('D2_ios') return form_fields def before_next_page(self): if self.participant.vars['currently_matched'][-1] == 1: self.participant.vars['A1satisfaction'] = self.player.A1satisfaction elif self.participant.vars['currently_matched'][-1] == 2: self.participant.vars['B1satisfaction'] = self.player.B1satisfaction elif self.participant.vars['currently_matched'][-1] == 3: self.participant.vars['C1satisfaction'] = self.player.C1satisfaction elif self.participant.vars['currently_matched'][-1] == 4: self.participant.vars['D1satisfaction'] = self.player.D1satisfaction elif self.participant.vars['currently_matched'][-1] == 5: self.participant.vars['A2satisfaction'] = self.player.A2satisfaction elif self.participant.vars['currently_matched'][-1] == 6: self.participant.vars['B2satisfaction'] = self.player.B2satisfaction elif self.participant.vars['currently_matched'][-1] == 7: self.participant.vars['C2satisfaction'] = self.player.C2satisfaction elif self.participant.vars['currently_matched'][-1] == 8: self.participant.vars['D2satisfaction'] = self.player.D2satisfaction class randompickingpage(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'randompicking' class finalcalculator(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'groupset' def is_displayed(self): return self.subsession.round_number > 3 class finalcomparison(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'groupsetcomparison' def is_displayed(self): return self.subsession.round_number == 5 class lastman(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'lastmanfinder' def is_displayed(self): return self.subsession.round_number == 5 class SetGroupPage(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'set_groups' class cap_page(Page): form_model = 'player' form_fields = ['Cap', 'ExCAP'] def before_next_page(self): self.player.groupset1a = "".join( self.session.vars["postshufflegroup1a"]) self.player.groupset1b = "".join( self.session.vars["postshufflegroup1b"]) self.player.groupset2a = "".join( self.session.vars["postshufflegroup2a"]) self.player.groupset2b = "".join( self.session.vars["postshufflegroup2b"]) self.player.bestgroupset = self.session.vars['bestgroupset'] def is_displayed(self): return self.subsession.round_number == 6 class ses_page(Page): form_model = 'player' form_fields = ['SEs'] def is_displayed(self): return self.subsession.round_number == 6 class Demographics(Page): form_model = 'player' form_fields = ['Matric', 'Email', 'Age', 'Sex', 'YoS', 'Faculty', 'CoS', 'Race', 'Race_others', 'English'] def is_displayed(self): return self.subsession.round_number == 6 class Susp_page(Page): form_model = 'player' form_fields = ['Susp'] def is_displayed(self): return self.subsession.round_number == 6 class paypage(Page): form_model = 'player' form_fields = ['Payment', 'Paid_info'] def is_displayed(self): return self.subsession.round_number == 6 class debrief(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 6 class Instructions1(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 1 class Instructions2(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 1 class Instructions3(Page): form_model = 'player' def is_displayed(self): return self.subsession.round_number == 1 class Instructions4(Page): form_model = 'player' timeout_seconds = 180 def is_displayed(self): return self.subsession.round_number == 1 # pass page_sequence = [Instructions1, Instructions2, Instructions3, Instructions4, Page1, GatheringPage, SetGroupPage, chatpage1, postchatratings, inclusion_other_in_self, rankingpage, rankingpage2, randompickingpage, finalcalculator, finalcomparison, lastman, cap_page, ses_page, Demographics, Susp_page, paypage, debrief]