from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer ) from django.db import models as django_model import os import random import io import glob import boto3 author = 'P. Ripolles' doc = """ SSS-Test Accelerated as in Assaneo, Ripolles, Orpella et al., 2019, Nature Neuroscience" """ class Constants(BaseConstants): name_in_url = 'SSSTest' players_per_group = None num_rounds = 1 # Phonembes for the test and correct answers q_run1=['MU','CHI','Té','FAN'] q_run2 = ['NA', 'FU', 'GI', 'BA'] dici = {} dici['MU'] = 'YES' dici['CHI'] = 'YES' dici['NA'] = 'YES' dici['FU'] = 'YES' dici['Té'] = 'NO' dici['FAN'] = 'NO' dici['GI'] = 'NO' dici['BA'] = 'NO' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # This is the textfield in which the recorded audio will be copied as text audio_test2 = models.TextField() # These are demographic variables name = models.CharField() age = models.PositiveIntegerField() genero = models.CharField() educacion = models.CharField( choices=['Enseignement élémentaire (école primaire/élémentaire)', 'Enseignement secondaire (collège/lycée)', 'Enseignement supérieur (université/grande école)'], widget=widgets.RadioSelect() ) zurdo = models.CharField( choices=['Droitier', 'Gaucher'], widget=widgets.RadioSelect() ) music = models.PositiveIntegerField() singing = models.PositiveIntegerField() sports = models.PositiveIntegerField() dancing = models.PositiveIntegerField() L1 =models.CharField() L1_aos=models.PositiveIntegerField() L1_sp=models.PositiveIntegerField(min=1, max=10) L1_com = models.PositiveIntegerField(min=1, max=10) L1_rd = models.PositiveIntegerField(min=1, max=10) L1_wr = models.PositiveIntegerField(min=1, max=10) L2 =models.CharField(blank=True) L2_aos=models.PositiveIntegerField(blank=True) L2_sp=models.PositiveIntegerField(blank=True,min=1, max=10) L2_com = models.PositiveIntegerField(blank=True,min=1, max=10) L2_rd = models.PositiveIntegerField(blank=True,min=1, max=10) L2_wr = models.PositiveIntegerField(blank=True,min=1, max=10) L3 = models.CharField(blank=True) L3_aos = models.PositiveIntegerField(blank=True) L3_sp = models.PositiveIntegerField(blank=True,min=1, max=10) L3_com = models.PositiveIntegerField(blank=True,min=1, max=10) L3_rd = models.PositiveIntegerField(blank=True,min=1, max=10) L3_wr = models.PositiveIntegerField(blank=True,min=1, max=10) L4 = models.CharField(blank=True) L4_aos = models.PositiveIntegerField(blank=True) L4_sp = models.PositiveIntegerField(blank=True,min=1, max=10) L4_com = models.PositiveIntegerField(blank=True,min=1, max=10) L4_rd = models.PositiveIntegerField(blank=True,min=1, max=10) L4_wr = models.PositiveIntegerField(blank=True,min=1, max=10) L5 = models.CharField(blank=True) L5_aos = models.PositiveIntegerField(blank=True) L5_sp = models.PositiveIntegerField(blank=True,min=1, max=10) L5_com = models.PositiveIntegerField(blank=True,min=1, max=10) L5_rd = models.PositiveIntegerField(blank=True,min=1, max=10) L5_wr = models.PositiveIntegerField(blank=True,min=1, max=10) L6 = models.CharField(blank=True) L6_aos = models.PositiveIntegerField(blank=True) L6_sp = models.PositiveIntegerField(blank=True,min=1, max=10) L6_com = models.PositiveIntegerField(blank=True,min=1, max=10) L6_rd = models.PositiveIntegerField(blank=True,min=1, max=10) L6_wr = models.PositiveIntegerField(blank=True,min=1, max=10) # variable containing the selection value for the test selection= models.CharField( choices=[], widget=widgets.RadioSelect ) # This is run before anything happens and it creates the test trials in a random manner def inicializar(self): self.participant.vars['mapping'] = Constants.dici self.participant.vars['q1'] = random.sample(Constants.q_run1,len(Constants.q_run1)) self.participant.vars['q2'] = random.sample(Constants.q_run2, len(Constants.q_run2)) def get_round(self): return self.round_number def get_name(self): return self.name def get_t1q1(self): w = self.participant.vars['q1'][0] return w def get_t1q2(self): w = self.participant.vars['q1'][1] return w def get_t1q3(self): w = self.participant.vars['q1'][2] return w def get_t1q4(self): w = self.participant.vars['q1'][3] return w def get_t2q1(self): w = self.participant.vars['q2'][0] return w def get_t2q2(self): w = self.participant.vars['q2'][1] return w def get_t2q3(self): w = self.participant.vars['q2'][2] return w def get_t2q4(self): w = self.participant.vars['q2'][3] return w