from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from otree.models import subsession from datetime import datetime, timedelta from Multiple_Price_List.config import * import random from random import randrange class Constants(BaseConstants): # ------------------------------------------------------------------------------------------------------------ # # --- oTree Settings (Don't Modify) --- # # ------------------------------------------------------------------------------------------------------------ # name_in_url = 'Results_New' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Subsession(BaseSubsession): pass def creating_session(subsession): for p in subsession.get_players(): p.participant.vars.setdefault('payoff_time_date', 0) # 0=tomorrow, 1=4 weeks p.participant.vars.setdefault('payoff_risk', 3) p.participant.vars.setdefault('payoff_ambig', 2) p.participant.vars.setdefault('payoff_time', 4) class Group(BaseGroup): pass class Player(BasePlayer): sona_id = models.StringField() orig_payment = models.CurrencyField() total_payment = models.CurrencyField() payment_today = models.CurrencyField() payment_tomorrow = models.CurrencyField() payment_4w = models.CurrencyField() delayed_pay_date = models.StringField() paypal = models.StringField( label='Veuillez entrer soit votre adresse e-mail soit votre numéro de téléphone liés à votre compte PayPal dans l’encart ci-dessous.', blank=False, ) """ for test def set_payment_vars(self): self.sona_id = self.participant.label if self.participant.vars['payoff_time_date'] == 0: self.payment_today = c(self.participant.vars['payoff_risk'] + self.participant.vars['payoff_ambig']) self.payment_tomorrow = c(self.participant.vars['payoff_time']) self.payment_4w = c(0) else: self.payment_today = c(self.participant.vars['payoff_risk'] + self.participant.vars['payoff_ambig']) self.payment_tomorrow = c(0) self.payment_4w = c(self.participant.vars['payoff_time']) self.orig_payment = self.payment_today + self.payment_tomorrow + self.payment_4w if self.orig_payment < c(10): self.total_payment = c(10) self.payment_today = c(10 - self.payment_tomorrow - self.payment_4w) else: self.total_payment = self.orig_payment self.payment_today = self.payment_today self.payoff = self.payment_tomorrow + self.payment_4w + self.participant.vars['payoff_ambig'] if self.participant.vars['payoff_time_date'] == 1: d = datetime.now() + timedelta(days=28) date = d.strftime('%b-%d-%Y') self.delayed_pay_date = date else: d = datetime.now() + timedelta(days=1) date = d.strftime('%b-%d-%Y') self.delayed_pay_date = date """ def set_payment_vars(self): pvars = self.participant.vars payoff_time_date = pvars.get('payoff_time_date', 0) payoff_risk = pvars.get('payoff_risk', 0) payoff_ambig = pvars.get('payoff_ambig', 0) payoff_time = pvars.get('payoff_time', 0) self.sona_id = self.participant.label if payoff_time_date == 0: self.payment_today = c(payoff_risk + payoff_ambig) self.payment_tomorrow = c(payoff_time) self.payment_4w = c(0) else: self.payment_today = c(payoff_risk + payoff_ambig) self.payment_tomorrow = c(0) self.payment_4w = c(payoff_time) self.orig_payment = self.payment_today + self.payment_tomorrow + self.payment_4w if self.orig_payment < c(10): self.total_payment = c(10) self.payment_today = c(10 - self.payment_tomorrow - self.payment_4w) else: self.total_payment = self.orig_payment self.payoff = self.payment_tomorrow + self.payment_4w + c(payoff_ambig) if payoff_time_date == 1: d = datetime.now() + timedelta(days=28) self.delayed_pay_date = d.strftime('%b-%d-%Y') else: d = datetime.now() + timedelta(days=1) self.delayed_pay_date = d.strftime('%b-%d-%Y')