from otree.api import * import random doc = """ news_prosumers_4: news task """ class C(BaseConstants): NAME_IN_URL = 'news_prosumers_4' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 price = 0.10 secondgen = ["T1", "T3"] # News U0_1 = "The Euro came into existence on 1 January 1999. Physical euro coins and banknotes entered into " \ "circulation on 1 January 2002." U0_2 = "The Euro logo is inspired by the Greek letter epsilon with two horizontal bars which symbolize its " \ "stability and strength, at the same time recalling the E for Europe. " U0_3 = "The diameter of the 1 Euro coin is 23.25mm." U1_1 = "The 5-cent (0.05) coin from Italy features the Coliseum of Rome, the famous amphitheatre built by " \ "emperors Vespasian and Titus that was inaugurated in 80 AD." U1_2 = "The €1 coin from Austria shows the portrait of Wolfgang Amadeus Mozart, the famous Austrian composer, " \ "and his signature." U1_3 = "The 50-cent (0.5) coin from Slovenia depicts Mount Triglav, Slovenia’s highest mountain." U2_1 = "In tables with only golden coins, the value is either 0.1, 0.2 or 0.5." U2_2 = "In tables with only copper coins, the value is either 0.01, 0.02 or 0.05." U2_3 = "Golden coins with a silver frame are worth 2 while silver coins with a golden frame are worth 1." U3_1 = "The first three coins are worth 0.50, 1 and 2 Euro, respectively." U3_2 = "The Country of the first three coins to identify in the following task will be Vatican City." U3_3 = "The first coin to identify in the following task will be 0.50 Euro from Vatican City." class News(ExtraModel): info = models.IntegerField() read = models.IntegerField() stars = models.FloatField() starspeople = models.IntegerField() comments = models.IntegerField() content = models.LongStringField() starsrating = models.StringField() class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): rows = read_csv(__name__ + '/Info_COMMENTS_STARS.csv', News) number_news = len(rows) info = [] read = [] stars = [] starspeople = [] comments = [] content = [] starsrating = [] for i in range(0, number_news): info.append(rows[i]['info']) read.append(rows[i]['read']) stars.append(rows[i]['stars']) starspeople.append(rows[i]['starspeople']) comments.append(rows[i]['comments']) content.append(rows[i]['content']) starsrating.append(rows[i]['starsrating']) for p in subsession.get_players(): p.participant.info = info p.participant.read = read p.participant.stars = stars p.participant.starspeople = starspeople p.participant.comments = comments p.participant.content = content p.participant.starsrating = starsrating news_order = random.sample(range(1, 13), 12) p.participant.news_list = news_order variable_meaning = {1: C.U0_1, 2: C.U0_2, 3: C.U0_3, 4: C.U1_1, 5: C.U1_2, 6: C.U1_3, 7: C.U2_1, 8: C.U2_2, 9: C.U2_3, 10: C.U3_1, 11: C.U3_2, 12: C.U3_3} p.NEWS_1_text = variable_meaning[news_order[0]] p.NEWS_2_text = variable_meaning[news_order[1]] p.NEWS_3_text = variable_meaning[news_order[2]] p.NEWS_4_text = variable_meaning[news_order[3]] p.NEWS_5_text = variable_meaning[news_order[4]] p.NEWS_6_text = variable_meaning[news_order[5]] p.NEWS_7_text = variable_meaning[news_order[6]] p.NEWS_8_text = variable_meaning[news_order[7]] p.NEWS_9_text = variable_meaning[news_order[8]] p.NEWS_10_text = variable_meaning[news_order[9]] p.NEWS_11_text = variable_meaning[news_order[10]] p.NEWS_12_text = variable_meaning[news_order[11]] variable_value = {1: 0, 2: 0, 3: 0, 4: 1, 5: 1, 6: 1, 7: 2, 8: 2, 9: 2, 10: 3, 11: 3, 12: 3} p.NEWS_1_utility = variable_value[news_order[0]] p.NEWS_2_utility = variable_value[news_order[1]] p.NEWS_3_utility = variable_value[news_order[2]] p.NEWS_4_utility = variable_value[news_order[3]] p.NEWS_5_utility = variable_value[news_order[4]] p.NEWS_6_utility = variable_value[news_order[5]] p.NEWS_7_utility = variable_value[news_order[6]] p.NEWS_8_utility = variable_value[news_order[7]] p.NEWS_9_utility = variable_value[news_order[8]] p.NEWS_10_utility = variable_value[news_order[9]] p.NEWS_11_utility = variable_value[news_order[10]] p.NEWS_12_utility = variable_value[news_order[11]] # treatments info if p.participant.treatment == "secondgeneration": p.participant.secondgen = "T1" else: p.participant.secondgen = "T3" class Group(BaseGroup): pass class Player(BasePlayer): NEWS_bought_first = models.IntegerField(min=0, max=12) NEWS_bought_first_time = models.FloatField(initial=0) NEWS_bought_second = models.IntegerField(min=0, max=12) NEWS_bought_second_2 = models.FloatField() NEWS_bought_second_time = models.FloatField(initial=0) treatment = models.StringField() NEWS_total_cost = models.CurrencyField() NEWS_price = models.CurrencyField() NEWS_change = models.IntegerField() # News chosen NEWS_1_chosen = models.IntegerField(initial=0) NEWS_2_chosen = models.IntegerField (initial=0) NEWS_3_chosen = models.IntegerField(initial=0) NEWS_4_chosen = models.IntegerField(initial=0) NEWS_5_chosen = models.IntegerField(initial=0) NEWS_6_chosen = models.IntegerField(initial=0) NEWS_7_chosen = models.IntegerField(initial=0) NEWS_8_chosen = models.IntegerField(initial=0) NEWS_9_chosen = models.IntegerField(initial=0) NEWS_10_chosen = models.IntegerField(initial=0) NEWS_11_chosen = models.IntegerField(initial=0) NEWS_12_chosen = models.IntegerField(initial=0) news_list = models.LongStringField() # Total time spent reading the news NEWS_1_time = models.FloatField() NEWS_2_time = models.FloatField() NEWS_3_time = models.FloatField() NEWS_4_time = models.FloatField() NEWS_5_time = models.FloatField() NEWS_6_time = models.FloatField() NEWS_7_time = models.FloatField() NEWS_8_time = models.FloatField() NEWS_9_time = models.FloatField() NEWS_10_time = models.FloatField() NEWS_11_time = models.FloatField() NEWS_12_time = models.FloatField() # For prosumers NEWS_1_time_total = models.FloatField() NEWS_2_time_total = models.FloatField() NEWS_3_time_total = models.FloatField() NEWS_4_time_total = models.FloatField() NEWS_5_time_total = models.FloatField() NEWS_6_time_total = models.FloatField() NEWS_7_time_total = models.FloatField() NEWS_8_time_total = models.FloatField() NEWS_9_time_total = models.FloatField() NEWS_10_time_total = models.FloatField() NEWS_11_time_total = models.FloatField() NEWS_12_time_total = models.FloatField() time_1 = models.FloatField(blank=True, initial=0) time_2 = models.FloatField(blank=True, initial=0) time_3 = models.FloatField(blank=True, initial=0) time_4 = models.FloatField(blank=True, initial=0) time_5 = models.FloatField(blank=True, initial=0) time_6 = models.FloatField(blank=True, initial=0) time_7 = models.FloatField(blank=True, initial=0) time_8 = models.FloatField(blank=True, initial=0) time_9 = models.FloatField(blank=True, initial=0) time_10 = models.FloatField(blank=True, initial=0) time_11 = models.FloatField(blank=True, initial=0) time_12 = models.FloatField(blank=True, initial=0) time_1_total = models.FloatField(blank=True, initial=0) time_2_total = models.FloatField(blank=True, initial=0) time_3_total = models.FloatField(blank=True, initial=0) time_4_total = models.FloatField(blank=True, initial=0) time_5_total = models.FloatField(blank=True, initial=0) time_6_total = models.FloatField(blank=True, initial=0) time_7_total = models.FloatField(blank=True, initial=0) time_8_total = models.FloatField(blank=True, initial=0) time_9_total = models.FloatField(blank=True, initial=0) time_10_total = models.FloatField(blank=True, initial=0) time_11_total = models.FloatField(blank=True, initial=0) time_12_total = models.FloatField(blank=True, initial=0) UQattempt_4a_answer = models.IntegerField(widget=widgets.RadioSelect, choices=[[1, "Yes"], [2, "No"]]) UQattempt_4a = models.IntegerField(initial=0) UQattempt_4b_answer = models.IntegerField(widget=widgets.RadioSelect, choices=[[1, "I can assign stars (1= No utility, 5= Max Utility) and/or leave comments"], [2, "I can only assign stars"], [3, "I can only leave comments"]]) UQattempt_4b = models.IntegerField(initial=0) UQattempt_4 = models.IntegerField() UQattempt_4c_answer = models.IntegerField(widget=widgets.RadioSelect, choices=[[1, "It means that 6 people have assigned on average 3 stars to the news"], [2, "It means that 3 people have assigned on average 6 stars to the news"], [3, "It always mean that 6 people have assigned 3 stars to the news"]]) UQattempt_4c = models.IntegerField(initial=0) is_correct = models.IntegerField(initial=0) is_correct1 = models.IntegerField(initial=0) is_correct2 = models.IntegerField(initial=0) NEWS_1_button_nrs = models.IntegerField(blank=True) NEWS_2_button_nrs = models.IntegerField(blank=True) NEWS_3_button_nrs = models.IntegerField(blank=True) NEWS_4_button_nrs = models.IntegerField(blank=True) NEWS_5_button_nrs = models.IntegerField(blank=True) NEWS_6_button_nrs = models.IntegerField(blank=True) NEWS_7_button_nrs = models.IntegerField(blank=True) NEWS_8_button_nrs = models.IntegerField(blank=True) NEWS_9_button_nrs = models.IntegerField(blank=True) NEWS_10_button_nrs = models.IntegerField(blank=True) NEWS_11_button_nrs = models.IntegerField(blank=True) NEWS_12_button_nrs = models.IntegerField(blank=True) NEWS_1_utility = models.IntegerField() NEWS_2_utility = models.IntegerField() NEWS_3_utility = models.IntegerField() NEWS_4_utility = models.IntegerField() NEWS_5_utility = models.IntegerField() NEWS_6_utility = models.IntegerField() NEWS_7_utility = models.IntegerField() NEWS_8_utility = models.IntegerField() NEWS_9_utility = models.IntegerField() NEWS_10_utility = models.IntegerField() NEWS_11_utility = models.IntegerField() NEWS_12_utility = models.IntegerField() NEWS_1_text = models.LongStringField() NEWS_2_text = models.LongStringField() NEWS_3_text = models.LongStringField() NEWS_4_text = models.LongStringField() NEWS_5_text = models.LongStringField() NEWS_6_text = models.LongStringField() NEWS_7_text = models.LongStringField() NEWS_8_text = models.LongStringField() NEWS_9_text = models.LongStringField() NEWS_10_text = models.LongStringField() NEWS_11_text = models.LongStringField() NEWS_12_text = models.LongStringField() NEWS_1_stars = models.IntegerField(blank=True) NEWS_2_stars = models.IntegerField(blank=True) NEWS_3_stars = models.IntegerField(blank=True) NEWS_4_stars = models.IntegerField(blank=True) NEWS_5_stars = models.IntegerField(blank=True) NEWS_6_stars = models.IntegerField(blank=True) NEWS_7_stars = models.IntegerField(blank=True) NEWS_8_stars = models.IntegerField(blank=True) NEWS_9_stars = models.IntegerField(blank=True) NEWS_10_stars = models.IntegerField(blank=True) NEWS_11_stars = models.IntegerField(blank=True) NEWS_12_stars = models.IntegerField(blank=True) NEWS_1_comment = models.LongStringField(blank=True) NEWS_2_comment = models.LongStringField(blank=True) NEWS_3_comment = models.LongStringField(blank=True) NEWS_4_comment = models.LongStringField(blank=True) NEWS_5_comment = models.LongStringField(blank=True) NEWS_6_comment = models.LongStringField(blank=True) NEWS_7_comment = models.LongStringField(blank=True) NEWS_8_comment = models.LongStringField(blank=True) NEWS_9_comment = models.LongStringField(blank=True) NEWS_10_comment = models.LongStringField(blank=True) NEWS_11_comment = models.LongStringField(blank=True) NEWS_12_comment = models.LongStringField(blank=True) NEWS_1_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_2_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_3_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_4_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_5_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_6_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_7_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_8_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_9_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_10_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_11_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_12_yes_comment = models.IntegerField(blank=True, initial=0) NEWS_1_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_2_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_3_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_4_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_5_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_6_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_7_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_8_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_9_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_10_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_11_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_12_yes_stars = models.IntegerField(blank=True, initial=0) NEWS_1_first_comment = models.IntegerField(initial=0) NEWS_2_first_comment = models.IntegerField(initial=0) NEWS_3_first_comment = models.IntegerField(initial=0) NEWS_4_first_comment = models.IntegerField(initial=0) NEWS_5_first_comment = models.IntegerField(initial=0) NEWS_6_first_comment = models.IntegerField(initial=0) NEWS_7_first_comment = models.IntegerField(initial=0) NEWS_8_first_comment = models.IntegerField(initial=0) NEWS_9_first_comment = models.IntegerField(initial=0) NEWS_10_first_comment = models.IntegerField(initial=0) NEWS_11_first_comment = models.IntegerField(initial=0) NEWS_12_first_comment = models.IntegerField(initial=0) NEWS_1_time_comment = models.IntegerField(blank=True) NEWS_2_time_comment = models.IntegerField(blank=True) NEWS_3_time_comment = models.IntegerField(blank=True) NEWS_4_time_comment = models.IntegerField(blank=True) NEWS_5_time_comment = models.IntegerField(blank=True) NEWS_6_time_comment = models.IntegerField(blank=True) NEWS_7_time_comment = models.IntegerField(blank=True) NEWS_8_time_comment = models.IntegerField(blank=True) NEWS_9_time_comment = models.IntegerField(blank=True) NEWS_10_time_comment = models.IntegerField(blank=True) NEWS_11_time_comment = models.IntegerField(blank=True) NEWS_12_time_comment = models.IntegerField(blank=True) NEWS_1_first_comment_text = models.LongStringField(blank=True) NEWS_2_first_comment_text = models.LongStringField(blank=True) NEWS_3_first_comment_text = models.LongStringField(blank=True) NEWS_4_first_comment_text = models.LongStringField(blank=True) NEWS_5_first_comment_text = models.LongStringField(blank=True) NEWS_6_first_comment_text = models.LongStringField(blank=True) NEWS_7_first_comment_text = models.LongStringField(blank=True) NEWS_8_first_comment_text = models.LongStringField(blank=True) NEWS_9_first_comment_text = models.LongStringField(blank=True) NEWS_10_first_comment_text = models.LongStringField(blank=True) NEWS_11_first_comment_text = models.LongStringField(blank=True) NEWS_12_first_comment_text = models.LongStringField(blank=True) NEWS_1_first_stars = models.IntegerField(initial=0) NEWS_2_first_stars = models.IntegerField(initial=0) NEWS_3_first_stars = models.IntegerField(initial=0) NEWS_4_first_stars = models.IntegerField(initial=0) NEWS_5_first_stars = models.IntegerField(initial=0) NEWS_6_first_stars = models.IntegerField(initial=0) NEWS_7_first_stars = models.IntegerField(initial=0) NEWS_8_first_stars = models.IntegerField(initial=0) NEWS_9_first_stars = models.IntegerField(initial=0) NEWS_10_first_stars = models.IntegerField(initial=0) NEWS_11_first_stars = models.IntegerField(initial=0) NEWS_12_first_stars = models.IntegerField(initial=0) NEWS_1_first_stars_number = models.IntegerField(blank=True) NEWS_2_first_stars_number = models.IntegerField(blank=True) NEWS_3_first_stars_number = models.IntegerField(blank=True) NEWS_4_first_stars_number = models.IntegerField(blank=True) NEWS_5_first_stars_number = models.IntegerField(blank=True) NEWS_6_first_stars_number = models.IntegerField(blank=True) NEWS_7_first_stars_number = models.IntegerField(blank=True) NEWS_8_first_stars_number = models.IntegerField(blank=True) NEWS_9_first_stars_number = models.IntegerField(blank=True) NEWS_10_first_stars_number = models.IntegerField(blank=True) NEWS_11_first_stars_number = models.IntegerField(blank=True) NEWS_12_first_stars_number = models.IntegerField(blank=True) NEWS_1_btn_stars = models.IntegerField(blank=True) NEWS_2_btn_stars = models.IntegerField(blank=True) NEWS_3_btn_stars = models.IntegerField(blank=True) NEWS_4_btn_stars = models.IntegerField(blank=True) NEWS_5_btn_stars = models.IntegerField(blank=True) NEWS_6_btn_stars = models.IntegerField(blank=True) NEWS_7_btn_stars = models.IntegerField(blank=True) NEWS_8_btn_stars = models.IntegerField(blank=True) NEWS_9_btn_stars = models.IntegerField(blank=True) NEWS_10_btn_stars = models.IntegerField(blank=True) NEWS_11_btn_stars = models.IntegerField(blank=True) NEWS_12_btn_stars = models.IntegerField(blank=True) NEWS_1_btn_comment = models.IntegerField(blank=True) NEWS_2_btn_comment = models.IntegerField(blank=True) NEWS_3_btn_comment = models.IntegerField(blank=True) NEWS_4_btn_comment = models.IntegerField(blank=True) NEWS_5_btn_comment = models.IntegerField(blank=True) NEWS_6_btn_comment = models.IntegerField(blank=True) NEWS_7_btn_comment = models.IntegerField(blank=True) NEWS_8_btn_comment = models.IntegerField(blank=True) NEWS_9_btn_comment = models.IntegerField(blank=True) NEWS_10_btn_comment = models.IntegerField(blank=True) NEWS_11_btn_comment = models.IntegerField(blank=True) NEWS_12_btn_comment = models.IntegerField(blank=True) NEWS_1_edit_comment = models.LongStringField(blank=True) NEWS_2_edit_comment = models.LongStringField(blank=True) NEWS_3_edit_comment = models.LongStringField(blank=True) NEWS_4_edit_comment = models.LongStringField(blank=True) NEWS_5_edit_comment = models.LongStringField(blank=True) NEWS_6_edit_comment = models.LongStringField(blank=True) NEWS_7_edit_comment = models.LongStringField(blank=True) NEWS_8_edit_comment = models.LongStringField(blank=True) NEWS_9_edit_comment = models.LongStringField(blank=True) NEWS_10_edit_comment = models.LongStringField(blank=True) NEWS_11_edit_comment = models.LongStringField(blank=True) NEWS_12_edit_comment = models.LongStringField(blank=True) NEWS_1_edit_comment_nr = models.IntegerField(blank=True) NEWS_2_edit_comment_nr = models.IntegerField(blank=True) NEWS_3_edit_comment_nr = models.IntegerField(blank=True) NEWS_4_edit_comment_nr = models.IntegerField(blank=True) NEWS_5_edit_comment_nr = models.IntegerField(blank=True) NEWS_6_edit_comment_nr = models.IntegerField(blank=True) NEWS_7_edit_comment_nr = models.IntegerField(blank=True) NEWS_8_edit_comment_nr = models.IntegerField(blank=True) NEWS_9_edit_comment_nr = models.IntegerField(blank=True) NEWS_10_edit_comment_nr = models.IntegerField(blank=True) NEWS_11_edit_comment_nr = models.IntegerField(blank=True) NEWS_12_edit_comment_nr = models.IntegerField(blank=True) NEWS_1_edit_stars = models.LongStringField(blank=True) NEWS_2_edit_stars = models.LongStringField(blank=True) NEWS_3_edit_stars = models.LongStringField(blank=True) NEWS_4_edit_stars = models.LongStringField(blank=True) NEWS_5_edit_stars = models.LongStringField(blank=True) NEWS_6_edit_stars = models.LongStringField(blank=True) NEWS_7_edit_stars = models.LongStringField(blank=True) NEWS_8_edit_stars = models.LongStringField(blank=True) NEWS_9_edit_stars = models.LongStringField(blank=True) NEWS_10_edit_stars = models.LongStringField(blank=True) NEWS_11_edit_stars = models.LongStringField(blank=True) NEWS_12_edit_stars = models.LongStringField(blank=True) NEWS_1_edit_stars_nr = models.IntegerField(blank=True) NEWS_2_edit_stars_nr = models.IntegerField(blank=True) NEWS_3_edit_stars_nr = models.IntegerField(blank=True) NEWS_4_edit_stars_nr = models.IntegerField(blank=True) NEWS_5_edit_stars_nr = models.IntegerField(blank=True) NEWS_6_edit_stars_nr = models.IntegerField(blank=True) NEWS_7_edit_stars_nr = models.IntegerField(blank=True) NEWS_8_edit_stars_nr = models.IntegerField(blank=True) NEWS_9_edit_stars_nr = models.IntegerField(blank=True) NEWS_10_edit_stars_nr = models.IntegerField(blank=True) NEWS_11_edit_stars_nr = models.IntegerField(blank=True) NEWS_12_edit_stars_nr = models.IntegerField(blank=True) leavescreen_17 = models.IntegerField(blank=True) leavescreen_18 = models.IntegerField(blank=True) leavescreen_19 = models.IntegerField(blank=True) leavescreen_20 = models.IntegerField(blank=True) leavescreen_21 = models.IntegerField(blank=True) leavescreen_22 = models.IntegerField(blank=True) leavescreen_23 = models.IntegerField(blank=True) leavescreen_24 = models.IntegerField(blank=True) leavescreen_25 = models.IntegerField(blank=True) leavescreen_26 = models.IntegerField(blank=True) leavescreen_27 = models.IntegerField(blank=True) leavescreen_28 = models.IntegerField(blank=True) leavescreen_29 = models.IntegerField(blank=True) leavescreen_30 = models.IntegerField(blank=True) leavescreen_31 = models.IntegerField(blank=True) # PAGES class Part_2(Page): form_model = 'player' form_fields = ['leavescreen_17'] # Consumers class Part_2a_instructions(Page): def is_displayed(player: Player): return player.participant.treatment == "consumer" form_model = 'player' form_fields = ['UQattempt_4a_answer', 'leavescreen_18'] def error_message(player: Player, values): if values['UQattempt_4a_answer'] != 1: player.UQattempt_4a += 1 return "Answer is wrong. Try again" @staticmethod def before_next_page(player: Player, timeout_happened): player.UQattempt_4 = player.UQattempt_4a class Part_2a_instructions_2(Page): def is_displayed(player: Player): return player.participant.treatment == "consumer" timeout_seconds = 5 form_model = 'player' form_fields = ['leavescreen_19'] # Prosumers class Part_2b_instructions(Page): def is_displayed(player: Player): return player.participant.treatment == "prosumer" form_model = 'player' form_fields = ['UQattempt_4a_answer', 'UQattempt_4b_answer', 'leavescreen_20'] # @staticmethod # def error_message(player: Player, values): # solutions = dict(UQattempt_4a_answer=1, UQattempt_4b_answer=1) # if values != solutions: # player.UQattempt_4a += 1 # player.UQattempt_4b += 1 # if values['UQattempt_4a_answer'] == 1: # player.is_correct = 1 # print(player.is_correct) # if values['UQattempt_4b_answer'] == 1: # player.is_correct = 3 # print(player.is_correct) # return "One or more answers were incorrect." @staticmethod def error_message(player: Player, values): if values['UQattempt_4a_answer'] != 1: player.UQattempt_4a += 1 return "One or more answers were incorrect." if values['UQattempt_4a_answer'] == 1: player.is_correct1 = 1 if values['UQattempt_4b_answer'] != 1: player.UQattempt_4b += 1 return "One or more answers were incorrect." if values['UQattempt_4b_answer'] == 1: player.is_correct2 = 1 @staticmethod def vars_for_template(player): return dict(correct=player.is_correct) @staticmethod def before_next_page(player: Player, timeout_happened): player.UQattempt_4 = player.UQattempt_4a + player.UQattempt_4b class Part_2b_instructions_2(Page): def is_displayed(player: Player): return player.participant.treatment == "prosumer" timeout_seconds = 5 form_model = 'player' form_fields = ['leavescreen_21'] # Second generation class Part_2c_instructions(Page): def is_displayed(player: Player): return player.participant.treatment == "secondgeneration" or player.participant.treatment == "secondgenerationidentity" form_model = 'player' form_fields = ['UQattempt_4a_answer', 'UQattempt_4c_answer', 'leavescreen_22'] # @staticmethod # def error_message(player: Player, values): # solutions = dict(UQattempt_4a_answer=1, UQattempt_4c_answer=1) # if values != solutions: # player.UQattempt_4a += 1 # player.UQattempt_4c += 1 # if values['UQattempt_4a_answer'] == 1: # player.is_correct = 1 # print(player.is_correct) # if values['UQattempt_4c_answer'] == 1: # player.is_correct = 3 # print(player.is_correct) # return "One or more answers were incorrect." @staticmethod def error_message(player: Player, values): if values['UQattempt_4a_answer'] != 1: player.UQattempt_4a += 1 return "One or more answers were incorrect." if values['UQattempt_4a_answer'] == 1: player.is_correct1 = 1 if values['UQattempt_4c_answer'] != 1: player.UQattempt_4c += 1 return "One or more answers were incorrect." if values['UQattempt_4c_answer'] == 1: player.is_correct2 = 1 @staticmethod def vars_for_template(player): return dict(correct=player.is_correct) @staticmethod def before_next_page(player: Player, timeout_happened): player.UQattempt_4 = player.UQattempt_4a + player.UQattempt_4c class Part_2c_instructions_2(Page): def is_displayed(player: Player): return player.participant.treatment == "secondgeneration" or player.participant.treatment == "secondgenerationidentity" timeout_seconds = 5 form_model = 'player' form_fields = ['leavescreen_23'] class Choice(Page): form_model = 'player' form_fields = ['NEWS_bought_first', 'NEWS_bought_first_time', 'leavescreen_24'] class News_1_c(Page): def is_displayed(player: Player): return player.participant.treatment == "consumer" or player.participant.treatment == "prosumer" form_model = 'player' form_fields = ['NEWS_bought_second', 'NEWS_bought_second_time', 'leavescreen_25'] @staticmethod def before_next_page(player: Player, timeout_happened): player.NEWS_price = C.price player.NEWS_total_cost = player.NEWS_bought_second * player.NEWS_price player.participant.NEWS_bought_second = player.NEWS_bought_second player.participant.NEWS_total_cost = player.NEWS_total_cost if player.NEWS_bought_second_time != player.NEWS_bought_first_time: player.NEWS_change = 1 else: player.NEWS_change = 0 # Second generation class News_1_sg(Page): def is_displayed(player: Player): return player.participant.treatment == "secondgeneration" or player.participant.treatment == "secondgenerationidentity" form_model = 'player' form_fields = ['NEWS_bought_second', 'NEWS_bought_second_time', 'leavescreen_26'] def vars_for_template(player: Player): variable_meaning = {1: [C.U0_1], 2: [C.U0_2], 3: [C.U0_3], 4: [C.U1_1], 5: [C.U1_2], 6: [C.U1_3], 7: [C.U2_1], 8: [C.U2_2], 9: [C.U2_3], 10: [C.U3_1], 11: [C.U3_2], 12: [C.U3_3]} grid_1 = variable_meaning[player.participant.news_list[0]][0] grid_2 = variable_meaning[player.participant.news_list[1]][0] grid_3 = variable_meaning[player.participant.news_list[2]][0] grid_4 = variable_meaning[player.participant.news_list[3]][0] grid_5 = variable_meaning[player.participant.news_list[4]][0] grid_6 = variable_meaning[player.participant.news_list[5]][0] grid_7 = variable_meaning[player.participant.news_list[6]][0] grid_8 = variable_meaning[player.participant.news_list[7]][0] grid_9 = variable_meaning[player.participant.news_list[8]][0] grid_10 = variable_meaning[player.participant.news_list[9]][0] grid_11 = variable_meaning[player.participant.news_list[10]][0] grid_12 = variable_meaning[player.participant.news_list[11]][0] read1 = player.participant.read[player.participant.news_list[0]-1] read2 = player.participant.read[player.participant.news_list[1]-1] read3 = player.participant.read[player.participant.news_list[2]-1] read4 = player.participant.read[player.participant.news_list[3]-1] read5 = player.participant.read[player.participant.news_list[4]-1] read6 = player.participant.read[player.participant.news_list[5]-1] read7 = player.participant.read[player.participant.news_list[6]-1] read8 = player.participant.read[player.participant.news_list[7]-1] read9 = player.participant.read[player.participant.news_list[8]-1] read10 = player.participant.read[player.participant.news_list[9]-1] read11 = player.participant.read[player.participant.news_list[10]-1] read12 = player.participant.read[player.participant.news_list[11]-1] stars1 = player.participant.stars[player.participant.news_list[0]-1] stars2 = player.participant.stars[player.participant.news_list[1]-1] stars3 = player.participant.stars[player.participant.news_list[2]-1] stars4 = player.participant.stars[player.participant.news_list[3]-1] stars5 = player.participant.stars[player.participant.news_list[4]-1] stars6 = player.participant.stars[player.participant.news_list[5]-1] stars7 = player.participant.stars[player.participant.news_list[6]-1] stars8 = player.participant.stars[player.participant.news_list[7]-1] stars9 = player.participant.stars[player.participant.news_list[8]-1] stars10 = player.participant.stars[player.participant.news_list[9]-1] stars11 = player.participant.stars[player.participant.news_list[10]-1] stars12 = player.participant.stars[player.participant.news_list[11]-1] comments1 = player.participant.comments[player.participant.news_list[0]-1] comments2 = player.participant.comments[player.participant.news_list[1]-1] comments3 = player.participant.comments[player.participant.news_list[2]-1] comments4 = player.participant.comments[player.participant.news_list[3]-1] comments5 = player.participant.comments[player.participant.news_list[4]-1] comments6 = player.participant.comments[player.participant.news_list[5]-1] comments7 = player.participant.comments[player.participant.news_list[6]-1] comments8 = player.participant.comments[player.participant.news_list[7]-1] comments9 = player.participant.comments[player.participant.news_list[8]-1] comments10 = player.participant.comments[player.participant.news_list[9]-1] comments11 = player.participant.comments[player.participant.news_list[10]-1] comments12 = player.participant.comments[player.participant.news_list[11]-1] content1 = player.participant.content[player.participant.news_list[0]-1] content2 = player.participant.content[player.participant.news_list[1]-1] content3 = player.participant.content[player.participant.news_list[2]-1] content4 = player.participant.content[player.participant.news_list[3]-1] content5 = player.participant.content[player.participant.news_list[4]-1] content6 = player.participant.content[player.participant.news_list[5]-1] content7 = player.participant.content[player.participant.news_list[6]-1] content8 = player.participant.content[player.participant.news_list[7]-1] content9 = player.participant.content[player.participant.news_list[8]-1] content10 = player.participant.content[player.participant.news_list[9]-1] content11 = player.participant.content[player.participant.news_list[10]-1] content12 = player.participant.content[player.participant.news_list[11]-1] starspeople1 = player.participant.starspeople[player.participant.news_list[0]-1] starspeople2 = player.participant.starspeople[player.participant.news_list[1]-1] starspeople3 = player.participant.starspeople[player.participant.news_list[2]-1] starspeople4 = player.participant.starspeople[player.participant.news_list[3]-1] starspeople5 = player.participant.starspeople[player.participant.news_list[4]-1] starspeople6 = player.participant.starspeople[player.participant.news_list[5]-1] starspeople7 = player.participant.starspeople[player.participant.news_list[6]-1] starspeople8 = player.participant.starspeople[player.participant.news_list[7]-1] starspeople9 = player.participant.starspeople[player.participant.news_list[8]-1] starspeople10 = player.participant.starspeople[player.participant.news_list[9]-1] starspeople11 = player.participant.starspeople[player.participant.news_list[10]-1] starspeople12 = player.participant.starspeople[player.participant.news_list[11]-1] return dict(read1=read1, read2=read2, read3=read3, read4=read4, read5=read5, read6=read6, read7=read7, read8=read8, read9=read9, read10=read10, read11=read11, read12=read12, stars1=stars1, stars2=stars2, stars3=stars3, stars4=stars4, stars5=stars5, stars6=stars6, stars7=stars7, stars8=stars8, stars9=stars9, stars10=stars10, stars11=stars11, stars12=stars12, comments1=comments1, comments2=comments2, comments3=comments3, comments4=comments4, comments5=comments5, comments6=comments6, comments7=comments7, comments8=comments8, comments9=comments9, comments10=comments10, comments11=comments11, comments12=comments12, content1=content1, content2=content2, content3=content3, content4=content4, content5=content5, content6=content6, content7=content7, content8=content8, content9=content9, content10=content10, content11=content11, content12=content12, starspeople1=starspeople1, starspeople2=starspeople2, starspeople3=starspeople3, starspeople4=starspeople4, starspeople5=starspeople5, starspeople6=starspeople6, starspeople7=starspeople7, starspeople8=starspeople8, starspeople9=starspeople9, starspeople10=starspeople10, starspeople11=starspeople11, starspeople12=starspeople12, grid_1=grid_1, grid_2=grid_2, grid_3=grid_3, grid_4=grid_4, grid_5=grid_5, grid_6=grid_6, grid_7=grid_7, grid_8=grid_8, grid_9=grid_9, grid_10=grid_10, grid_11=grid_11, grid_12=grid_12 ) @staticmethod def before_next_page(player: Player, timeout_happened): player.NEWS_price = C.price player.NEWS_total_cost = player.NEWS_bought_second * player.NEWS_price player.participant.NEWS_bought_second = player.NEWS_bought_second player.participant.NEWS_total_cost = player.NEWS_total_cost if player.NEWS_bought_second != player.NEWS_bought_first: player.NEWS_change = 1 else: player.NEWS_change = 0 # Consumers and prosumers class News_2_c(Page): def is_displayed(player: Player): return (player.participant.treatment == "consumer" and player.NEWS_bought_second > 0)\ or (player.participant.treatment == "prosumer" and player.NEWS_bought_second > 0)\ or (player.participant.treatment == "secondgeneration" and player.NEWS_bought_second > 0) \ or (player.participant.treatment == "secondgenerationidentity" and player.NEWS_bought_second > 0) def vars_for_template(player: Player): cost = float(player.NEWS_total_cost) return dict(cost=cost) form_model = 'player' form_fields = ['leavescreen_27'] class News_3_c(Page): def is_displayed(player: Player): return player.participant.treatment == "consumer" and player.NEWS_bought_second > 0 form_model = 'player' form_fields = ['time_1', 'time_2', 'time_3', 'time_4', 'time_5', 'time_6', 'time_7', 'time_8', 'time_9', 'time_10', 'time_11', 'time_12', 'NEWS_1_button_nrs', 'NEWS_2_button_nrs', 'NEWS_3_button_nrs', 'NEWS_4_button_nrs', 'NEWS_5_button_nrs', 'NEWS_6_button_nrs', 'NEWS_7_button_nrs', 'NEWS_8_button_nrs', 'NEWS_9_button_nrs', 'NEWS_10_button_nrs', 'NEWS_11_button_nrs', 'NEWS_12_button_nrs', 'leavescreen_28' ] @staticmethod def js_vars(player): return dict(total_news=player.NEWS_bought_second) @staticmethod def live_method(player: Player, data): if data['clicked_button'] == 1: if data['value'] == 1: player.NEWS_1_chosen = 1 else: if data['value'] == 2: player.NEWS_2_chosen = 1 else: if data['value'] == 3: player.NEWS_3_chosen = 1 else: if data['value'] == 4: player.NEWS_4_chosen = 1 else: if data['value'] == 5: player.NEWS_5_chosen = 1 else: if data['value'] == 6: player.NEWS_6_chosen = 1 else: if data['value'] == 7: player.NEWS_7_chosen = 1 else: if data['value'] == 8: player.NEWS_8_chosen = 1 else: if data['value'] == 9: player.NEWS_9_chosen = 1 else: if data['value'] == 10: player.NEWS_10_chosen = 1 else: if data['value'] == 11: player.NEWS_11_chosen = 1 else: if data['value'] == 12: player.NEWS_12_chosen = 1 residual_news = player.NEWS_bought_second-(player.NEWS_1_chosen+player.NEWS_2_chosen+player.NEWS_3_chosen+player.NEWS_4_chosen+player.NEWS_5_chosen+player.NEWS_6_chosen+player.NEWS_7_chosen+player.NEWS_8_chosen+player.NEWS_9_chosen+player.NEWS_10_chosen+player.NEWS_11_chosen+player.NEWS_12_chosen) response = dict(residual_news=residual_news, nws1=player.NEWS_1_chosen, nws2=player.NEWS_2_chosen, nws3=player.NEWS_3_chosen, nws4=player.NEWS_4_chosen, nws5=player.NEWS_5_chosen, nws6=player.NEWS_6_chosen, nws7=player.NEWS_7_chosen, nws8=player.NEWS_8_chosen, nws9=player.NEWS_9_chosen, nws10=player.NEWS_10_chosen, nws11=player.NEWS_11_chosen, nws12=player.NEWS_12_chosen) return {player.id_in_group: response} @staticmethod def vars_for_template(player: Player): variable_meaning = {1: C.U0_1, 2: C.U0_2, 3: C.U0_3, 4: C.U1_1, 5: C.U1_2, 6: C.U1_3, 7: C.U2_1, 8: C.U2_2, 9: C.U2_3, 10: C.U3_1, 11: C.U3_2, 12: C.U3_3} # for i in range(1, 13): # window_dict[f'variable_{i}'] = player.participant.news_list[i-1] new_order = [] for i in range(0, 12): new_order.append(variable_meaning[player.participant.news_list[i]]) grid_1 = new_order[0] grid_2 = new_order[1] grid_3 = new_order[2] grid_4 = new_order[3] grid_5 = new_order[4] grid_6 = new_order[5] grid_7 = new_order[6] grid_8 = new_order[7] grid_9 = new_order[8] grid_10 = new_order[9] grid_11 = new_order[10] grid_12 = new_order[11] return dict(grid_1=grid_1, grid_2=grid_2, grid_3=grid_3, grid_4=grid_4, grid_5=grid_5, grid_6=grid_6, grid_7=grid_7, grid_8=grid_8, grid_9=grid_9, grid_10=grid_10, grid_11=grid_11, grid_12=grid_12) def before_next_page(player: Player, timeout_happened): tm1 = player.field_maybe_none('time_1') tm2 = player.field_maybe_none('time_2') tm3 = player.field_maybe_none('time_3') tm4 = player.field_maybe_none('time_4') tm5 = player.field_maybe_none('time_5') tm6 = player.field_maybe_none('time_6') tm7 = player.field_maybe_none('time_7') tm8 = player.field_maybe_none('time_8') tm9 = player.field_maybe_none('time_9') tm10 = player.field_maybe_none('time_10') tm11 = player.field_maybe_none('time_11') tm12 = player.field_maybe_none('time_12') if tm1 is None: player.NEWS_1_time = -1 else: player.NEWS_1_time = player.time_1 if tm2 is None: player.NEWS_2_time = -1 else: player.NEWS_2_time = player.time_2 if tm3 is None: player.NEWS_3_time = -1 else: player.NEWS_3_time = player.time_3 if tm4 is None: player.NEWS_4_time = -1 else: player.NEWS_4_time = player.time_4 if tm5 is None: player.NEWS_5_time = -1 else: player.NEWS_5_time = player.time_5 if tm6 is None: player.NEWS_6_time = -1 else: player.NEWS_6_time = player.time_6 if tm7 is None: player.NEWS_7_time = -1 else: player.NEWS_7_time = player.time_7 if tm8 is None: player.NEWS_8_time = -1 else: player.NEWS_8_time = player.time_8 if tm9 is None: player.NEWS_9_time = -1 else: player.NEWS_9_time = player.time_9 if tm10 is None: player.NEWS_10_time = -1 else: player.NEWS_10_time = player.time_10 if tm11 is None: player.NEWS_11_time = -1 else: player.NEWS_11_time = player.time_11 if tm12 is None: player.NEWS_12_time = -1 else: player.NEWS_12_time = player.time_12 class News_3_p(Page): def is_displayed(player: Player): return player.participant.treatment == "prosumer" and player.NEWS_bought_second > 0 form_model = 'player' form_fields = ['time_1', 'time_2', 'time_3', 'time_4', 'time_5', 'time_6', 'time_7', 'time_8', 'time_9', 'time_10', 'time_11', 'time_12', 'time_1_total', 'time_2_total', 'time_3_total', 'time_4_total', 'time_5_total', 'time_6_total', 'time_7_total', 'time_8_total', 'time_9_total', 'time_10_total', 'time_11_total', 'time_12_total', 'NEWS_1_stars', 'NEWS_2_stars', 'NEWS_3_stars', 'NEWS_4_stars', 'NEWS_5_stars', 'NEWS_6_stars', 'NEWS_7_stars', 'NEWS_8_stars', 'NEWS_9_stars', 'NEWS_10_stars', 'NEWS_11_stars', 'NEWS_12_stars', 'NEWS_1_comment', 'NEWS_2_comment', 'NEWS_3_comment', 'NEWS_4_comment', 'NEWS_5_comment', 'NEWS_6_comment', 'NEWS_7_comment', 'NEWS_8_comment', 'NEWS_9_comment', 'NEWS_10_comment', 'NEWS_11_comment', 'NEWS_12_comment', 'NEWS_1_first_comment_text', 'NEWS_2_first_comment_text', 'NEWS_3_first_comment_text', 'NEWS_4_first_comment_text', 'NEWS_5_first_comment_text', 'NEWS_6_first_comment_text', 'NEWS_7_first_comment_text', 'NEWS_8_first_comment_text', 'NEWS_9_first_comment_text', 'NEWS_10_first_comment_text', 'NEWS_11_first_comment_text', 'NEWS_12_first_comment_text', 'NEWS_1_time_comment', 'NEWS_2_time_comment', 'NEWS_3_time_comment', 'NEWS_4_time_comment', 'NEWS_5_time_comment', 'NEWS_6_time_comment', 'NEWS_7_time_comment', 'NEWS_8_time_comment', 'NEWS_9_time_comment', 'NEWS_10_time_comment', 'NEWS_11_time_comment', 'NEWS_12_time_comment', 'NEWS_1_first_stars_number', 'NEWS_2_first_stars_number', 'NEWS_3_first_stars_number', 'NEWS_4_first_stars_number', 'NEWS_5_first_stars_number', 'NEWS_6_first_stars_number', 'NEWS_7_first_stars_number', 'NEWS_8_first_stars_number', 'NEWS_9_first_stars_number', 'NEWS_10_first_stars_number', 'NEWS_11_first_stars_number', 'NEWS_12_first_stars_number', 'NEWS_1_btn_stars', 'NEWS_2_btn_stars', 'NEWS_3_btn_stars', 'NEWS_4_btn_stars', 'NEWS_5_btn_stars', 'NEWS_6_btn_stars', 'NEWS_7_btn_stars', 'NEWS_8_btn_stars', 'NEWS_9_btn_stars', 'NEWS_10_btn_stars', 'NEWS_11_btn_stars', 'NEWS_12_btn_stars', 'NEWS_1_btn_comment', 'NEWS_2_btn_comment', 'NEWS_3_btn_comment', 'NEWS_4_btn_comment', 'NEWS_5_btn_comment', 'NEWS_6_btn_comment', 'NEWS_7_btn_comment', 'NEWS_8_btn_comment', 'NEWS_9_btn_comment', 'NEWS_10_btn_comment', 'NEWS_11_btn_comment', 'NEWS_12_btn_comment', 'NEWS_1_edit_stars', 'NEWS_2_edit_stars', 'NEWS_3_edit_stars', 'NEWS_4_edit_stars', 'NEWS_5_edit_stars', 'NEWS_6_edit_stars', 'NEWS_7_edit_stars', 'NEWS_8_edit_stars', 'NEWS_9_edit_stars', 'NEWS_10_edit_stars', 'NEWS_11_edit_stars', 'NEWS_12_edit_stars', 'NEWS_1_edit_stars_nr', 'NEWS_2_edit_stars_nr', 'NEWS_3_edit_stars_nr', 'NEWS_4_edit_stars_nr', 'NEWS_5_edit_stars_nr', 'NEWS_6_edit_stars_nr', 'NEWS_7_edit_stars_nr', 'NEWS_8_edit_stars_nr', 'NEWS_9_edit_stars_nr', 'NEWS_10_edit_stars_nr', 'NEWS_11_edit_stars_nr', 'NEWS_12_edit_stars_nr', 'NEWS_1_edit_comment', 'NEWS_2_edit_comment', 'NEWS_3_edit_comment', 'NEWS_4_edit_comment', 'NEWS_5_edit_comment', 'NEWS_6_edit_comment', 'NEWS_7_edit_comment', 'NEWS_8_edit_comment', 'NEWS_9_edit_comment', 'NEWS_10_edit_comment', 'NEWS_11_edit_comment', 'NEWS_12_edit_comment', 'NEWS_1_edit_comment_nr', 'NEWS_2_edit_comment_nr', 'NEWS_3_edit_comment_nr', 'NEWS_4_edit_comment_nr', 'NEWS_5_edit_comment_nr', 'NEWS_6_edit_comment_nr', 'NEWS_7_edit_comment_nr', 'NEWS_8_edit_comment_nr', 'NEWS_9_edit_comment_nr', 'NEWS_10_edit_comment_nr', 'NEWS_11_edit_comment_nr', 'NEWS_12_edit_comment_nr', 'leavescreen_29' ] @staticmethod def js_vars(player): return dict(total_news=player.NEWS_bought_second) @staticmethod def live_method(player: Player, data): if data['clicked_button'] == 1: if data['value'] == 1: player.NEWS_1_chosen = 1 else: if data['value'] == 2: player.NEWS_2_chosen = 1 else: if data['value'] == 3: player.NEWS_3_chosen = 1 else: if data['value'] == 4: player.NEWS_4_chosen = 1 else: if data['value'] == 5: player.NEWS_5_chosen = 1 else: if data['value'] == 6: player.NEWS_6_chosen = 1 else: if data['value'] == 7: player.NEWS_7_chosen = 1 else: if data['value'] == 8: player.NEWS_8_chosen = 1 else: if data['value'] == 9: player.NEWS_9_chosen = 1 else: if data['value'] == 10: player.NEWS_10_chosen = 1 else: if data['value'] == 11: player.NEWS_11_chosen = 1 else: if data['value'] == 12: player.NEWS_12_chosen = 1 residual_news = player.NEWS_bought_second-(player.NEWS_1_chosen+player.NEWS_2_chosen+player.NEWS_3_chosen+player.NEWS_4_chosen+player.NEWS_5_chosen+player.NEWS_6_chosen+player.NEWS_7_chosen+player.NEWS_8_chosen+player.NEWS_9_chosen+player.NEWS_10_chosen+player.NEWS_11_chosen+player.NEWS_12_chosen) response = dict(residual_news=residual_news, nws1=player.NEWS_1_chosen, nws2=player.NEWS_2_chosen, nws3=player.NEWS_3_chosen, nws4=player.NEWS_4_chosen, nws5=player.NEWS_5_chosen, nws6=player.NEWS_6_chosen, nws7=player.NEWS_7_chosen, nws8=player.NEWS_8_chosen, nws9=player.NEWS_9_chosen, nws10=player.NEWS_10_chosen, nws11=player.NEWS_11_chosen, nws12=player.NEWS_12_chosen) return {player.id_in_group: response} @staticmethod def vars_for_template(player: Player): variable_meaning = {1: C.U0_1, 2: C.U0_2, 3: C.U0_3, 4: C.U1_1, 5: C.U1_2, 6: C.U1_3, 7: C.U2_1, 8: C.U2_2, 9: C.U2_3, 10: C.U3_1, 11: C.U3_2, 12: C.U3_3} new_order = [] for i in range(0, 12): new_order.append(variable_meaning[player.participant.news_list[i]]) grid_1 = new_order[0] grid_2 = new_order[1] grid_3 = new_order[2] grid_4 = new_order[3] grid_5 = new_order[4] grid_6 = new_order[5] grid_7 = new_order[6] grid_8 = new_order[7] grid_9 = new_order[8] grid_10 = new_order[9] grid_11 = new_order[10] grid_12 = new_order[11] return dict(grid_1=grid_1, grid_2=grid_2, grid_3=grid_3, grid_4=grid_4, grid_5=grid_5, grid_6=grid_6, grid_7=grid_7, grid_8=grid_8, grid_9=grid_9, grid_10=grid_10, grid_11=grid_11, grid_12=grid_12) def before_next_page(player: Player, timeout_happened): tm1 = player.field_maybe_none('time_1') tm2 = player.field_maybe_none('time_2') tm3 = player.field_maybe_none('time_3') tm4 = player.field_maybe_none('time_4') tm5 = player.field_maybe_none('time_5') tm6 = player.field_maybe_none('time_6') tm7 = player.field_maybe_none('time_7') tm8 = player.field_maybe_none('time_8') tm9 = player.field_maybe_none('time_9') tm10 = player.field_maybe_none('time_10') tm11 = player.field_maybe_none('time_11') tm12 = player.field_maybe_none('time_12') tm1tot = player.field_maybe_none('time_1_total') tm2tot = player.field_maybe_none('time_2_total') tm3tot = player.field_maybe_none('time_3_total') tm4tot = player.field_maybe_none('time_4_total') tm5tot = player.field_maybe_none('time_5_total') tm6tot = player.field_maybe_none('time_6_total') tm7tot = player.field_maybe_none('time_7_total') tm8tot = player.field_maybe_none('time_8_total') tm9tot = player.field_maybe_none('time_9_total') tm10tot = player.field_maybe_none('time_10_total') tm11tot = player.field_maybe_none('time_11_total') tm12tot = player.field_maybe_none('time_12_total') cm1 = player.field_maybe_none('NEWS_1_comment') cm2 = player.field_maybe_none('NEWS_2_comment') cm3 = player.field_maybe_none('NEWS_3_comment') cm4 = player.field_maybe_none('NEWS_4_comment') cm5 = player.field_maybe_none('NEWS_5_comment') cm6 = player.field_maybe_none('NEWS_6_comment') cm7 = player.field_maybe_none('NEWS_7_comment') cm8 = player.field_maybe_none('NEWS_8_comment') cm9 = player.field_maybe_none('NEWS_9_comment') cm10 = player.field_maybe_none('NEWS_10_comment') cm11 = player.field_maybe_none('NEWS_11_comment') cm12 = player.field_maybe_none('NEWS_12_comment') st1 = player.field_maybe_none('NEWS_1_stars') st2 = player.field_maybe_none('NEWS_2_stars') st3 = player.field_maybe_none('NEWS_3_stars') st4 = player.field_maybe_none('NEWS_4_stars') st5 = player.field_maybe_none('NEWS_5_stars') st6 = player.field_maybe_none('NEWS_6_stars') st7 = player.field_maybe_none('NEWS_7_stars') st8 = player.field_maybe_none('NEWS_8_stars') st9 = player.field_maybe_none('NEWS_9_stars') st10 = player.field_maybe_none('NEWS_10_stars') st11 = player.field_maybe_none('NEWS_11_stars') st12 = player.field_maybe_none('NEWS_12_stars') stf1 = player.field_maybe_none('NEWS_1_first_stars_number') stf2 = player.field_maybe_none('NEWS_2_first_stars_number') stf3 = player.field_maybe_none('NEWS_3_first_stars_number') stf4 = player.field_maybe_none('NEWS_4_first_stars_number') stf5 = player.field_maybe_none('NEWS_5_first_stars_number') stf6 = player.field_maybe_none('NEWS_6_first_stars_number') stf7 = player.field_maybe_none('NEWS_7_first_stars_number') stf8 = player.field_maybe_none('NEWS_8_first_stars_number') stf9 = player.field_maybe_none('NEWS_9_first_stars_number') stf10 = player.field_maybe_none('NEWS_10_first_stars_number') stf11 = player.field_maybe_none('NEWS_11_first_stars_number') stf12 = player.field_maybe_none('NEWS_12_first_stars_number') if tm1 is None: player.NEWS_1_time = -1 else: player.NEWS_1_time = player.time_1 if tm2 is None: player.NEWS_2_time = -1 else: player.NEWS_2_time = player.time_2 if tm3 is None: player.NEWS_3_time = -1 else: player.NEWS_3_time = player.time_3 if tm4 is None: player.NEWS_4_time = -1 else: player.NEWS_4_time = player.time_4 if tm5 is None: player.NEWS_5_time = -1 else: player.NEWS_5_time = player.time_5 if tm6 is None: player.NEWS_6_time = -1 else: player.NEWS_6_time = player.time_6 if tm7 is None: player.NEWS_7_time = -1 else: player.NEWS_7_time = player.time_7 if tm8 is None: player.NEWS_8_time = -1 else: player.NEWS_8_time = player.time_8 if tm9 is None: player.NEWS_9_time = -1 else: player.NEWS_9_time = player.time_9 if tm10 is None: player.NEWS_10_time = -1 else: player.NEWS_10_time = player.time_10 if tm11 is None: player.NEWS_11_time = -1 else: player.NEWS_11_time = player.time_11 if tm12 is None: player.NEWS_12_time = -1 else: player.NEWS_12_time = player.time_12 # Total time spent on news if tm1tot is None: player.NEWS_1_time_total = -1 else: player.NEWS_1_time_total = player.time_1_total if tm2tot is None: player.NEWS_2_time_total = -1 else: player.NEWS_2_time_total = player.time_2_total if tm3tot is None: player.NEWS_3_time_total = -1 else: player.NEWS_3_time_total = player.time_3_total if tm4tot is None: player.NEWS_4_time_total = -1 else: player.NEWS_4_time_total = player.time_4_total if tm5tot is None: player.NEWS_5_time_total = -1 else: player.NEWS_5_time_total = player.time_5_total if tm6tot is None: player.NEWS_6_time_total = -1 else: player.NEWS_6_time_total = player.time_6_total if tm7tot is None: player.NEWS_7_time_total = -1 else: player.NEWS_7_time_total = player.time_7_total if tm8tot is None: player.NEWS_8_time_total = -1 else: player.NEWS_8_time_total = player.time_8_total if tm9tot is None: player.NEWS_9_time_total = -1 else: player.NEWS_9_time_total = player.time_9_total if tm10tot is None: player.NEWS_10_time_total = -1 else: player.NEWS_10_time_total = player.time_10_total if tm11tot is None: player.NEWS_11_time_total = -1 else: player.NEWS_11_time_total = player.time_11_total if tm12tot is None: player.NEWS_12_time_total = -1 else: player.NEWS_12_time_total = player.time_12_total # Comments if cm1 == "": player.NEWS_1_yes_comment = 0 else: player.NEWS_1_yes_comment = 1 if cm2 == "": player.NEWS_2_yes_comment = 0 else: player.NEWS_2_yes_comment = 1 if cm3 == "": player.NEWS_3_yes_comment = 0 else: player.NEWS_3_yes_comment = 1 if cm4 == "": player.NEWS_4_yes_comment = 0 else: player.NEWS_4_yes_comment = 1 if cm5 == "": player.NEWS_5_yes_comment = 0 else: player.NEWS_5_yes_comment = 1 if cm6 == "": player.NEWS_6_yes_comment = 0 else: player.NEWS_6_yes_comment = 1 if cm7 == "": player.NEWS_7_yes_comment = 0 else: player.NEWS_7_yes_comment = 1 if cm8 == "": player.NEWS_8_yes_comment = 0 else: player.NEWS_8_yes_comment = 1 if cm9 == "": player.NEWS_9_yes_comment = 0 else: player.NEWS_9_yes_comment = 1 if cm10 == "": player.NEWS_10_yes_comment = 0 else: player.NEWS_10_yes_comment = 1 if cm11 == "": player.NEWS_11_yes_comment = 0 else: player.NEWS_11_yes_comment = 1 if cm12 == "": player.NEWS_12_yes_comment = 0 else: player.NEWS_12_yes_comment = 1 # Stars if st1 is None: player.NEWS_1_yes_stars = 0 else: player.NEWS_1_yes_stars = 1 if st2 is None: player.NEWS_2_yes_stars = 0 else: player.NEWS_2_yes_stars = 1 if st3 is None: player.NEWS_3_yes_stars = 0 else: player.NEWS_3_yes_stars = 1 if st4 is None: player.NEWS_4_yes_stars = 0 else: player.NEWS_4_yes_stars = 1 if st5 is None: player.NEWS_5_yes_stars = 0 else: player.NEWS_5_yes_stars = 1 if st6 is None: player.NEWS_6_yes_stars = 0 else: player.NEWS_6_yes_stars = 1 if st7 is None: player.NEWS_7_yes_stars = 0 else: player.NEWS_7_yes_stars = 1 if st8 is None: player.NEWS_8_yes_stars = 0 else: player.NEWS_8_yes_stars = 1 if st9 is None: player.NEWS_9_yes_stars = 0 else: player.NEWS_9_yes_stars = 1 if st10 is None: player.NEWS_10_yes_stars = 0 else: player.NEWS_10_yes_stars = 1 if st11 is None: player.NEWS_11_yes_stars = 0 else: player.NEWS_11_yes_stars = 1 if st12 is None: player.NEWS_12_yes_stars = 0 else: player.NEWS_12_yes_stars = 1 # Comments first if len(player.NEWS_1_first_comment_text) != 0: player.NEWS_1_first_comment = 1 if len(player.NEWS_2_first_comment_text) != 0: player.NEWS_2_first_comment = 1 if len(player.NEWS_3_first_comment_text) != 0: player.NEWS_3_first_comment = 1 if len(player.NEWS_4_first_comment_text) != 0: player.NEWS_4_first_comment = 1 if len(player.NEWS_5_first_comment_text) != 0: player.NEWS_5_first_comment = 1 if len(player.NEWS_6_first_comment_text) != 0: player.NEWS_6_first_comment = 1 if len(player.NEWS_7_first_comment_text) != 0: player.NEWS_7_first_comment = 1 if len(player.NEWS_8_first_comment_text) != 0: player.NEWS_8_first_comment = 1 if len(player.NEWS_9_first_comment_text) != 0: player.NEWS_9_first_comment = 1 if len(player.NEWS_10_first_comment_text) != 0: player.NEWS_10_first_comment = 1 if len(player.NEWS_11_first_comment_text) != 0: player.NEWS_11_first_comment = 1 if len(player.NEWS_12_first_comment_text) != 0: player.NEWS_12_first_comment = 1 # Stars (first) if stf1 is None: player.NEWS_1_first_stars = 0 else: player.NEWS_1_first_stars = 1 if stf2 is None: player.NEWS_2_first_stars = 0 else: player.NEWS_2_first_stars = 1 if stf3 is None: player.NEWS_3_first_stars = 0 else: player.NEWS_3_first_stars = 1 if stf4 is None: player.NEWS_4_first_stars = 0 else: player.NEWS_4_first_stars = 1 if stf5 is None: player.NEWS_5_first_stars = 0 else: player.NEWS_5_first_stars = 1 if stf6 is None: player.NEWS_6_first_stars = 0 else: player.NEWS_6_first_stars = 1 if stf7 is None: player.NEWS_7_first_stars = 0 else: player.NEWS_7_first_stars = 1 if stf8 is None: player.NEWS_8_first_stars = 0 else: player.NEWS_8_first_stars = 1 if stf9 is None: player.NEWS_9_first_stars = 0 else: player.NEWS_9_first_stars = 1 if stf10 is None: player.NEWS_10_first_stars = 0 else: player.NEWS_10_first_stars = 1 if stf11 is None: player.NEWS_11_first_stars = 0 else: player.NEWS_12_first_stars = 1 if stf12 is None: player.NEWS_12_first_stars = 0 else: player.NEWS_12_first_stars = 1 class News_3_sg(Page): def is_displayed(player: Player): return player.participant.treatment == "secondgeneration" and player.NEWS_bought_second > 0 \ or player.participant.treatment == "secondgenerationidentity" and player.NEWS_bought_second > 0 form_model = 'player' form_fields = ['time_1', 'time_2', 'time_3', 'time_4', 'time_5', 'time_6', 'time_7', 'time_8', 'time_9', 'time_10', 'time_11', 'time_12', 'NEWS_1_button_nrs', 'NEWS_2_button_nrs', 'NEWS_3_button_nrs', 'NEWS_4_button_nrs', 'NEWS_5_button_nrs', 'NEWS_6_button_nrs', 'NEWS_7_button_nrs', 'NEWS_8_button_nrs', 'NEWS_9_button_nrs', 'NEWS_10_button_nrs', 'NEWS_11_button_nrs', 'NEWS_12_button_nrs', 'leavescreen_30' ] @staticmethod def js_vars(player): return dict(total_news=player.NEWS_bought_second) @staticmethod def live_method(player: Player, data): if data['clicked_button'] == 1: if data['value'] == 1: player.NEWS_1_chosen = 1 else: if data['value'] == 2: player.NEWS_2_chosen = 1 else: if data['value'] == 3: player.NEWS_3_chosen = 1 else: if data['value'] == 4: player.NEWS_4_chosen = 1 else: if data['value'] == 5: player.NEWS_5_chosen = 1 else: if data['value'] == 6: player.NEWS_6_chosen = 1 else: if data['value'] == 7: player.NEWS_7_chosen = 1 else: if data['value'] == 8: player.NEWS_8_chosen = 1 else: if data['value'] == 9: player.NEWS_9_chosen = 1 else: if data['value'] == 10: player.NEWS_10_chosen = 1 else: if data['value'] == 11: player.NEWS_11_chosen = 1 else: if data['value'] == 12: player.NEWS_12_chosen = 1 residual_news = player.NEWS_bought_second-(player.NEWS_1_chosen+player.NEWS_2_chosen+player.NEWS_3_chosen+player.NEWS_4_chosen+player.NEWS_5_chosen+player.NEWS_6_chosen+player.NEWS_7_chosen+player.NEWS_8_chosen+player.NEWS_9_chosen+player.NEWS_10_chosen+player.NEWS_11_chosen+player.NEWS_12_chosen) response = dict(residual_news=residual_news, nws1=player.NEWS_1_chosen, nws2=player.NEWS_2_chosen, nws3=player.NEWS_3_chosen, nws4=player.NEWS_4_chosen, nws5=player.NEWS_5_chosen, nws6=player.NEWS_6_chosen, nws7=player.NEWS_7_chosen, nws8=player.NEWS_8_chosen, nws9=player.NEWS_9_chosen, nws10=player.NEWS_10_chosen, nws11=player.NEWS_11_chosen, nws12=player.NEWS_12_chosen) return {player.id_in_group: response} def vars_for_template(player: Player): variable_meaning = {1: [C.U0_1], 2: [C.U0_2], 3: [C.U0_3], 4: [C.U1_1], 5: [C.U1_2], 6: [C.U1_3], 7: [C.U2_1], 8: [C.U2_2], 9: [C.U2_3], 10: [C.U3_1], 11: [C.U3_2], 12: [C.U3_3]} grid_1 = variable_meaning[player.participant.news_list[0]][0] grid_2 = variable_meaning[player.participant.news_list[1]][0] grid_3 = variable_meaning[player.participant.news_list[2]][0] grid_4 = variable_meaning[player.participant.news_list[3]][0] grid_5 = variable_meaning[player.participant.news_list[4]][0] grid_6 = variable_meaning[player.participant.news_list[5]][0] grid_7 = variable_meaning[player.participant.news_list[6]][0] grid_8 = variable_meaning[player.participant.news_list[7]][0] grid_9 = variable_meaning[player.participant.news_list[8]][0] grid_10 = variable_meaning[player.participant.news_list[9]][0] grid_11 = variable_meaning[player.participant.news_list[10]][0] grid_12 = variable_meaning[player.participant.news_list[11]][0] read1 = player.participant.read[player.participant.news_list[0]-1] read2 = player.participant.read[player.participant.news_list[1]-1] read3 = player.participant.read[player.participant.news_list[2]-1] read4 = player.participant.read[player.participant.news_list[3]-1] read5 = player.participant.read[player.participant.news_list[4]-1] read6 = player.participant.read[player.participant.news_list[5]-1] read7 = player.participant.read[player.participant.news_list[6]-1] read8 = player.participant.read[player.participant.news_list[7]-1] read9 = player.participant.read[player.participant.news_list[8]-1] read10 = player.participant.read[player.participant.news_list[9]-1] read11 = player.participant.read[player.participant.news_list[10]-1] read12 = player.participant.read[player.participant.news_list[11]-1] stars1 = player.participant.stars[player.participant.news_list[0]-1] stars2 = player.participant.stars[player.participant.news_list[1]-1] stars3 = player.participant.stars[player.participant.news_list[2]-1] stars4 = player.participant.stars[player.participant.news_list[3]-1] stars5 = player.participant.stars[player.participant.news_list[4]-1] stars6 = player.participant.stars[player.participant.news_list[5]-1] stars7 = player.participant.stars[player.participant.news_list[6]-1] stars8 = player.participant.stars[player.participant.news_list[7]-1] stars9 = player.participant.stars[player.participant.news_list[8]-1] stars10 = player.participant.stars[player.participant.news_list[9]-1] stars11 = player.participant.stars[player.participant.news_list[10]-1] stars12 = player.participant.stars[player.participant.news_list[11]-1] comments1 = player.participant.comments[player.participant.news_list[0]-1] comments2 = player.participant.comments[player.participant.news_list[1]-1] comments3 = player.participant.comments[player.participant.news_list[2]-1] comments4 = player.participant.comments[player.participant.news_list[3]-1] comments5 = player.participant.comments[player.participant.news_list[4]-1] comments6 = player.participant.comments[player.participant.news_list[5]-1] comments7 = player.participant.comments[player.participant.news_list[6]-1] comments8 = player.participant.comments[player.participant.news_list[7]-1] comments9 = player.participant.comments[player.participant.news_list[8]-1] comments10 = player.participant.comments[player.participant.news_list[9]-1] comments11 = player.participant.comments[player.participant.news_list[10]-1] comments12 = player.participant.comments[player.participant.news_list[11]-1] content1_raw = player.participant.content[player.participant.news_list[0]-1] content2_raw = player.participant.content[player.participant.news_list[1]-1] content3_raw = player.participant.content[player.participant.news_list[2]-1] content4_raw = player.participant.content[player.participant.news_list[3]-1] content5_raw = player.participant.content[player.participant.news_list[4]-1] content6_raw = player.participant.content[player.participant.news_list[5]-1] content7_raw = player.participant.content[player.participant.news_list[6]-1] content8_raw = player.participant.content[player.participant.news_list[7]-1] content9_raw = player.participant.content[player.participant.news_list[8]-1] content10_raw = player.participant.content[player.participant.news_list[9]-1] content11_raw = player.participant.content[player.participant.news_list[10]-1] content12_raw = player.participant.content[player.participant.news_list[11]-1] starspeople1 = player.participant.starspeople[player.participant.news_list[0]-1] starspeople2 = player.participant.starspeople[player.participant.news_list[1]-1] starspeople3 = player.participant.starspeople[player.participant.news_list[2]-1] starspeople4 = player.participant.starspeople[player.participant.news_list[3]-1] starspeople5 = player.participant.starspeople[player.participant.news_list[4]-1] starspeople6 = player.participant.starspeople[player.participant.news_list[5]-1] starspeople7 = player.participant.starspeople[player.participant.news_list[6]-1] starspeople8 = player.participant.starspeople[player.participant.news_list[7]-1] starspeople9 = player.participant.starspeople[player.participant.news_list[8]-1] starspeople10 = player.participant.starspeople[player.participant.news_list[9]-1] starspeople11 = player.participant.starspeople[player.participant.news_list[10]-1] starspeople12 = player.participant.starspeople[player.participant.news_list[11]-1] starsrating1 = player.participant.starsrating[player.participant.news_list[0]-1] starsrating2 = player.participant.starsrating[player.participant.news_list[1]-1] starsrating3 = player.participant.starsrating[player.participant.news_list[2]-1] starsrating4 = player.participant.starsrating[player.participant.news_list[3]-1] starsrating5 = player.participant.starsrating[player.participant.news_list[4]-1] starsrating6 = player.participant.starsrating[player.participant.news_list[5]-1] starsrating7 = player.participant.starsrating[player.participant.news_list[6]-1] starsrating8 = player.participant.starsrating[player.participant.news_list[7]-1] starsrating9 = player.participant.starsrating[player.participant.news_list[8]-1] starsrating10 = player.participant.starsrating[player.participant.news_list[9]-1] starsrating11 = player.participant.starsrating[player.participant.news_list[10]-1] starsrating12 = player.participant.starsrating[player.participant.news_list[11]-1] content1_split = content1_raw.split(';;;;') starsrating1_split = starsrating1.split(';') content1 = "" for name, stars in zip(content1_split, starsrating1_split): if name != "": if stars != '0': content1 += "