from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Introduction(Page): pass class Owner(Page): form_model = 'player' form_fields = ['contract'] def is_displayed(self): return self.player.id_in_group == Constants.company1_owner_id or self.player.id_in_group == Constants.company2_owner_id def vars_for_template(self): profit00_lst = self.group.cal_table00() sales01_lst = self.group.cal_table01() return dict( profit001_lst = profit00_lst[0], profit002_lst = profit00_lst[1], profit003_lst = profit00_lst[2], profit004_lst = profit00_lst[3], sales011_lst = sales01_lst[0], sales012_lst = sales01_lst[1], sales013_lst = sales01_lst[2], sales014_lst = sales01_lst[3], ) class Wait1(WaitPage): pass class Information(Page): def is_displayed(self): return self.player.id_in_group == Constants.company1_owner_id or self.player.id_in_group == Constants.company2_owner_id def vars_for_template(self): return dict( # 企業1の株主 c1 = self.group.get_player_by_id(Constants.company1_owner_id).contract, # 企業2の株主 c2 = self.group.get_player_by_id(Constants.company2_owner_id).contract, ) class Manager(Page): form_model = 'player' form_fields = ['production'] def is_displayed(self): return self.player.id_in_group == Constants.company1_manager_id or self.player.id_in_group == Constants.company2_manager_id def vars_for_template(self): c1_owner_decision = self.group.get_player_by_id(Constants.company1_owner_id).contract c2_owner_decision = self.group.get_player_by_id(Constants.company2_owner_id).contract # 利得表算出関数を実行 # なおritoku11_lstは二次元配列 ritoku11_lst = self.group.cal_table11() ritoku22_lst = self.group.cal_table22() return dict( c1 = c1_owner_decision, c2 = c2_owner_decision, # 2次元配列なので普通のリストに一個ずつ取り出す(自社もライバルも契約1、自社1とライバル2のパターンも同値) ritoku111_lst = ritoku11_lst[0], ritoku112_lst = ritoku11_lst[1], ritoku113_lst = ritoku11_lst[2], ritoku114_lst = ritoku11_lst[3], # 2次元配列なので普通のリストに一個ずつ取り出す(自社もライバルも契約2、自社2とライバル1のパターンも同値) ritoku221_lst = ritoku22_lst[0], ritoku222_lst = ritoku22_lst[1], ritoku223_lst = ritoku22_lst[2], ritoku224_lst = ritoku22_lst[3], ) class ResultsWaitPage(WaitPage): after_all_players_arrive = 'set_ritoku' class Results(Page): def vars_for_template(self): return dict( # 企業1の所有者 c1 = self.group.get_player_by_id(Constants.company1_owner_id).contract, # 企業2の所有者 c2 = self.group.get_player_by_id(Constants.company2_owner_id).contract, # 企業1の経営者 company1_production = self.group.get_player_by_id(Constants.company1_manager_id).production, # 企業2の経営者 company2_production = self.group.get_player_by_id(Constants.company2_manager_id).production, # 経営者の生産量の合計 total_production = self.group.get_player_by_id(Constants.company1_manager_id).production + self.group.get_player_by_id(Constants.company2_manager_id).production, # 市場価格 price = Constants.a - (self.group.get_player_by_id(Constants.company1_manager_id).production + self.group.get_player_by_id(Constants.company2_manager_id).production), ) page_sequence = [ Introduction, Owner, Wait1, Information, Manager, ResultsWaitPage, Results, ]