from otree.api import * #import random #import string import csv import itertools doc = """ Your app description """ ########################################################################################################### ################################## MODELS ################################ ########################################################################################################### class Constants(BaseConstants): name_in_url = 'dot_spot_revelation' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): red_dotspot = models.IntegerField() ask_red = models.IntegerField() Melessa_ID = models.StringField() ########################################################################################################### ################################## PAGES ################################ ########################################################################################################### def set_red_dotspot(player): with open('dot_spot_revelation/static/data.csv', 'r') as df: data = csv.DictReader(df) for row in data: if player.Melessa_ID == str(row['ID']): player.red_dotspot = int(row['Red']) def set_ask(player): with open('dot_spot_revelation/static/data.csv', 'r') as df: data = csv.DictReader(df) for row in data: if player.Melessa_ID == str(row['ID']): player.ask_red = int(row['AskRed']) def get_id(player): player.Melessa_ID = player.participant.melessa_id ########################################################################################################### ################################## PAGES ################################ ########################################################################################################### class Part4(Page): @staticmethod def before_next_page(player, timeout_happened): return dict( Melessa_ID=get_id(player), ask_red=set_ask(player), red_dotspot=set_red_dotspot(player), ) class Instructions(Page): pass class RevelationRed(Page): @staticmethod def is_displayed(player: Player): return player.red_dotspot == 1 class RevelationBlue(Page): @staticmethod def is_displayed(player: Player): return player.red_dotspot == 0 # @staticmethod # def error_message(player, value): # if value["check_slider_dotspot"] == None: # return 'Please use the slider to make a decision.' page_sequence = [ Part4, #Instructions, #EstimationBlue, #EstimationRed, RevelationRed, RevelationBlue, ]