from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants import random class Choice(Page): form_model = 'player' form_fields = ['requested_alternatives'] def error_message(self, values): if values['requested_alternatives']*self.subsession.information_cost > self.player.initial_deposit: return 'Так много информации Вам не по карману :(' if values['requested_alternatives'] + self.player.start_alternatives > 10: return 'Так много информации Вам ни к чему ;)' def vars_for_template(self): p = self.player ttt = '' show_add_alt = True if self.round_number > Constants.num_rounds / 2: if (p.in_round(1).student_group == '402' or p.in_round(1).student_group == '403'): # тем кто в 402 и 403 - информативную рекламу p.start_alternatives = 0 show_add_alt = True if self.subsession.alt_1_advert or p.alt_1_apple_red_farmer: p.alt_1_apple_red_farmer = True p.start_alternatives += 1 ttt += '1 ' if self.subsession.alt_2_advert or p.alt_2_apple_red_ordinary: p.alt_2_apple_red_ordinary = True p.start_alternatives += 1 ttt += '2 ' if self.subsession.alt_3_advert or p.alt_3_apple_blue_farmer: p.alt_3_apple_blue_farmer = True p.start_alternatives += 1 ttt += '3 ' if self.subsession.alt_4_advert or p.alt_4_apple_blue_ordinary: p.alt_4_apple_blue_ordinary = True p.start_alternatives += 1 ttt += '4 ' if self.subsession.alt_5_advert or p.alt_5_apple_green_farmer: p.alt_5_apple_green_farmer = True p.start_alternatives += 1 ttt += '5 ' if self.subsession.alt_6_advert or p.alt_6_apple_green_ordinary: p.alt_6_apple_green_ordinary = True p.start_alternatives += 1 ttt += '6 ' if self.subsession.alt_7_advert or p.alt_7_orange_red_farmer: p.alt_7_orange_red_farmer = True p.start_alternatives += 1 ttt += '7 ' if self.subsession.alt_8_advert or p.alt_8_orange_red_ordinary: p.alt_8_orange_red_ordinary = True p.start_alternatives += 1 ttt += '8 ' if self.subsession.alt_9_advert or p.alt_9_orange_blue_farmer: p.alt_9_orange_blue_farmer = True p.start_alternatives += 1 ttt += '9 ' if self.subsession.alt_10_advert or p.alt_10_orange_blue_ordinary: p.alt_10_orange_blue_ordinary = True p.start_alternatives += 1 ttt += '10 ' if self.subsession.alt_11_advert or p.alt_11_orange_green_farmer: p.alt_11_orange_green_farmer = True p.start_alternatives += 1 ttt += '11 ' if self.subsession.alt_12_advert or p.alt_12_orange_green_ordinary: p.alt_12_orange_green_ordinary = True p.start_alternatives += 1 ttt += '12 ' if self.subsession.alt_13_advert or p.alt_13_multi_red_farmer: p.alt_13_multi_red_farmer = True p.start_alternatives += 1 ttt += '13 ' if self.subsession.alt_14_advert or p.alt_14_multi_red_ordinary: p.alt_14_multi_red_ordinary = True p.start_alternatives += 1 ttt += '14 ' if self.subsession.alt_15_advert or p.alt_15_multi_blue_farmer: p.alt_15_multi_blue_farmer = True p.start_alternatives += 1 ttt += '15 ' if self.subsession.alt_16_advert or p.alt_16_multi_blue_ordinary: p.alt_16_multi_blue_ordinary = True p.start_alternatives += 1 ttt += '16 ' if self.subsession.alt_17_advert or p.alt_17_multi_green_farmer: p.alt_17_multi_green_farmer = True p.start_alternatives += 1 ttt += '17 ' if self.subsession.alt_18_advert or p.alt_18_multi_green_ordinary: p.alt_18_multi_green_ordinary = True p.start_alternatives += 1 ttt += '18 ' elif (p.in_round(1).student_group == '401' or p.in_round(1).student_group == '404'): # в 401 и 404 будет контрольная группа с полной информацией p.start_alternatives = 0 show_add_alt = False if self.subsession.alt_1_price>0: p.alt_1_apple_red_farmer = True p.start_alternatives += 1 ttt += '1 ' if self.subsession.alt_2_apple_red_ordinary: p.alt_2_apple_red_ordinary = True p.start_alternatives += 1 ttt += '2 ' if self.subsession.alt_3_apple_blue_farmer: p.alt_3_apple_blue_farmer = True p.start_alternatives += 1 ttt += '3 ' if self.subsession.alt_4_apple_blue_ordinary: p.alt_4_apple_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_5_apple_green_farmer: p.alt_5_apple_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_6_apple_green_ordinary: p.alt_6_apple_green_ordinary = True p.start_alternatives += 1 if self.subsession.alt_7_orange_red_farmer: p.alt_7_orange_red_farmer = True p.start_alternatives += 1 if self.subsession.alt_8_orange_red_ordinary: p.alt_8_orange_red_ordinary = True p.start_alternatives += 1 if self.subsession.alt_9_orange_blue_farmer: p.alt_9_orange_blue_farmer = True p.start_alternatives += 1 if self.subsession.alt_10_orange_blue_ordinary: p.alt_10_orange_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_11_orange_green_farmer: p.alt_11_orange_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_12_orange_green_ordinary: p.alt_12_orange_green_ordinary = True p.start_alternatives += 1 if self.subsession.alt_13_multi_red_farmer: p.alt_13_multi_red_farmer = True p.start_alternatives += 1 if self.subsession.alt_14_multi_red_ordinary: p.alt_14_multi_red_ordinary = True p.start_alternatives += 1 if self.subsession.alt_15_multi_blue_farmer: p.alt_15_multi_blue_farmer = True p.start_alternatives += 1 if self.subsession.alt_16_multi_blue_ordinary: p.alt_16_multi_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_17_multi_green_farmer: p.alt_17_multi_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_18_multi_green_ordinary: p.alt_18_multi_green_ordinary = True p.start_alternatives += 1 else: switch = random.randint(0, 1) if (switch == 0): p.start_alternatives = 0 if self.subsession.alt_1_advert or p.alt_1_apple_red_farmer: p.alt_1_apple_red_farmer = True p.start_alternatives += 1 ttt += '1 ' if self.subsession.alt_2_advert or p.alt_2_apple_red_ordinary: p.alt_2_apple_red_ordinary = True p.start_alternatives += 1 ttt += '2 ' if self.subsession.alt_3_advert or p.alt_3_apple_blue_farmer: p.alt_3_apple_blue_farmer = True p.start_alternatives += 1 ttt += '3 ' if self.subsession.alt_4_advert or p.alt_4_apple_blue_ordinary: p.alt_4_apple_blue_ordinary = True p.start_alternatives += 1 ttt += '4 ' if self.subsession.alt_5_advert or p.alt_5_apple_green_farmer: p.alt_5_apple_green_farmer = True p.start_alternatives += 1 ttt += '5 ' if self.subsession.alt_6_advert or p.alt_6_apple_green_ordinary: p.alt_6_apple_green_ordinary = True p.start_alternatives += 1 ttt += '6 ' if self.subsession.alt_7_advert or p.alt_7_orange_red_farmer: p.alt_7_orange_red_farmer = True p.start_alternatives += 1 ttt += '7 ' if self.subsession.alt_8_advert or p.alt_8_orange_red_ordinary: p.alt_8_orange_red_ordinary = True p.start_alternatives += 1 ttt += '8 ' if self.subsession.alt_9_advert or p.alt_9_orange_blue_farmer: p.alt_9_orange_blue_farmer = True p.start_alternatives += 1 ttt += '9 ' if self.subsession.alt_10_advert or p.alt_10_orange_blue_ordinary: p.alt_10_orange_blue_ordinary = True p.start_alternatives += 1 ttt += '10 ' if self.subsession.alt_11_advert or p.alt_11_orange_green_farmer: p.alt_11_orange_green_farmer = True p.start_alternatives += 1 ttt += '11 ' if self.subsession.alt_12_advert or p.alt_12_orange_green_ordinary: p.alt_12_orange_green_ordinary = True p.start_alternatives += 1 ttt += '12 ' if self.subsession.alt_13_advert or p.alt_13_multi_red_farmer: p.alt_13_multi_red_farmer = True p.start_alternatives += 1 ttt += '13 ' if self.subsession.alt_14_advert or p.alt_14_multi_red_ordinary: p.alt_14_multi_red_ordinary = True p.start_alternatives += 1 ttt += '14 ' if self.subsession.alt_15_advert or p.alt_15_multi_blue_farmer: p.alt_15_multi_blue_farmer = True p.start_alternatives += 1 ttt += '15 ' if self.subsession.alt_16_advert or p.alt_16_multi_blue_ordinary: p.alt_16_multi_blue_ordinary = True p.start_alternatives += 1 ttt += '16 ' if self.subsession.alt_17_advert or p.alt_17_multi_green_farmer: p.alt_17_multi_green_farmer = True p.start_alternatives += 1 ttt += '17 ' if self.subsession.alt_18_advert or p.alt_18_multi_green_ordinary: p.alt_18_multi_green_ordinary = True p.start_alternatives += 1 ttt += '18 ' elif (switch == 1): p.start_alternatives = 0 if self.subsession.alt_1_apple_red_farmer: p.alt_1_apple_red_farmer = True p.start_alternatives +=1 if self.subsession.alt_2_apple_red_ordinary: p.alt_2_apple_red_ordinary = True p.start_alternatives += 1 if self.subsession.alt_3_apple_blue_farmer: p.alt_3_apple_blue_farmer = True p.start_alternatives += 1 if self.subsession.alt_4_apple_blue_ordinary: p.alt_4_apple_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_5_apple_green_farmer: p.alt_5_apple_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_6_apple_green_ordinary: p.alt_6_apple_green_ordinary = True p.start_alternatives += 1 if self.subsession.alt_7_orange_red_farmer: p.alt_7_orange_red_farmer = True p.start_alternatives += 1 if self.subsession.alt_8_orange_red_ordinary: p.alt_8_orange_red_ordinary = True p.start_alternatives += 1 if self.subsession.alt_9_orange_blue_farmer: p.alt_9_orange_blue_farmer = True p.start_alternatives += 1 if self.subsession.alt_10_orange_blue_ordinary: p.alt_10_orange_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_11_orange_green_farmer: p.alt_11_orange_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_12_orange_green_ordinary: p.alt_12_orange_green_ordinary = True p.start_alternatives += 1 if self.subsession.alt_13_multi_red_farmer: p.alt_13_multi_red_farmer = True p.start_alternatives += 1 if self.subsession.alt_14_multi_red_ordinary: p.alt_14_multi_red_ordinary = True p.start_alternatives += 1 if self.subsession.alt_15_multi_blue_farmer: p.alt_15_multi_blue_farmer = True p.start_alternatives += 1 if self.subsession.alt_16_multi_blue_ordinary: p.alt_16_multi_blue_ordinary = True p.start_alternatives += 1 if self.subsession.alt_17_multi_green_farmer: p.alt_17_multi_green_farmer = True p.start_alternatives += 1 if self.subsession.alt_18_multi_green_ordinary: p.alt_18_multi_green_ordinary = True p.start_alternatives += 1 altern_avail = [] if p.alt_1_apple_red_farmer: drink = Juice() drink.name = Constants.juice_names[1] drink.number=1 drink.price=self.subsession.alt_1_price altern_avail.append(drink) if p.alt_2_apple_red_ordinary: drink = Juice() drink.name = Constants.juice_names[2] drink.number=2 drink.price=self.subsession.alt_2_price altern_avail.append(drink) if p.alt_3_apple_blue_farmer: drink = Juice() drink.name = Constants.juice_names[3] drink.number=3 drink.price=self.subsession.alt_3_price altern_avail.append(drink) if p.alt_4_apple_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[4] drink.number=4 drink.price=self.subsession.alt_4_price altern_avail.append(drink) if p.alt_5_apple_green_farmer: drink = Juice() drink.name = Constants.juice_names[5] drink.number=5 drink.price=self.subsession.alt_5_price altern_avail.append(drink) if p.alt_6_apple_green_ordinary: drink = Juice() drink.name = Constants.juice_names[6] drink.number=6 drink.price=self.subsession.alt_6_price altern_avail.append(drink) if p.alt_7_orange_red_farmer: drink = Juice() drink.name = Constants.juice_names[7] drink.number=7 drink.price=self.subsession.alt_7_price altern_avail.append(drink) if p.alt_8_orange_red_ordinary: drink = Juice() drink.name = Constants.juice_names[8] drink.number=8 drink.price=self.subsession.alt_8_price altern_avail.append(drink) if p.alt_9_orange_blue_farmer: drink = Juice() drink.name = Constants.juice_names[9] drink.number=9 drink.price=self.subsession.alt_9_price altern_avail.append(drink) if p.alt_10_orange_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[10] drink.number=10 drink.price=self.subsession.alt_10_price altern_avail.append(drink) if p.alt_11_orange_green_farmer: drink = Juice() drink.name = Constants.juice_names[11] drink.number=11 drink.price=self.subsession.alt_11_price altern_avail.append(drink) if p.alt_12_orange_green_ordinary: drink = Juice() drink.name = Constants.juice_names[12] drink.number=12 drink.price=self.subsession.alt_12_price altern_avail.append(drink) if p.alt_13_multi_red_farmer: drink = Juice() drink.name = Constants.juice_names[13] drink.number=13 drink.price=self.subsession.alt_13_price altern_avail.append(drink) if p.alt_14_multi_red_ordinary: drink = Juice() drink.name = Constants.juice_names[14] drink.number=14 drink.price=self.subsession.alt_14_price altern_avail.append(drink) if p.alt_15_multi_blue_farmer: drink = Juice() drink.name = Constants.juice_names[15] drink.number=15 drink.price=self.subsession.alt_15_price altern_avail.append(drink) if p.alt_16_multi_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[16] drink.number=16 drink.price=self.subsession.alt_16_price altern_avail.append(drink) if p.alt_17_multi_green_farmer: drink = Juice() drink.name = Constants.juice_names[17] drink.number=17 drink.price=self.subsession.alt_17_price altern_avail.append(drink) if p.alt_18_multi_green_ordinary: drink = Juice() drink.name = Constants.juice_names[18] drink.number=18 drink.price=self.subsession.alt_18_price altern_avail.append(drink) return { 'your_deposit': p.initial_deposit, 'current_round': self.round_number, 'altern_avail': altern_avail, 'info_cost': self.subsession.information_cost, 'requested': self.player.requested_alternatives, 'start_alt': self.player.start_alternatives, 'комната': p.in_round(1).room_group, 'группа': p.in_round(1).student_group, 'test': ttt, 'show_add_alt': show_add_alt } def before_next_page(self): p = self.player p.information_costs = self.subsession.information_cost * p.requested_alternatives p.buyer_deposit = p.initial_deposit - p.information_costs to_learn = [] if self.subsession.alt_1_apple_red_farmer and not p.alt_1_apple_red_farmer: to_learn.append(1) if self.subsession.alt_2_apple_red_ordinary and not p.alt_2_apple_red_ordinary: to_learn.append(2) if self.subsession.alt_3_apple_blue_farmer and not p.alt_3_apple_blue_farmer: to_learn.append(3) if self.subsession.alt_4_apple_blue_ordinary and not p.alt_4_apple_blue_ordinary: to_learn.append(4) if self.subsession.alt_5_apple_green_farmer and not p.alt_5_apple_green_farmer: to_learn.append(5) if self.subsession.alt_6_apple_green_ordinary and not p.alt_6_apple_green_ordinary: to_learn.append(6) if self.subsession.alt_7_orange_red_farmer and not p.alt_7_orange_red_farmer: to_learn.append(7) if self.subsession.alt_8_orange_red_ordinary and not p.alt_8_orange_red_ordinary: to_learn.append(8) if self.subsession.alt_9_orange_blue_farmer and not p.alt_9_orange_blue_farmer: to_learn.append(9) if self.subsession.alt_10_orange_blue_ordinary and not p.alt_10_orange_blue_ordinary: to_learn.append(10) if self.subsession.alt_11_orange_green_farmer and not p.alt_11_orange_green_farmer: to_learn.append(11) if self.subsession.alt_12_orange_green_ordinary and not p.alt_12_orange_green_ordinary: to_learn.append(12) if self.subsession.alt_13_multi_red_farmer and not p.alt_13_multi_red_farmer: to_learn.append(13) if self.subsession.alt_14_multi_red_ordinary and not p.alt_14_multi_red_ordinary: to_learn.append(14) if self.subsession.alt_15_multi_blue_farmer and not p.alt_15_multi_blue_farmer: to_learn.append(15) if self.subsession.alt_16_multi_blue_ordinary and not p.alt_16_multi_blue_ordinary: to_learn.append(16) if self.subsession.alt_17_multi_green_farmer and not p.alt_17_multi_green_farmer: to_learn.append(17) if self.subsession.alt_18_multi_green_ordinary and not p.alt_18_multi_green_ordinary: to_learn.append(18) learned = random.sample(to_learn, p.requested_alternatives) if 1 in learned: p.alt_1_apple_red_farmer = True if 2 in learned: p.alt_2_apple_red_ordinary = True if 3 in learned: p.alt_3_apple_blue_farmer = True if 4 in learned: p.alt_4_apple_blue_ordinary = True if 5 in learned: p.alt_5_apple_green_farmer = True if 6 in learned: p.alt_6_apple_green_ordinary = True if 7 in learned: p.alt_7_orange_red_farmer = True if 8 in learned: p.alt_8_orange_red_ordinary = True if 9 in learned: p.alt_9_orange_blue_farmer = True if 10 in learned: p.alt_10_orange_blue_ordinary = True if 11 in learned: p.alt_11_orange_green_farmer = True if 12 in learned: p.alt_12_orange_green_ordinary = True if 13 in learned: p.alt_13_multi_red_farmer = True if 14 in learned: p.alt_14_multi_red_ordinary = True if 15 in learned: p.alt_15_multi_blue_farmer = True if 16 in learned: p.alt_16_multi_blue_ordinary = True if 17 in learned: p.alt_17_multi_green_farmer = True if 18 in learned: p.alt_18_multi_green_ordinary = True class Purchase(Page): form_model = 'player' def error_message(self, values): total_cost = 0 prices_vector = [] if self.player.alt_1_apple_red_farmer: total_cost += values[Constants.form_names[1]]*self.subsession.alt_1_price if self.player.alt_2_apple_red_ordinary: total_cost += values[Constants.form_names[2]]*self.subsession.alt_2_price if self.player.alt_3_apple_blue_farmer: total_cost += values[Constants.form_names[3]]*self.subsession.alt_3_price if self.player.alt_4_apple_blue_ordinary: total_cost += values[Constants.form_names[4]]*self.subsession.alt_4_price if self.player.alt_5_apple_green_farmer: total_cost += values[Constants.form_names[5]]*self.subsession.alt_5_price if self.player.alt_6_apple_green_ordinary: total_cost += values[Constants.form_names[6]]*self.subsession.alt_6_price if self.player.alt_7_orange_red_farmer: total_cost += values[Constants.form_names[7]]*self.subsession.alt_7_price if self.player.alt_8_orange_red_ordinary: total_cost += values[Constants.form_names[8]]*self.subsession.alt_8_price if self.player.alt_9_orange_blue_farmer: total_cost += values[Constants.form_names[9]]*self.subsession.alt_9_price if self.player.alt_10_orange_blue_ordinary: total_cost += values[Constants.form_names[10]]*self.subsession.alt_10_price if self.player.alt_11_orange_green_farmer: total_cost += values[Constants.form_names[11]]*self.subsession.alt_11_price if self.player.alt_12_orange_green_ordinary: total_cost += values[Constants.form_names[12]]*self.subsession.alt_12_price if self.player.alt_13_multi_red_farmer: total_cost += values[Constants.form_names[13]] * self.subsession.alt_13_price if self.player.alt_14_multi_red_ordinary: total_cost += values[Constants.form_names[14]] * self.subsession.alt_14_price if self.player.alt_15_multi_blue_farmer: total_cost += values[Constants.form_names[15]] * self.subsession.alt_15_price if self.player.alt_16_multi_blue_ordinary: total_cost += values[Constants.form_names[16]] * self.subsession.alt_16_price if self.player.alt_17_multi_green_farmer: total_cost += values[Constants.form_names[17]] * self.subsession.alt_17_price if self.player.alt_18_multi_green_ordinary: total_cost += values[Constants.form_names[18]] * self.subsession.alt_18_price self.player.purchase_costs = total_cost if self.player.purchase_costs > self.player.buyer_deposit: return 'К сожалению, такой набор Вам не по карману :(' def get_form_fields(self): to_return = [] if self.player.alt_1_apple_red_farmer: to_return.append(Constants.form_names[1]) if self.player.alt_2_apple_red_ordinary: to_return.append(Constants.form_names[2]) if self.player.alt_3_apple_blue_farmer: to_return.append(Constants.form_names[3]) if self.player.alt_4_apple_blue_ordinary: to_return.append(Constants.form_names[4]) if self.player.alt_5_apple_green_farmer: to_return.append(Constants.form_names[5]) if self.player.alt_6_apple_green_ordinary: to_return.append(Constants.form_names[6]) if self.player.alt_7_orange_red_farmer: to_return.append(Constants.form_names[7]) if self.player.alt_8_orange_red_ordinary: to_return.append(Constants.form_names[8]) if self.player.alt_9_orange_blue_farmer: to_return.append(Constants.form_names[9]) if self.player.alt_10_orange_blue_ordinary: to_return.append(Constants.form_names[10]) if self.player.alt_11_orange_green_farmer: to_return.append(Constants.form_names[11]) if self.player.alt_12_orange_green_ordinary: to_return.append(Constants.form_names[12]) if self.player.alt_13_multi_red_farmer: to_return.append(Constants.form_names[13]) if self.player.alt_14_multi_red_ordinary: to_return.append(Constants.form_names[14]) if self.player.alt_15_multi_blue_farmer: to_return.append(Constants.form_names[15]) if self.player.alt_16_multi_blue_ordinary: to_return.append(Constants.form_names[16]) if self.player.alt_17_multi_green_farmer: to_return.append(Constants.form_names[17]) if self.player.alt_18_multi_green_ordinary: to_return.append(Constants.form_names[18]) return to_return def vars_for_template(self): p = self.player pay_round = self.round_number altern_avail = [] if self.player.alt_1_apple_red_farmer: drink = Juice() drink.name = Constants.juice_names[1] drink.number=1 drink.price=self.subsession.alt_1_price altern_avail.append(drink) if self.player.alt_2_apple_red_ordinary: drink = Juice() drink.name = Constants.juice_names[2] drink.number=2 drink.price=self.subsession.alt_2_price altern_avail.append(drink) if self.player.alt_3_apple_blue_farmer: drink = Juice() drink.name = Constants.juice_names[3] drink.number=3 drink.price=self.subsession.alt_3_price altern_avail.append(drink) if self.player.alt_4_apple_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[4] drink.number=4 drink.price=self.subsession.alt_4_price altern_avail.append(drink) if self.player.alt_5_apple_green_farmer: drink = Juice() drink.name = Constants.juice_names[5] drink.number=5 drink.price=self.subsession.alt_5_price altern_avail.append(drink) if self.player.alt_6_apple_green_ordinary: drink = Juice() drink.name = Constants.juice_names[6] drink.number=6 drink.price=self.subsession.alt_6_price altern_avail.append(drink) if self.player.alt_7_orange_red_farmer: drink = Juice() drink.name = Constants.juice_names[7] drink.number=7 drink.price=self.subsession.alt_7_price altern_avail.append(drink) if self.player.alt_8_orange_red_ordinary: drink = Juice() drink.name = Constants.juice_names[8] drink.number=8 drink.price=self.subsession.alt_8_price altern_avail.append(drink) if self.player.alt_9_orange_blue_farmer: drink = Juice() drink.name = Constants.juice_names[9] drink.number=9 drink.price=self.subsession.alt_9_price altern_avail.append(drink) if self.player.alt_10_orange_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[10] drink.number=10 drink.price=self.subsession.alt_10_price altern_avail.append(drink) if self.player.alt_11_orange_green_farmer: drink = Juice() drink.name = Constants.juice_names[11] drink.number=11 drink.price=self.subsession.alt_11_price altern_avail.append(drink) if self.player.alt_12_orange_green_ordinary: drink = Juice() drink.name = Constants.juice_names[12] drink.number=12 drink.price=self.subsession.alt_12_price altern_avail.append(drink) if self.player.alt_13_multi_red_farmer: drink = Juice() drink.name = Constants.juice_names[13] drink.number=13 drink.price=self.subsession.alt_13_price altern_avail.append(drink) if self.player.alt_14_multi_red_ordinary: drink = Juice() drink.name = Constants.juice_names[14] drink.number=14 drink.price=self.subsession.alt_14_price altern_avail.append(drink) if self.player.alt_15_multi_blue_farmer: drink = Juice() drink.name = Constants.juice_names[15] drink.number=15 drink.price=self.subsession.alt_15_price altern_avail.append(drink) if self.player.alt_16_multi_blue_ordinary: drink = Juice() drink.name = Constants.juice_names[16] drink.number=16 drink.price=self.subsession.alt_16_price altern_avail.append(drink) if self.player.alt_17_multi_green_farmer: drink = Juice() drink.name = Constants.juice_names[17] drink.number=17 drink.price=self.subsession.alt_17_price altern_avail.append(drink) if self.player.alt_18_multi_green_ordinary: drink = Juice() drink.name = Constants.juice_names[18] drink.number=18 drink.price=self.subsession.alt_18_price altern_avail.append(drink) return { 'your_deposit': self.player.buyer_deposit, 'current_round': self.round_number, 'altern_avail': altern_avail, 'info_cost': self.player.information_costs, 'requested': self.player.requested_alternatives, 'you_had': self.player.initial_deposit } class Survey(Page): form_model = 'player' form_fields = ['j_preferences', 'c_preferences', 'loves_farmer'] def is_displayed(self): return self.subsession.round_number==1 class Welcome(Page): form_model = 'player' form_fields = ['phone_number', 'room_group', 'student_group'] def is_displayed(self): return self.subsession.round_number==1 class TotalResult(Page): def vars_for_template(self): return { 'pay_round': self.session.vars['paying_round'] } def is_displayed(self): return self.subsession.round_number == Constants.num_rounds class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): pass def is_displayed(self): self.subsession.round_number == Constants.num_rounds class Results(Page): def vars_for_template(self): basket = '' p = self.player pay_round = self.round_number if self.player.alt_1_bought > 0: basket = basket + ' - ' + Constants.juice_names[1] + ': {}'.format(self.player.alt_1_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_1_price*self.player.alt_1_bought) if self.player.alt_2_bought > 0: basket = basket + ' - ' + Constants.juice_names[2] + ': {}'.format(self.player.alt_2_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_2_price*self.player.alt_2_bought) if self.player.alt_3_bought > 0: basket = basket + ' - ' + Constants.juice_names[3] + ': {}'.format(self.player.alt_3_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_3_price*self.player.alt_3_bought) if self.player.alt_4_bought > 0: basket = basket + ' - ' + Constants.juice_names[4] + ': {}'.format(self.player.alt_4_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_4_price*self.player.alt_4_bought) if self.player.alt_5_bought > 0: basket = basket + ' - ' + Constants.juice_names[5] + ': {}'.format(self.player.alt_5_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_5_price*self.player.alt_5_bought) if self.player.alt_6_bought > 0: basket = basket + ' - ' + Constants.juice_names[6] + ': {}'.format(self.player.alt_6_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_6_price*self.player.alt_6_bought) if self.player.alt_7_bought > 0: basket = basket + ' - ' + Constants.juice_names[7] + ': {}'.format(self.player.alt_7_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_7_price*self.player.alt_7_bought) if self.player.alt_8_bought > 0: basket = basket + ' - ' + Constants.juice_names[8] + ': {}'.format(self.player.alt_8_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_8_price*self.player.alt_8_bought) if self.player.alt_9_bought > 0: basket = basket + ' - ' + Constants.juice_names[9] + ': {}'.format(self.player.alt_9_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_9_price*self.player.alt_9_bought) if self.player.alt_10_bought > 0: basket = basket + ' - ' + Constants.juice_names[10] + ': {}'.format(self.player.alt_10_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_10_price*self.player.alt_10_bought) if self.player.alt_11_bought > 0: basket = basket + ' - ' + Constants.juice_names[11] + ': {}'.format(self.player.alt_11_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_11_price*self.player.alt_11_bought) if self.player.alt_12_bought > 0: basket = basket + ' - ' + Constants.juice_names[12] + ': {}'.format(self.player.alt_12_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_12_price*self.player.alt_12_bought) if self.player.alt_13_bought > 0: basket = basket + ' - ' + Constants.juice_names[13] + ': {}'.format(self.player.alt_13_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_13_price*self.player.alt_13_bought) if self.player.alt_14_bought > 0: basket = basket + ' - ' + Constants.juice_names[14] + ': {}'.format(self.player.alt_14_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_14_price*self.player.alt_14_bought) if self.player.alt_15_bought > 0: basket = basket + ' - ' + Constants.juice_names[15] + ': {}'.format(self.player.alt_15_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_15_price*self.player.alt_15_bought) if self.player.alt_16_bought > 0: basket = basket + ' - ' + Constants.juice_names[16] + ': {}'.format(self.player.alt_16_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_16_price*self.player.alt_16_bought) if self.player.alt_17_bought > 0: basket = basket + ' - ' + Constants.juice_names[17] + ': {}'.format(self.player.alt_17_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_17_price*self.player.alt_17_bought) if self.player.alt_18_bought > 0: basket = basket + ' - ' + Constants.juice_names[18] + ': {}'.format(self.player.alt_18_bought) + \ """ (это стоило {} ₽) """.format(self.subsession.alt_18_price*self.player.alt_18_bought) if basket == '': basket = 'Ничего Вы не купили :(' return { 'your_remains': self.player.buyer_deposit - self.player.purchase_costs, 'current_round': self.round_number, 'customer_basket': basket, 'info_cost': self.player.information_costs, 'customer_costs': self.player.purchase_costs, 'you_had': self.player.initial_deposit } class Juice (object): price = 0 fruit = 'fruit' color = 'color' farmer = 'no' number = 0, name = 'Наименование' page_sequence = [ Welcome, Survey, Choice, Purchase, ResultsWaitPage, Results, TotalResult ]