from ._builtin import Page from .models import Constants import random class Wait(Page): timeout_seconds = 1 def before_next_page(self): if self.round_number == 1: randomized_statements = random.sample(Constants.statements, len(Constants.statements)) self.player.participant.vars['randomized_statements'] = randomized_statements self.player.participant.vars['submitted_answers'] = [0] * 15 self.player.participant.vars['submitted_importances'] = [0] * 15 statement_data = self.player.current_statement() self.player.statement_id = int(statement_data['id']) self.player.statement = statement_data['statement'] class Statement(Page): form_model = 'player' form_fields = ['submitted_answer', 'submitted_importance'] def before_next_page(self): self.player.participant.vars['submitted_answers'][self.player.statement_id - 1] = self.player.submitted_answer self.player.participant.vars['submitted_importances'][self.player.statement_id - 1] = \ 10 - self.player.submitted_importance class End(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def before_next_page(self): if self.round_number == Constants.num_rounds: self.player.participant.vars['shuffled_statements'] = \ [x for _, x in sorted(zip(self.player.participant.vars['submitted_importances'], list(range(1, 16))))] statement_used = self.player.participant.vars.get('shuffled_statements')[1 - 1] answer_used = self.player.participant.vars.get('submitted_answers')[statement_used - 1] self.player.participant.vars['answer_used'] = answer_used recorded_statement = Constants.statements[statement_used - 1]['statement'] self.player.participant.vars['recorded_statement'] = recorded_statement page_sequence = [ Wait, Statement, End ]