from otree.api import * doc = """ Ontwikkeld door Lobke Weijers, Tilburg University. Voor vragen kunt u contact opnemen via L.T.Weijers@tilburguniversity.edu """ class C(BaseConstants): NAME_IN_URL = 'thesis' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 smalltalk = [1,3,5] #small talk nosmalltalk = [2,4,6] #no small talk SITinfo = [1, 2] PSinfo = [3,4] unrelated = [5,6] StandardChoices=[ [1, 'Helemaal oneens'], [2, 'Oneens'], [3, 'Noch mee oneens, noch mee eens'], [4, 'Eens'], [5, 'Helemaal eens'], ] class Subsession(BaseSubsession): pass def creating_session(subsession): import itertools con = itertools.cycle([1, 2, 3, 4, 5, 6]) for player in subsession.get_players(): player.condition = next(con) # 1 is small talk, SIT info # 2 is niet small talk, SIT info # 3 is small talk, professional salience # 4 is niet small talk, professional salience # 5 is small talk, unrelated # 6 is niet small talk, unrelated class Group(BaseGroup): pass class Player(BasePlayer): name_PO = models.StringField(label='Vul hier je voornaam in:', blank=False) accept_conditions = models.BooleanField(blank=False, widget=widgets.CheckboxInput) condition = models.IntegerField() #Judgement variables add_evidence = models.FloatField() request_evidence = models.TextField( label="Maak in het onderstaande tekstvak een lijst met specifieke documenten die je zou willen opvragen bij de k" "lant en andere opvallendheden (e.g., herrubriceringen, onjuistheden in de debiteurenlijst).", blank=False) add_auditwork = models.FloatField() #cues = models.TextField( #label="Maak in het onderstaande tekstvak een lijst met mogelijke herrubriceringen, onjuistheden in de debiteuren" #"lijst of andere opvallendheden.", blank=False) risk = models.FloatField() trust = models.FloatField() communication_mode = models.IntegerField( label="Hoe zou je de CFO willen benaderen over eventuele opvallendheden en de extra op te vragen documenten voor aanvang van de controle op locatie?", choices=[ [1, 'Per telefoon'], [2, 'Per e-mail'], ], widget=widgets.RadioSelect ) time = models.BooleanField(initial=True) calc_page_start = models.FloatField() calc_page_duration = models.FloatField() #Demographics Age = models.IntegerField(label="Wat is je leeftijd?", min=17, max=67, blank=True) Gender = models.IntegerField( label="Wat is je geslacht?", choices=[ [1, 'Man'], [2, 'Vrouw'], [3, 'Anders'], [4, 'Wil liever niet zeggen.'], ] ) WorkExp = models.IntegerField(label="Hoeveel maanden werkervaring als auditor heb je?", min=0, max=480, blank=True) Big4_question = models.IntegerField( label="Voor welk type accountantskantoor werk je?", choices=[ [1, 'Een Big-4 kantoor'], [2, 'Een Niet-Big-4 kantoor'], [3, 'Ik werk niet voor een accountantskantoor.'] ] ) DebExp = models.IntegerField(label = 'Heb je al eens eerder de controle van de debiteuren uitgevoerd?', choices = [[0, 'Nee'], [1, 'Ja']]) # Payment SNR = models.StringField(label='Vul hier je SNR nummer in en je zult een e-mail ontvangen omtrent de betaalprocedure:') feedback = models.TextField( label="Mocht je feedback over deze studie hebben, laat deze dan achter in het tekstvak.", blank=True) #manipulation chekcs IOS_measure = models.IntegerField(label="Onder klantteam verstaan we in deze vraag de groep bestaande uit het audit " "team (o.a. audit partner en controleleider) en de klant Moeren en Bouten B.V.(o.a. CEO, CFO en financiële administratie). " "Kies het paar cirkels welke het beste de mate waarin jij je identificeert " "met het klantteam weergeeft. X staat hier voor het eerder beschreven klantteam.", min=1, max=7, blank=False) Pidentity_measure = models.IntegerField( label="Kies het paar cirkels welke het beste de mate waarin jij je identificeert " "met het beroep van accountant weergeeft. X staat hier voor het beroep van accountant.", min=1, max=7, blank=False) edu_measure = models.IntegerField(label = "Ik ben mij bewust van het effect dat group identity zou kunnen hebben op mijn beslissingen tijdens de audit. 'Group identity' verwijst naar het gedeelde gevoel van verbondenheid, kenmerken en waarden die individuen associëren met een bepaalde groep.", choices = C.StandardChoices) smalltalk_measure = models.IntegerField(label = "Tijdens de meeting met de senior auditors en het management van de klant was er sprake van small talk.", choices = C.StandardChoices) social_bond = models.IntegerField(label = "Er is sprake van een sociale connectie tussen de senior auditors en het management van de klant.", choices = C.StandardChoices) time_pressure = models.IntegerField(label = "Toen ik de audit taak uitvoerde, ervaarde ik tijdsdruk.", choices = C.StandardChoices) motivation = models.IntegerField(label="Ik was gemotiveerd om dit experiment uit te voeren.", choices=C.StandardChoices) inleven = models.IntegerField(label="Ik kon mij goed inleven in de setting van de audit van Moeren en Bouten B.V.", choices=C.StandardChoices) #comprehension checks cq1 = models.IntegerField( label = "Een group identity kan ontstaan:", choices=[ [1, 'na een paar maanden.'], [2, 'tijdens de eerste ontmoeting.'], [3, 'na minstens een jaar.'] ], widget = widgets.RadioSelect ) cq2 = models.IntegerField( label = "Het ontstaan van een group identity kan zorgen voor:", choices=[ [1, 'een minder objectieve instelling en daardoor het accepteren van hogere risicos.'], [2, 'een objectievere instelling en daardoor het accepteren van hogere risicos.'], [3, 'een objectievere instelling en daardoor het niet rapporteren van fouten.'] ], widget = widgets.RadioSelect ) cq3 = models.IntegerField( label = "Fair value estimates zijn:", choices=[ [1, 'onbelangrijk voor de financiële rapportage van een bedrijf.'], [2, 'belangrijk voor de financiële rapportage van een bedrijf.'], [3, 'niet de verantwoordelijkheid van de auditor.'] ], widget = widgets.RadioSelect ) cq4 = models.IntegerField( label = "Voor het evalueren van fair value estimates:", choices=[ [1, 'is het niet nodig om extra documentatie op te vragen bij de klant.'], [2, 'hoeft enkel de fair value berekening doorgenomen te worden.'], [3, 'moet een grondige analyse van de veronderstellingen en gebruikte methode worden gedaan.'] ], widget = widgets.RadioSelect ) cq5 = models.IntegerField( label = "Door de vitamine A in tomaten helpen ze bij:", choices=[ [1, 'de groei en het herstel van weefsels in het lichaam.'], [2, 'het handhaven van een gezonde bloeddruk.'], [3, 'het behoud van gezonde ogen en huid.'] ], widget = widgets.RadioSelect ) cq6 = models.IntegerField( label = "Tomaten moeten niet samen bewaard worden met:", choices=[ [1, 'komkommers en prei.'], [2, 'appels en peren.'], [3, 'paprika en witlof.'] ], widget = widgets.RadioSelect ) #SD3 ma_1 = models.IntegerField( label = "Het is niet verstandig om je geheimen te vertellen.", choices = C.StandardChoices ) ma_2 = models.IntegerField( label = "Ik gebruik graag slimme manipulatie om mijn zin te krijgen.", choices = C.StandardChoices ) ma_3 = models.IntegerField( label = "Wat er ook voor nodig is, je moet de belangrijke mensen aan jouw kant krijgen.", choices = C.StandardChoices ) ma_4 = models.IntegerField( label = "Vermijd directe conflicten met anderen, omdat ze in de toekomst nuttig kunnen zijn.", choices = C.StandardChoices ) ma_5 = models.IntegerField( label = "Het is verstandig om informatie bij te houden die je ooit tegen mensen zou kunnen gebruiken.", choices = C.StandardChoices ) ma_6 = models.IntegerField( label = "Je moet wachten op het juiste moment om op mensen terug te komen.", choices = C.StandardChoices ) ma_7 = models.IntegerField( label = "Er zijn dingen die je voor andere mensen moet verbergen om je reputatie te beschermen.", choices = C.StandardChoices ) ma_8 = models.IntegerField( label = "Zorg ervoor dat je plannen jezelf ten goede komen, niet anderen.", choices = C.StandardChoices ) ma_9 = models.IntegerField( label = "De meeste mensen zijn te manipuleren.", choices = C.StandardChoices ) na_1 = models.IntegerField( label = "Mensen zien mij als een natuurlijke leider.", choices = C.StandardChoices ) na_2 = models.IntegerField( label = "Ik haat het om in het middelpunt van de belangstelling te staan.", ##reverse coded choices = C.StandardChoices ) na_3 = models.IntegerField( label = "Veel groepsactiviteiten zijn saai zonder mij.", choices = C.StandardChoices ) na_4 = models.IntegerField( label = "Ik weet dat ik speciaal ben omdat iedereen me dat blijft vertellen.", choices = C.StandardChoices ) na_5 = models.IntegerField( label = "Ik maak graag kennis met belangrijke mensen.", choices = C.StandardChoices ) na_6 = models.IntegerField( label = "Ik schaam me als iemand me complimenteert.", ##reverse coded choices = C.StandardChoices ) na_7 = models.IntegerField( label = "Ik ben vergeleken met beroemde mensen.", choices = C.StandardChoices ) na_8 = models.IntegerField( label = "Ik ben een gemiddeld persoon.", ##reverse coded choices = C.StandardChoices ) na_9 = models.IntegerField( label = "Ik sta erop het respect te krijgen dat ik verdien.", choices = C.StandardChoices ) ps_1 = models.IntegerField( label = "Ik neem graag wraak op autoriteiten.", choices = C.StandardChoices ) ps_2 = models.IntegerField( label = "Ik vermijd gevaarlijke situaties", ##reverse coded choices = C.StandardChoices ) ps_3 = models.IntegerField( label = "Wraak moet snel en smerig zijn.", choices = C.StandardChoices ) ps_4 = models.IntegerField( label = "Mensen zeggen vaak dat ik de controle kwijt ben.", choices = C.StandardChoices ) ps_5 = models.IntegerField( label = "Het is waar dat ik gemeen kan zijn tegen anderen.", choices = C.StandardChoices ) ps_6 = models.IntegerField( label = "Mensen die met me rotzooien hebben er altijd spijt van.", choices = C.StandardChoices ) #TIPI TIPI_1 = models.IntegerField( label="Extravert, enthousiast", min=1, max=7, blank=False) TIPI_2 = models.IntegerField( label="Kritisch, ruziezoekend", min=1, max=7, blank=False) TIPI_3 = models.IntegerField( label="Grondig, gedisciplineerd", min=1, max=7, blank=False) TIPI_4 = models.IntegerField( label="Angstig, makkelijk van streek te brengen", min=1, max=7, blank=False) TIPI_5 = models.IntegerField( label="Open voor nieuwe ervaringen, levendige fantasie", min=1, max=7, blank=False) TIPI_6 = models.IntegerField( label="Gereserveerd, stil", min=1, max=7, blank=False) TIPI_7 = models.IntegerField( label="Sympathiek, vriendelijk", min=1, max=7, blank=False) TIPI_8 = models.IntegerField( label="Lui, gemakzuchtig", min=1, max=7, blank=False) TIPI_9 = models.IntegerField( label="Kalm, emotioneel stabiel", min=1, max=7, blank=False) TIPI_10 = models.IntegerField( label="Weinig artistieke interesse, weinig creatief", min=1, max=7, blank=False) # PAGES class Intro(Page): form_model = 'player' form_fields = [ 'accept_conditions' ] pass class Education(Page): #form_model = 'player' #form_fields =['cq1', 'cq2', 'cq3', 'cq4', 'cq5', 'cq6',] #@staticmethod #def get_form_fields(player): # if player.condition in C.SITinfo: # return ['cq1', 'cq2'] # elif player.condition in C.PSinfo: # return ['cq3', 'cq4'] # else: # return ['cq5', 'cq6'] pass class Scenario(Page): pass class Meeting(Page): @staticmethod def before_next_page(player: Player, timeout_happened): import time player.calc_page_start = time.time() pass class Debiteuren(Page): form_model = 'player' form_fields = ['add_evidence','add_auditwork','request_evidence','risk', 'trust', 'communication_mode'] timeout_seconds = 720 @staticmethod def before_next_page(player: Player, timeout_happened): import time player.calc_page_duration = time.time() - player.calc_page_start if timeout_happened: player.time = False pass class IOS (Page): form_model = 'player' form_fields = ['IOS_measure', 'Pidentity_measure'] pass class manipulation(Page): form_model = 'player' form_fields = ['edu_measure', 'smalltalk_measure', 'social_bond', 'time_pressure', 'motivation', 'inleven'] pass class Demographics1(Page): form_model = 'player' form_fields= [ 'Age', 'Gender', 'WorkExp', 'DebExp', 'Big4_question', 'SNR'] pass class SD3(Page): form_model = 'player' form_fields = ['ma_1', 'ma_2', 'ma_3', 'ma_4','ma_5','ma_6','ma_7','ma_8', 'ma_9', 'na_1', 'na_2', 'na_3', 'na_4', 'na_5', 'na_6', 'na_7', 'na_8', 'na_9', 'ps_1', 'ps_2', 'ps_3', 'ps_4', 'ps_5', 'ps_6'] pass class TIPI(Page): form_model = 'player' form_fields = [ 'TIPI_1','TIPI_2','TIPI_3','TIPI_4','TIPI_5','TIPI_6','TIPI_7','TIPI_8','TIPI_9','TIPI_10',] pass class ResultsWaitPage(WaitPage): pass class Thanks(Page): form_model = 'player' form_fields = ['feedback'] pass class Results(Page): pass page_sequence = [Intro, Scenario, Education, Meeting, Debiteuren, IOS, manipulation, Demographics1, SD3, TIPI, Thanks]