from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class General_instructions(Page): print('yo') class Specific_instructions(Page): pass class Determine_rate_of_return(Page): form_model = 'group' form_fields = ['rate_of_return'] def is_displayed(self): return self.player.id_in_group == 1 class Collateral_offer(Page): form_model = 'group' form_fields = ['collateral'] def before_next_page(self): self.player.money += -self.group.collateral def is_displayed(self): return self.player.id_in_group == 2 class Loan_amount(Page): form_model = 'group' form_fields = ['investment'] def before_next_page(self): player2 = self.group.get_players()[1] self.player.money += -self.group.investment player2.money += self.group.investment * Constants.productivity def is_displayed(self): return self.player.id_in_group == 1 class Loan_package(Page): form_model = 'group' form_fields = ['package_accepted'] def before_next_page(self): if self.group.satisfied == False: for i in self.group.get_players(): i.money = Constants.wealth def is_displayed(self): return self.player.id_in_group == 2 def vars_for_template(self): group = self.group Var_Temp = {} Var_Temp['expected_value'] = (group.investment * group.rate_of_return) Var_Temp['total_value'] = (group.investment * Constants.productivity) Var_Temp['left_over'] = (group.investment * Constants.productivity) - (group.investment * group.rate_of_return) return Var_Temp class Realize_return(Page): form_model = 'group' form_fields = ['lender_return'] def before_next_page(self): player1 = self.group.get_players()[0] player2 = self.group.get_players()[1] player1.money += self.group.lender_return player2.money += -self.group.lender_return def is_displayed(self): if self.group.package_accepted == True: return self.player.id_in_group == 2 def vars_for_template(self): group = self.group Var_Temp = {} Var_Temp['expected_return'] = (group.investment * group.rate_of_return) Var_Temp['expected_value'] = (group.investment * Constants.productivity) Var_Temp['left_over'] = (group.investment * Constants.productivity) - (group.investment * group.rate_of_return) return Var_Temp class Collateral_decision(Page): form_model = 'group' form_fields = ['satisfied'] def vars_for_template(self): group = self.group Var_Temp = {} Var_Temp['expected_return'] = (group.rate_of_return) Var_Temp['actual_return'] = group.investment/group.lender_return Var_Temp['expected_money'] = (group.investment * group.rate_of_return) Var_Temp['actual_money'] = group.lender_return return Var_Temp def before_next_page(self): if self.group.satisfied == True: player2 = self.group.get_players()[1] player2.money += self.group.collateral def is_displayed(self): if self.group.package_accepted == True: return self.player.id_in_group == 1 class Seize_collateral(Page): def before_next_page(self): if self.group.seize_collateral == False: player1 = self.group.get_players()[0] player1.money += self.group.collateral - Constants.salvage def is_displayed(self): if self.group.satisfied == True: if self.group.package_accepted == True: return self.player.id_in_group == 1 class Results(Page): pass class WaitForPlayer(WaitPage): pass page_sequence = [ General_instructions, Specific_instructions, WaitForPlayer, Determine_rate_of_return, WaitForPlayer, Collateral_offer, WaitForPlayer, Loan_amount, WaitForPlayer, Loan_package, WaitForPlayer, Realize_return, WaitForPlayer, Collateral_decision, WaitForPlayer, Seize_collateral, WaitForPlayer, Results, ]