from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants, levenshtein, distance, grade_endowment from django.conf import settings class Introduction(Page): def is_displayed(self): return self.round_number == 1 class Transcribe(Page): #timeout_seconds = 10 form_model = 'player' form_fields = ['transcribed_text'] def vars_for_template(self): #print("Transcribe:" + self.session.vars[self.participant.code]) self.player.student_name = self.session.vars[self.participant.code] return { 'image_path': 'real_effort/paragraphs/{}.png'.format(self.round_number), 'reference_text': Constants.reference_texts[self.round_number - 1], #'debug': settings.DEBUG, #'required_accuracy': 100 * (1 - Constants.allowed_error_rates[self.round_number - 1]) } def transcribed_text_error_message(self, transcribed_text): reference_text = Constants.reference_texts[self.round_number - 1] #allowed_error_rate = Constants.allowed_error_rates[self.round_number - 1] self.player.levenshtein_distance = distance(transcribed_text, reference_text) class Request(Page): # timeout_seconds = 10 form_model = 'group' form_fields = ['request'] def is_displayed(self): return self.player.id_in_group == 1 def vars_for_template(self): reference_text = Constants.reference_texts[self.round_number - 1] self.player.grade, self.player.endowment, self.player.error = grade_endowment(self.player.levenshtein_distance, reference_text) print("Request:" + self.session.vars['studentname']) # print("request: " + str(self.player.pid) + " " + str(self.player.grade) + " " + str(self.player.endowment)) # return { # 'grade': self.player.grade, # 'endowment': self.player.endowment, # } class WaitForProposer(WaitPage): def is_displayed(self): return self.player.id_in_group == 2 class Accept(Page): form_model = 'group' form_fields = ['offer_accepted'] def is_displayed(self): return self.player.id_in_group == 2 and self.group.request == 'Yes' def vars_for_template(self): reference_text = Constants.reference_texts[self.round_number - 1] self.player.grade, self.player.endowment, self.player.error = grade_endowment(self.player.levenshtein_distance, reference_text) # print("accept: " + str(self.player.pid) + " " + str(self.player.grade) + " " + str(self.player.endowment)) # return { # 'grade': self.player.grade, # 'endowment': self.player.endowment, # } #timeout_seconds = 10 class ResultsWaitPage(WaitPage): # pass def after_all_players_arrive(self): self.group.set_payoffs() class Results(Page): #pass def vars_for_template(self): reference_text = Constants.reference_texts[self.round_number - 1] self.player.grade, self.player.endowment, self.player.error = grade_endowment(self.player.levenshtein_distance, reference_text) self.group.set_payoffs() #print("Results:" + self.session.vars[self.participant.code]) print("name: " + self.player.student_name) # print("results: " + str(self.player.pid) + " " + str(self.player.grade) + " " + str(self.player.endowment)) # return { # 'grade': self.player.grade, # 'endowment': self.player.endowment, # } self.session.vars[self.player.student_name + 'g2r' + str(self.round_number)] = [ 'game 2', self.round_number, self.player.endowment, self.player.grade, self.player.error, self.player.payoff, self.group.request, self.group.offer_accepted ] print(self.session.vars[self.player.student_name + 'g2r' + str(self.round_number)]) page_sequence = [Introduction, Transcribe, Request, WaitForProposer, Accept, ResultsWaitPage, Results]