from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'ChangeOrders' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 PROD1_DEMAND = 593 PROD2_DEMAND = 515 PROD3_DEMAND = 464 RETAIL = 57 WHOLESALE = 9 RETAILPROD1 = 57 WHOLESALEPROD1 = 9 MEANPROD1 = 400 SDPROD1 = 100 PROFITCALC = 0.002 MEANPROD2 = 500 MEANPROD3 = 600 SDPROD2 = 300 SDPROD3 = 200 MEANPROD4 = 500 MEANPROD5 = 500 MEANPROD6 = 600 MEANPROD7 = 500 MEANPROD8 = 400 MEANPROD9 = 500 MEANPROD10 = 600 MEANPROD11 = 400 MEANPROD12 = 500 SDPROD4 = 300 SDPROD5 = 200 SDPROD6 = 100 SDPROD7 = 100 SDPROD8 = 300 SDPROD9 = 100 SDPROD10 = 300 SDPROD11 = 200 SDPROD12 = 200 WHOLESALEPROD4 = 9.5 WHOLESALEPROD7 = 1.3 PROD4_DEMAND = 696 PROD5_DEMAND = 441 PROD6_DEMAND = 437 PROD7_DEMAND = 422 PROD8_DEMAND = 628 PROD9_DEMAND = 378 PROD10_DEMAND = 710 PROD11_DEMAND = 427 PROD12_DEMAND = 439 class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session #import random #for player in subsession.get_players(): # player.treatment = random.choice([1,2,3]) import random # Define the choices and their corresponding probabilities choices = [1, 2, 3] weights = [0.50, 0.20, 0.30] # Choose a random number based on the specified probabilities for player in subsession.get_players(): player.treatment = random.choices(choices, weights, k=1)[0] class Group(BaseGroup): pass class Player(BasePlayer): gender = models.StringField(blank=True, label='If comfortable, please write your gender below.') student_status = models.StringField(choices=[['Yes', 'Yes'], ['No', 'No']], label='Are you presently either a Junior or Senior undergraduate or graduate student studying Supply Chain Management or another related field?', widget=widgets.RadioSelectHorizontal) Q1_1 = models.IntegerField(label='How much would you like to order of product 1? ', max=1500, min=0) Q1_3 = models.IntegerField(label='How much would you like to order of product 3? ', max=1500, min=0) Q1_2 = models.IntegerField(label='How much would you like to order of product 2? ', max=1500, min=0) Prod1_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 1 for the change fee listed above?', widget=widgets.RadioSelect) Prod2_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 2 for the change fee listed above?', widget=widgets.RadioSelect) Prod3_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 3 for the change fee listed above?', widget=widgets.RadioSelect) Q2_1 = models.IntegerField(initial=0, label='How much would you like to order of product 1? ', max=1500, min=1) Q2_2 = models.IntegerField(blank=True, initial=0, label='How much would you like to order of product 2? ', max=1500, min=1) Q2_3 = models.IntegerField(initial=0, label='How much would you like to order of product 3? ', max=1500, min=1) Prod1_Order = models.IntegerField() Prod2_Profit = models.IntegerField() Prod2_Order = models.IntegerField() Prod3_Order = models.IntegerField() Prod3_Profit = models.IntegerField() my_field = models.IntegerField() TotalProfit = models.IntegerField() Payout = models.FloatField() Prod1_Profit = models.IntegerField() Consent = models.IntegerField(choices=[[1, 'Yes']], label='By clicking yes below, you are consenting to participating in this experiment.', widget=widgets.RadioSelectHorizontal) treatment = models.IntegerField(initial=0) change_fee = models.IntegerField() Prod4_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 4 for the change fee listed above?', widget=widgets.RadioSelect) Prod5_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 5 for the change fee listed above?', widget=widgets.RadioSelect) Prod6_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 6 for the change fee listed above?', widget=widgets.RadioSelect) Prod7_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 7 for the change fee listed above?', widget=widgets.RadioSelect) Prod8_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 8 for the change fee listed above?', widget=widgets.RadioSelect) Prod9_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 9 for the change fee listed above?', widget=widgets.RadioSelect) Prod10_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 10 for the change fee listed above?', widget=widgets.RadioSelect) Prod11_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 11 for the change fee listed above?', widget=widgets.RadioSelect) Prod12_update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 12 for the change fee listed above?', widget=widgets.RadioSelect) Q1_4 = models.IntegerField(label='How much would you like to order of product 4? ', max=1500, min=0) Q1_5 = models.IntegerField(label='How much would you like to order of product 5? ', max=1500, min=0) Q1_6 = models.IntegerField(label='How much would you like to order of product 6? ', max=1500, min=0) Q1_7 = models.IntegerField(label='How much would you like to order of product 7? ', max=1500, min=0) Q1_8 = models.IntegerField(label='How much would you like to order of product 8? ', max=1500, min=0) Q1_9 = models.IntegerField(label='How much would you like to order of product 9? ', max=1500, min=0) Q1_10 = models.IntegerField(label='How much would you like to order of product 10? ', max=1500, min=0) Q1_11 = models.IntegerField(label='How much would you like to order of product 11? ', max=1500, min=0) Q1_12 = models.IntegerField(label='How much would you like to order of product 12? ', max=1500, min=0) Q2_4 = models.IntegerField(initial=0, label='How much would you like to order of product 4? ', max=1500, min=1) Q2_5 = models.IntegerField(initial=0, label='How much would you like to order of product 5? ', max=1500, min=1) Q2_6 = models.IntegerField(initial=0, label='How much would you like to order of product 6? ', max=1500, min=1) Q2_7 = models.IntegerField(initial=0, label='How much would you like to order of product 7? ', max=1500, min=0) Q2_8 = models.IntegerField(initial=0, label='How much would you like to order of product 8? ', max=1500, min=1) Q2_9 = models.IntegerField(initial=0, label='How much would you like to order of product 9? ', max=1500, min=0) Q2_10 = models.IntegerField(initial=0, label='How much would you like to order of product 10? ', max=1500, min=0) Q2_11 = models.IntegerField(initial=0, label='How much would you like to order of product 11? ', max=1500, min=0) Q2_12 = models.IntegerField(initial=0, label='How much would you like to order of product 12? ', max=1500, min=0) Prod4_Order = models.IntegerField() Prod5_Order = models.IntegerField() Prod6_Order = models.IntegerField() Prod7_Order = models.IntegerField() Prod8_Order = models.IntegerField() Prod9_Order = models.IntegerField() Prod10_Order = models.IntegerField() Prod11_Order = models.IntegerField() Prod12_Order = models.IntegerField() Prod4_Profit = models.IntegerField() Prod5_Profit = models.IntegerField() Prod6_Profit = models.IntegerField() Prod7_Profit = models.IntegerField() Prod8_Profit = models.IntegerField() Prod9_Profit = models.IntegerField() Prod10_Profit = models.IntegerField() Prod11_Profit = models.IntegerField() Prod12_Profit = models.IntegerField() P1_1 = models.IntegerField(label='How much would you like to order of product 1?') P1_2 = models.IntegerField(label='How much would you like to order of product 2? ') P1_3 = models.IntegerField(label='How much would you like to order of product 3? ') PR1_Update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 1 for the change fee listed above?', widget=widgets.RadioSelect) PR2_Update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 2 for the change fee listed above?', widget=widgets.RadioSelect) PR3_Update = models.IntegerField(choices=[[1, 'Yes'], [0, 'No']], label='Would you like to update your order for product 3 for the change fee listed above?', widget=widgets.RadioSelect) P2_1 = models.IntegerField(initial=0, label='How much would you like to order of product 1? ', max=250, min=1) P2_2 = models.IntegerField(initial=0, label='How much would you like to order of product 2? ', max=250, min=1) P2_3 = models.IntegerField(initial=0, label='How much would you like to order of product 3? ', max=250, min=1) PR1_Order = models.IntegerField() PR2_Order = models.IntegerField() PR3_Order = models.IntegerField() PR1_Profit = models.IntegerField() PR2_Profit = models.IntegerField() PR3_Profit = models.IntegerField() P1_Mean = models.IntegerField(blank=True, choices=[[1, 'Mean']], initial=0, label=' ', widget=widgets.RadioSelect) P1_Std = models.IntegerField(blank=True, choices=[[1, 'Standard Deviation']], initial=0, label=' ', widget=widgets.RadioSelect) P1_PP = models.IntegerField(blank=True, choices=[[1, 'Purchase Price']], initial=0, label=' ', widget=widgets.RadioSelect) P2_Mean = models.IntegerField(blank=True, choices=[[1, 'Mean']], initial=0, label=' ', widget=widgets.RadioSelect) P2_Std = models.IntegerField(blank=True, choices=[[1, 'Standard Deviation']], initial=0, label=' ', widget=widgets.RadioSelect) P2_PP = models.IntegerField(blank=True, choices=[[1, 'Purchase Price']], initial=0, label=' ', widget=widgets.RadioSelect) P3_Mean = models.IntegerField(blank=True, choices=[[1, 'Mean']], initial=0, label=' ', widget=widgets.RadioSelect) P3_Std = models.IntegerField(blank=True, choices=[[1, 'Standard Deviation']], initial=0, label=' ', widget=widgets.RadioSelect) P3_PP = models.IntegerField(blank=True, choices=[[1, 'Purchase Price']], initial=0, label=' ', widget=widgets.RadioSelect) DidChange = models.LongStringField(label='Did you change any of your ordering quantities after the update? Why? ') MeanLikerd = models.IntegerField(choices=[[1, 'Not at all important'], [2, 'Low importance'], [3, 'Slightly important'], [4, 'Neutral'], [5, 'Moderately important'], [6, 'Very important'], [7, 'Extremely important']], label='MEAN', widget=widgets.RadioSelect) STDLikerd = models.IntegerField(choices=[[1, 'Not at all important'], [2, 'Low importance'], [3, 'Slightly important'], [4, 'Neutral'], [5, 'Moderately important'], [6, 'Very important'], [7, 'Extremely important']], label='STANDARD DEVIATION', widget=widgets.RadioSelect) PPLikerd = models.IntegerField(choices=[[1, 'Not at all important'], [2, 'Low importance'], [3, 'Slightly important'], [4, 'Neutral'], [5, 'Moderately important'], [6, 'Very important'], [7, 'Extremely important']], label='PURCHASE PRICE', widget=widgets.RadioSelect) MeanAwareness = models.IntegerField(choices=[[1, 'Not at all aware'], [2, 'Slightly aware'], [3, 'Somewhat aware'], [4, 'Moderately aware'], [5, 'Extremely aware']], label='MEAN', widget=widgets.RadioSelect) STDAWARENESS = models.IntegerField(choices=[[1, 'Not at all aware'], [2, 'Slightly aware'], [3, 'Somewhat aware'], [4, 'Moderately aware'], [5, 'Extremely aware']], label='STANDARD DEVIATION', widget=widgets.RadioSelect) PPAware = models.IntegerField(choices=[[1, 'Not at all aware'], [2, 'Slightly aware'], [3, 'Somewhat aware'], [4, 'Moderately aware'], [5, 'Extremely aware']], label='PURCHASE PRICE', widget=widgets.RadioSelect) totalearned = models.CurrencyField() Age = models.IntegerField(blank=True, label='What is your age?') VenmoPIN = models.StringField(blank=True, label='To be paid, please make up a 4 digit PIN. Use this PIN to request your earned amount using the Venmo QR code on this page (in the "What\'s this for?" area, write your PIN number). ') NoVenmo = models.StringField(blank=True, label='No Venmo? Please give your cashapp handle, paypal information, or your favorite charity to donate your earnings to!') RiskAssessment = models.IntegerField(choices=[[1, 'Fully unwilling to take risks'], [2, 'Unwilling to take risks'], [3, 'Somewhat unwilling to take risks'], [4, 'Neutral'], [5, 'Somewhat prepared to take risks'], [6, 'Prepared to take risks'], [7, 'Fully prepared to take risks']], label=' Are you generally a person who is fully prepared to take risks or do you try to avoid taking risks?') class Consent(Page): form_model = 'player' form_fields = ['gender', 'Age', 'student_status', 'Consent'] @staticmethod def before_next_page(player: Player, timeout_happened): if player.treatment == 1: player.change_fee = 400 elif player.treatment == 2: player.change_fee = 200 else: player.change_fee = 0 class Instructionsp1(Page): form_model = 'player' class Instructionsp2(Page): form_model = 'player' class Instructionsp3(Page): form_model = 'player' class Instructionsp4(Page): form_model = 'player' class PRFirstDecisions(Page): form_model = 'player' form_fields = ['P1_1', 'P1_2', 'P1_3'] class PRWait(Page): form_model = 'player' class PR1Update(Page): form_model = 'player' form_fields = ['P1_Mean', 'P1_Std', 'P1_PP', 'PR1_Update'] class PR1NewOrder(Page): form_model = 'player' form_fields = ['P2_1'] @staticmethod def is_displayed(player: Player): return player.PR1_Update == 1 class PR2Update(Page): form_model = 'player' form_fields = ['P2_Mean', 'P2_Std', 'P2_PP', 'PR2_Update'] class PR2NewOrder(Page): form_model = 'player' form_fields = ['P2_2'] @staticmethod def is_displayed(player: Player): return player.PR2_Update == 1 class PR3Update(Page): form_model = 'player' form_fields = ['P3_Mean', 'P3_Std', 'P3_PP', 'PR3_Update'] class PR3NewOrder(Page): form_model = 'player' form_fields = ['P2_3'] @staticmethod def is_displayed(player: Player): return player.PR3_Update == 1 class PRFinished(Page): form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): if player.PR1_Update==1: player.PR1_Order=player.P2_1 else: player.PR1_Order=player.P1_1 if player.PR2_Update==1: player.PR2_Order=player.P2_2 else: player.PR2_Order=player.P1_2 if player.PR3_Update==1: player.PR3_Order=player.P2_3 else: player.PR3_Order=player.P1_3 class PRResults(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): if player.PR1_Update==1: player.PR1_Profit=min(player.P2_1,111)*15-player.P2_1*3-10 else: player.PR1_Profit=min(player.P1_1,111)*15-round(player.P1_1*3.5) if player.PR2_Update==1: player.PR2_Profit=min(player.P2_2,83)*15-player.P2_2*4-round(7.5) else: player.PR2_Profit=min(player.P1_2,83)*15-round(player.P1_2*3.5) if player.PR3_Update==1: player.PR3_Profit=min(player.P2_3,109)*15-round(player.P2_3*3.5)-15 else: player.PR3_Profit=min(player.P1_3,109)*15-round(player.P1_3*3.5) return dict(player=player) class MovetoGame(Page): form_model = 'player' class FirstDecisions(Page): form_model = 'player' form_fields = ['Q1_1', 'Q1_2', 'Q1_3', 'Q1_4', 'Q1_5', 'Q1_6', 'Q1_7', 'Q1_8', 'Q1_9', 'Q1_10', 'Q1_11', 'Q1_12'] class Wait(Page): form_model = 'player' class Product1Update(Page): form_model = 'player' form_fields = ['Prod1_update'] class Product1NewOrder(Page): form_model = 'player' form_fields = ['Q2_1'] @staticmethod def is_displayed(player: Player): return player.Prod1_update == 1 class Product2Update(Page): form_model = 'player' form_fields = ['Prod2_update'] class Product2NewOrder(Page): form_model = 'player' form_fields = ['Q2_2'] @staticmethod def is_displayed(player: Player): return player.Prod2_update == 1 class Product3Update(Page): form_model = 'player' form_fields = ['Prod3_update'] class Product3NewOrder(Page): form_model = 'player' form_fields = ['Q2_3'] @staticmethod def is_displayed(player: Player): return player.Prod3_update == 1 class Product4Update(Page): form_model = 'player' form_fields = ['Prod4_update'] class Product4NewOrder(Page): form_model = 'player' form_fields = ['Q2_4'] @staticmethod def is_displayed(player: Player): return player.Prod4_update == 1 class Product5Update(Page): form_model = 'player' form_fields = ['Prod5_update'] class Product5NewOrder(Page): form_model = 'player' form_fields = ['Q2_5'] @staticmethod def is_displayed(player: Player): return player.Prod5_update == 1 class Product6Update(Page): form_model = 'player' form_fields = ['Prod6_update'] class Product6NewOrder(Page): form_model = 'player' form_fields = ['Q2_6'] @staticmethod def is_displayed(player: Player): return player.Prod6_update == 1 class Product7Update(Page): form_model = 'player' form_fields = ['Prod7_update'] class Product7NewOrder(Page): form_model = 'player' form_fields = ['Q2_7'] @staticmethod def is_displayed(player: Player): return player.Prod7_update == 1 class Product8Update(Page): form_model = 'player' form_fields = ['Prod8_update'] class Product8NewOrder(Page): form_model = 'player' form_fields = ['Q2_8'] @staticmethod def is_displayed(player: Player): return player.Prod8_update == 1 class Product9Update(Page): form_model = 'player' form_fields = ['Prod9_update'] class Product9NewOrder(Page): form_model = 'player' form_fields = ['Q2_9'] @staticmethod def is_displayed(player: Player): return player.Prod9_update == 1 class Product10Update(Page): form_model = 'player' form_fields = ['Prod10_update'] class Product10NewOrder(Page): form_model = 'player' form_fields = ['Q2_10'] @staticmethod def is_displayed(player: Player): return player.Prod10_update == 1 class Product11Update(Page): form_model = 'player' form_fields = ['Prod11_update'] class Product11NewOrder(Page): form_model = 'player' form_fields = ['Q2_11'] @staticmethod def is_displayed(player: Player): return player.Prod11_update == 1 class Product12Update(Page): form_model = 'player' form_fields = ['Prod12_update'] class Product12NewOrder(Page): form_model = 'player' form_fields = ['Q2_12'] @staticmethod def is_displayed(player: Player): return player.Prod12_update == 1 class Finished(Page): form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): if player.Prod1_update==1: player.Prod1_Order=player.Q2_1 else: player.Prod1_Order=player.Q1_1 if player.Prod2_update==1: player.Prod2_Order=player.Q2_2 else: player.Prod2_Order=player.Q1_2 if player.Prod3_update==1: player.Prod3_Order=player.Q2_3 else: player.Prod3_Order=player.Q1_3 if player.Prod4_update==1: player.Prod4_Order=player.Q2_4 else: player.Prod4_Order=player.Q1_4 if player.Prod5_update==1: player.Prod5_Order=player.Q2_5 else: player.Prod5_Order=player.Q1_5 if player.Prod6_update==1: player.Prod6_Order=player.Q2_6 else: player.Prod6_Order=player.Q1_6 if player.Prod7_update==1: player.Prod7_Order=player.Q2_7 else: player.Prod7_Order=player.Q1_7 if player.Prod8_update==1: player.Prod8_Order=player.Q2_8 else: player.Prod8_Order=player.Q1_8 if player.Prod9_update==1: player.Prod9_Order=player.Q2_9 else: player.Prod9_Order=player.Q1_9 if player.Prod10_update==1: player.Prod10_Order=player.Q2_10 else: player.Prod10_Order=player.Q1_10 if player.Prod11_update==1: player.Prod11_Order=player.Q2_11 else: player.Prod11_Order=player.Q1_11 if player.Prod12_update==1: player.Prod12_Order=player.Q2_12 else: player.Prod12_Order=player.Q1_12 class ProductResults(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): if player.Prod1_update==1: player.Prod1_Profit=min(player.Q2_1,C.PROD1_DEMAND)*C.RETAIL-player.Q2_1*C.WHOLESALE-player.change_fee else: player.Prod1_Profit=min(player.Q1_1,C.PROD1_DEMAND)*C.RETAIL-player.Q1_1*C.WHOLESALE if player.Prod2_update==1: player.Prod2_Profit=min(player.Q2_2,C.PROD2_DEMAND)*C.RETAIL-player.Q2_2*C.WHOLESALE-player.change_fee else: player.Prod2_Profit=min(player.Q1_2,C.PROD2_DEMAND)*C.RETAIL-player.Q1_2*C.WHOLESALE if player.Prod3_update==1: player.Prod3_Profit=min(player.Q2_3,C.PROD3_DEMAND)*C.RETAIL-player.Q2_3*C.WHOLESALE-player.change_fee else: player.Prod3_Profit=min(player.Q1_3,C.PROD3_DEMAND)*C.RETAIL-player.Q1_3*C.WHOLESALE if player.Prod4_update==1: player.Prod4_Profit=min(player.Q2_4,C.PROD4_DEMAND)*C.RETAIL-round(player.Q2_4*9.5)-player.change_fee else: player.Prod4_Profit=min(player.Q1_4,C.PROD4_DEMAND)*C.RETAIL-player.Q1_4*C.WHOLESALE if player.Prod5_update==1: player.Prod5_Profit=min(player.Q2_5,C.PROD5_DEMAND)*C.RETAIL-player.Q2_5*C.WHOLESALE-player.change_fee else: player.Prod5_Profit=min(player.Q1_5,C.PROD5_DEMAND)*C.RETAIL-player.Q1_5*C.WHOLESALE if player.Prod6_update==1: player.Prod6_Profit=min(player.Q2_6,C.PROD3_DEMAND)*C.RETAIL-player.Q2_6*C.WHOLESALE-player.change_fee else: player.Prod6_Profit=min(player.Q1_6,C.PROD6_DEMAND)*C.RETAIL-player.Q1_6*C.WHOLESALE if player.Prod7_update==1: player.Prod7_Profit=min(player.Q2_7,C.PROD7_DEMAND)*C.RETAIL-round(player.Q2_7*1.3)-player.change_fee else: player.Prod7_Profit=min(player.Q1_7,C.PROD7_DEMAND)*C.RETAIL-player.Q1_7*C.WHOLESALE if player.Prod8_update==1: player.Prod8_Profit=min(player.Q2_8,C.PROD8_DEMAND)*C.RETAIL-player.Q2_8*C.WHOLESALE-player.change_fee else: player.Prod8_Profit=min(player.Q1_8,C.PROD8_DEMAND)*C.RETAIL-player.Q1_8*C.WHOLESALE if player.Prod9_update==1: player.Prod9_Profit=min(player.Q2_9,C.PROD9_DEMAND)*C.RETAIL-player.Q2_9*C.WHOLESALE-player.change_fee else: player.Prod9_Profit=min(player.Q1_9,C.PROD9_DEMAND)*C.RETAIL-player.Q1_9*C.WHOLESALE if player.Prod10_update==1: player.Prod10_Profit=min(player.Q2_10,C.PROD10_DEMAND)*C.RETAIL-player.Q2_10*C.WHOLESALE-player.change_fee else: player.Prod10_Profit=min(player.Q1_10,C.PROD10_DEMAND)*C.RETAIL-player.Q1_10*C.WHOLESALE if player.Prod11_update==1: player.Prod11_Profit=min(player.Q2_11,C.PROD11_DEMAND)*C.RETAIL-player.Q2_11*C.WHOLESALE-player.change_fee else: player.Prod11_Profit=min(player.Q1_11,C.PROD11_DEMAND)*C.RETAIL-player.Q1_11*C.WHOLESALE if player.Prod12_update==1: player.Prod12_Profit=min(player.Q2_12,C.PROD12_DEMAND)*C.RETAIL-player.Q2_12*C.WHOLESALE-player.change_fee else: player.Prod12_Profit=min(player.Q1_12,C.PROD12_DEMAND)*C.RETAIL-player.Q1_12*C.WHOLESALE return dict(player=player) @staticmethod def before_next_page(player: Player, timeout_happened): player.TotalProfit=player.Prod1_Profit+player.Prod2_Profit+player.Prod3_Profit+player.Prod4_Profit+player.Prod5_Profit+player.Prod6_Profit+player.Prod7_Profit+player.Prod8_Profit+player.Prod9_Profit+player.Prod10_Profit+player.Prod11_Profit+player.Prod12_Profit player.payoff=player.TotalProfit*.00002 player.totalearned=player.payoff+5 class Likerd1(Page): form_model = 'player' form_fields = ['MeanLikerd', 'STDLikerd', 'PPLikerd'] class Likert2(Page): form_model = 'player' form_fields = ['MeanAwareness', 'STDAWARENESS', 'PPAware'] class Qualitative(Page): form_model = 'player' form_fields = ['DidChange', 'RiskAssessment'] class Payoff(Page): form_model = 'player' form_fields = ['VenmoPIN', 'NoVenmo'] class End(Page): form_model = 'player' page_sequence = [Consent, Instructionsp1, Instructionsp2, Instructionsp3, Instructionsp4, PRFirstDecisions, PRWait, PR1Update, PR1NewOrder, PR2Update, PR2NewOrder, PR3Update, PR3NewOrder, PRFinished, PRResults, MovetoGame, FirstDecisions, Wait, Product1Update, Product1NewOrder, Product2Update, Product2NewOrder, Product3Update, Product3NewOrder, Product4Update, Product4NewOrder, Product5Update, Product5NewOrder, Product6Update, Product6NewOrder, Product7Update, Product7NewOrder, Product8Update, Product8NewOrder, Product9Update, Product9NewOrder, Product10Update, Product10NewOrder, Product11Update, Product11NewOrder, Product12Update, Product12NewOrder, Finished, ProductResults, Likerd1, Likert2, Qualitative, Payoff, End]