from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import config_collat import uuid import random import ast debug = True author = "CSN/IFREE REU 2019 oTree Team" doc = """ Full Collateral Game """ class Constants(BaseConstants): """ Description: Inherits oTree Class BaseConstants. Defines constants for the experiment these will remain unchanged Input: uuid - (ID generating package) config_collat - (Dictionary of treatment parameters) Output: None """ group_id = uuid.uuid4() name_in_url = 'Practice_Game' # name in webbrowser list_of_treatments = config_collat.parameters.keys() randomized_treatment = list(list_of_treatments)[0] timer = 30 treatment = randomized_treatment # randomized_treatment dic_of_treatment_parameters = config_collat.parameters[treatment] contract_enforcement = eval(dic_of_treatment_parameters['contract_enforcement']) players_per_group = int(dic_of_treatment_parameters["players_per_group"]) num_rounds = int(dic_of_treatment_parameters["num_rounds"]) initial_points = c(dic_of_treatment_parameters["initial_points "]) recovery_fee = c(dic_of_treatment_parameters["recovery_fee"]) productivity = int(dic_of_treatment_parameters["productivity"]) contract_enforcement = eval(dic_of_treatment_parameters["contract_enforcement"]) rate_of_return = float(dic_of_treatment_parameters["rate_of_return"]) instructions_payoff = c(10) practice_information_score_sheet = 'Instructions_Quiz/Information_Score_Sheet_Practice.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): loan = models.IntegerField() collateral = models.IntegerField() requested_repayment = models.IntegerField() repayment = models.IntegerField() collateral_recovered = models.IntegerField() collateral_returned = models.IntegerField() def role(self): if self.id_in_group == 1: return 'lender' if self.id_in_group == 2: return 'borrower'