from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random from django import forms import time import datetime author = 'Filipp Chapkovskii, UZH, chapkovski@gmail.com' editor = 'Yidan Chai for ec312 teaching purpose' doc = """ ebay auction example """ class Constants(BaseConstants): name_in_url = 'week4_dutch_auction' players_per_group = None num_rounds = 1 starting_time = 60 extra_time = 15 # endowment = 100 prize = 200 # num_others = num_participants - 1 step = 1 class Subsession(BaseSubsession): # def before_session_starts(self): # for g in self.get_groups(): # g.price = 0 def creating_session(self): for g in self.get_groups(): g.price = 16 if self.round_number == 1: for p in self.get_players(): p.endowment = random.randint(1,10) for g in self.get_groups(): g.common_value = random.randint(1,6) class Group(BaseGroup): price = models.IntegerField() auction_start_date = models.FloatField() auction_end_date = models.FloatField() winner = models.IntegerField() common_value = models.CurrencyField() def time_left(self): now = time.time() time_left = self.auction_end_date - now time_left = round(time_left) if time_left > 0 else 0 return time_left def set_payoffs(self): # self.common_value = random.randint(1,6) for p in self.get_players(): # p.endowment = random.randint(1,10) if p.id_in_group == self.winner: p.payoff = p.endowment + self.common_value - self.price else: p.payoff = 0 class Player(BasePlayer): endowment = models.CurrencyField() # endowment = random.randint(1,10)