# from django.contrib.staticfiles.templatetags.staticfiles import static from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import io import os import re import base64 #dirfrom PIL import Image from django.conf import settings from uuid import uuid4 dataUrlPattern = re.compile('data:image/(png|jpeg);base64,(.*)$') from random import seed from random import randint class Intro(Page): form_model = 'player' form_fields = ['presence'] class Task(Page): form_model = 'player' class Verstanden(Page): form_model = 'player' form_fields = ['orig1', 'orig2', 'orig3', 'qual1', 'qual2', 'qual3', 'tot1', 'tot2', 'pay1', 'pay2'] class DecisionProm(Page): def is_displayed(self): return self.player.treat == 'Promotion' form_model = 'player' form_fields = ['invest_1', 'invest_2'] def error_message(self, values): if values["invest_1"] + values["invest_2"] > 10: return 'Sie können nicht mehr als 10€ investieren.' if values["invest_1"] + values["invest_2"] < 10: return 'Sie müssen insgesamt 10€ investieren.' def vars_for_template(self): grade_1 = (Constants.df.iloc[0,3]/100) grade_2 = (Constants.df.iloc[1,2]/100) photo_1 = Constants.df.iloc[0,0] photo_2 = Constants.df.iloc[1,0] return dict(promo1="{}".format(grade_1), promo2="{}".format(grade_2), photo1= "image_upload/{}.jpg".format(photo_1), photo2= "image_upload/{}.jpg".format(photo_2)) class DecisionControl(Page): def is_displayed(self): return self.player.treat == 'Control' form_model = 'player' form_fields = ['invest_1', 'invest_2'] def error_message(self, values): if values["invest_1"] + values["invest_2"] > 10: return 'Sie können nicht mehr als 10€ investieren.' def vars_for_template(self): photo_1 = Constants.df.iloc[0,0] photo_2 = Constants.df.iloc[1,0] return dict(photo1= "image_upload/{}.jpg".format(photo_1), photo2= "image_upload/{}.jpg".format(photo_2)) class Pseudo(Page): form_model = 'player' form_fields = [ 'name'] def before_next_page(self): score1 = Constants.df.iloc[0, 5] score2 = Constants.df.iloc[1, 5] self.player.payment = (self.player.invest_1 * score1) + (self.player.invest_2 * score2) class Results(Page): form_model = 'player' def vars_for_template(self) -> dict: payment = self.player.payment return dict(payment_final="{:12.2f}".format(payment)) page_sequence = [Intro, Task, Verstanden, DecisionProm, DecisionControl, Pseudo, Results]