from django.forms import CheckboxSelectMultiple, RadioSelect from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) from otree_tools.models.fields import ListField, MultipleChoiceModelField from django import forms author = 'Monika Leszczynska' doc = """ Checking 'd' and 'b' letters """ class Constants(BaseConstants): name_in_url = 'zero_experiment' players_per_group = None task_timer = 80 num_rounds = 100 d_total = 60 b_total = 20 d_list = ['d'] * d_total b_list = ['b'] * b_total letters_list = d_list + b_list correct = 1 class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): import random label_list = Constants.letters_list.copy() random.shuffle(label_list) p.letters_list = label_list class Group(BaseGroup): pass class Player(BasePlayer): task_timer = models.IntegerField(initial=Constants.task_timer) letters_list = MultipleChoiceModelField() effort = MultipleChoiceModelField() d_crossed = models.IntegerField(initial=0) b_crossed = models.IntegerField(initial=0) total_correct = models.IntegerField(initial=0) correct = models.IntegerField(initial=0) is_correct = models.BooleanField(initial=False) payoff=models.IntegerField() def count_effort(self): self.d_crossed = self.effort.count('d') self.b_crossed = self.effort.count('b') def check_correctness(self): if self.effort.count('d') == Constants.d_total and self.effort.count('b') == 0: self.correct = Constants.correct self.is_correct = True else: self.correct = 0 self.is_correct = False