from .models import * class ConsentPage(Page): form_model = 'player' form_fields = ['consent_accept', 'completion_code'] class Charity_Select(Page): form_model = 'player' form_fields = ['charity'] def is_displayed(self): player = self.player return player.consent_accept == "True" class General_Instructions(Page): form_model = 'player' def is_displayed(self): player = self.player return player.consent_accept == "True" class General_Instructions_continue(Page): form_model = 'player' def is_displayed(self): player = self.player return player.consent_accept == "True" class Quiz1_Instructions(Page): form_model = 'player' def is_displayed(self): player = self.player return player.consent_accept == "True" class Quiz1_question1(Page): form_model = 'player' form_fields = ['volunteer_match'] def is_displayed(self): player = self.player return player.consent_accept == "True" class Quiz1_question2(Page): form_model = 'player' form_fields = ['donation_reci'] def is_displayed(self): player = self.player return player.consent_accept == "True" class Quiz1_question3(Page): form_model = 'player' form_fields = ['money_after_donation'] def is_displayed(self): player = self.player return player.consent_accept == "True" class Quiz1_question4(Page): form_model = 'player' form_fields = ['time_to_pay'] def is_displayed(self): player = self.player return player.consent_accept == "True" class UnConditional(Page): form_model = 'player' form_fields = ['unconditionp1_donate'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 def error_message(self, values): if len(str(values['unconditionp1_donate'])) > 3: return 'You can only include up to one decimal!' class Unconditional_Instruction(Page): form_model = 'player' class Conditional(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 class Practice_Conditional(Page): form_model = 'player' form_fields = ['PracticeCon0', 'PracticeCon1', 'PracticeCon2', 'PracticeCon3', 'PracticeCon4', 'PracticeCon5'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 def error_message(self, values): if len(str(values['PracticeCon0'])) > 3 or len(str(values['PracticeCon1'])) > 3 or len(str(values['PracticeCon2'])) > 3 or len(str(values['PracticeCon3'])) > 3 or len(str(values['PracticeCon4'])) > 3 or len(str(values['PracticeCon5'])) > 3: return 'You can only include up to one decimal!' class Practice_Conditional_Result(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 class Quiz2_Instructions(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 class Quiz2_question1(Page): form_model = 'player' form_fields = ['what_asked_volunteer'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 class Quiz2_question2(Page): form_model = 'player' form_fields = ['what_is_payment3'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 def vars_for_template(self): player = self.player import random if player.PracticeCon2 != player.PracticeCon3 and player.PracticeCon1 != player.PracticeCon3 and player.PracticeCon1 != player.PracticeCon2: cur1 = player.PracticeCon2 cur2 = player.PracticeCon1 else: same1 = True same2 = True while same1: dci1 = str(random.randrange(0,5)) flo1 = str(random.randrange(1,10)) cur1 = dci1 + "." + flo1 same1 = (cur1 == str(player.PracticeCon3)) while same2: dci2 = str(random.randrange(0,5)) flo2 = str(random.randrange(1,10)) cur2 = dci2 + "." + flo2 same2 = (cur2 == str(player.PracticeCon3) or cur2 == cur1) return dict(var1 = cur1, var2 = cur2) class Quiz2_question3(Page): form_model = 'player' form_fields = ['what_is_payment2'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 return player.consent_accept == "True" and false_count < 2 def vars_for_template(self): player = self.player import random if player.PracticeCon4 != player.PracticeCon2 and player.PracticeCon5 != player.PracticeCon2 and player.PracticeCon4 != player.PracticeCon5: cur1 = player.PracticeCon4 cur2 = player.PracticeCon5 else: same1 = True same2 = True while same1: dci1 = str(random.randrange(0,5)) flo1 = str(random.randrange(1,10)) cur1 = dci1 + "." + flo1 same1 = (cur1 == str(player.PracticeCon2)) while same2: dci2 = str(random.randrange(0,5)) flo2 = str(random.randrange(1,10)) cur2 = dci2 + "." + flo2 same2 = (cur2 == str(player.PracticeCon2) or cur2 == cur1) return dict(var1 = cur1, var2 = cur2) class Quiz_Passed(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 class Conditional_Real(Page): form_model = 'player' form_fields = ['Con0', 'Con1', 'Con2', 'Con3', 'Con4', 'Con5'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 def error_message(self, values): if len(str(values['Con0'])) > 3 or len(str(values['Con1'])) > 3 or len(str(values['Con2'])) > 3 or len(str(values['Con3'])) > 3 or len(str(values['Con4'])) > 3 or len(str(values['Con5'])) > 3: return 'You can only include up to one decimal!' class Choices(Page): form_model = 'player' form_fields = ['Preferred'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 class CollectInfo(Page): form_model = 'player' form_fields = ['MTurkID', 'Highest_edu', 'Gender', 'Age'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 def error_message(self, values): err_mes = "" if values['MTurkID'] == None: err_mes = err_mes + " Please enter your MTurkID!" if values['Highest_edu'] == None: err_mes = err_mes + " Please select your highest education!" if values['Gender'] == None: err_mes = err_mes + " Please select your gender!" if values['Age'] == None: err_mes = err_mes + " Please select your age!" if values['MTurkID'] == None or values['Highest_edu'] == None or values['Gender'] == None or values['Age'] == None: return err_mes class Collectmoreinfo(Page): form_model = 'player' form_fields = ['charity_donation', 'accept_higher_bonus', 'causes_believe_in', 'unable_to_no', 'rating', 'favored_reason', 'suggestion', 'why_highlight'] def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 def error_message(self, values): if values['charity_donation'] == None or values['accept_higher_bonus'] == None or values['causes_believe_in'] == None or values['unable_to_no'] == None or values['favored_reason'] == None or values['rating'] == None or values['why_highlight'] == None: return "Please answer the survey!" class CompletionPage(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 class Thank_You_Page(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and false_count < 2 and false2_count < 2 class Exceed_false(Page): form_model = 'player' def is_displayed(self): player = self.player false_count = 0 if player.volunteer_match == "False": false_count += 1 if player.donation_reci == "False": false_count += 1 if player.money_after_donation == "False": false_count += 1 if player.time_to_pay == "False": false_count += 1 false2_count = 0 if player.what_asked_volunteer == "False": false2_count += 1 if player.what_is_payment3 == "False": false2_count += 1 if player.what_is_payment2 == "False": false2_count += 1 return player.consent_accept == "True" and (false_count >= 2 or false2_count >= 2) page_sequence = [ConsentPage, Charity_Select, General_Instructions, General_Instructions_continue, Quiz1_Instructions, Quiz1_question1, Quiz1_question2, Quiz1_question3, Quiz1_question4, UnConditional, Unconditional_Instruction, Conditional, Practice_Conditional, Practice_Conditional_Result, Quiz2_Instructions, Quiz2_question1, Quiz2_question2, Quiz2_question3, Quiz_Passed, Conditional_Real, Choices, CollectInfo, Collectmoreinfo, CompletionPage, Thank_You_Page, Exceed_false]