from django.forms import CheckboxSelectMultiple, RadioSelect from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) from urllib import parse import ast from otree.app_template.models import Player from django import forms import random import string author = 'Monika Leszczynska' doc = """ Word Transcription Task to introduce familiarity """ class Constants(BaseConstants): fixed_payoff = c(0.50) piece_rate = c(0.05) task_timer = 120 trial = 0 name_in_url = 'task' players_per_group = None completion_url = "https://app.prolific.co/submissions/complete?cc=558227BA" num_rounds = 50 # set high enough (>= maximum of number of tasks someone could do) num_letters = 6 letter_table_study = [] code_table_study = [] for i in range(0, num_rounds+1): n = num_letters numbers_list =[] for j in range(0,26): numbers_list.append(j) letters_list = list(string.ascii_uppercase) random.shuffle(letters_list) code = [] word = [] for b in range(1, n+1): k = random.randint(0, 25) code.append(k) s = letters_list[k] word.append(s) letter_table = list( zip( letters_list, numbers_list, ) ) code_table = list( zip( code, word, ) ) letter_table_study.append(letter_table) code_table_study.append(code_table) class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): p.participant.vars['endgame'] = 0 class Group(BaseGroup): pass class Player(BasePlayer): # create fields for consent # ---------------------------------------------------------------------------------------------------------- consent = models.BooleanField(blank=True) submit_noConsent = models.BooleanField(blank=True, initial=False) # create fields for demographics questionnaire # ---------------------------------------------------------------------------------------------------------- gender = models.StringField() gender_others = models.StringField(blank=True) age = models.IntegerField(min=18, max=100) # create field for players task timer # ---------------------------------------------------------------------------------------------------------- task_timer = models.IntegerField(initial=Constants.task_timer) task_timeout = models.BooleanField(initial=False) # create fields for recording the number of correct tasks # ---------------------------------------------------------------------------------------- total_correct = models.IntegerField(initial=0) total_payment = models.CurrencyField() total_piecerate = models.CurrencyField()