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 StudentInfo(Page): form_model = 'player' form_fields = ['student_name'] def is_displayed(self): return self.round_number == 1 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): if self.round_number != 1: self.player.student_name = self.session.vars[self.participant.code] #print(self.session.vars[self.participant.code]) else: self.session.vars[self.participant.code] = self.player.student_name #print("test:" + 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 = 'player' form_fields = ['request'] # def is_displayed(self): # return self.player.id_in_group == 1 def vars_for_template(self): self.session.vars['studentname'] = self.player.student_name 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: grade: " + str(self.player.grade) + " endowment: " + str(self.player.endowment)) return { 'grade': self.player.grade, 'endowment': self.player.endowment, } class Results(Page): form_model = 'player' #form_fields = ['request','offer_accepted'] 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.player.rand_num() self.player.set_payoffs() self.session.vars[self.player.student_name+'g1r'+str(self.round_number)] = [ 'game 1', self.round_number, self.player.endowment, self.player.grade, self.player.error, self.player.payoff, self.player.request, self.player.offer_accepted ] page_sequence = [ StudentInfo, Introduction, Transcribe, Request, Results]