from otree.api import * c = cu doc = 'Present the final results and payoffs' class C(BaseConstants): NAME_IN_URL = 'results' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 TREATMENTS = ('mmpl', 'pmpl') ENDOWMENT = 10 PRODUCTS = ('Bare', 'Cheetos', 'CheezitOriginal', 'ChipsAhoy', 'Coke', 'CokeZero', 'Doritos', 'Flipz', 'Goldfish', 'Haribo', 'HersheysMilkChocolate', 'IceBreakersPeppermint', 'KindCaramelAlmond', 'KindDarkChocolate', 'Lays', 'LotusBiscoff', 'MilanoDarkChocolate', 'MilanoMilkChocolate', 'MNM', 'Oreo', 'PockyChocolate', 'PockyStrawberry', 'PopTartsFrostedCookies', 'PopTartsFrostedSmores', 'Pringles', 'PringlesOnion', 'Skittles', 'Snickers', 'Sprite', 'TwixBar') PRODUCTS_DESCRIPTIONS = ('Bare Fugi & Reds Apple Chips (3.4 oz)', 'Cheetos Crunchy (8.5 oz)', 'Cheezit Original (12.4 oz)', 'Chips Ahoy Real Chocolate Chip Cookies Original (13 oz)', 'Coke (12 fl oz)', 'Coke Zero Sugar (12 fl oz)', 'Doritos Nacho Cheese (9.25 oz)', 'Flipz Milk Chocolate Covered Pretzels (7.5 oz)', 'Goldfish Cheddar (6.6 oz)', 'Haribo Gummi Candy (8 oz)', "Hershey's Milk Chocolate (1.55 oz)", 'Ice Breaker Ice Cubes Peppermint Flavored (3.24 oz, 40 pieces)', 'KIND Caramel Almond & Sea Salt (1.4 oz)', 'KIND Dark Chocolate Nuts & Sea Salt (1.4 oz)', "Lay's Classic (8 oz)", 'Lotus Biscoff Cookies (8.8 oz)', 'Milano Cookies Double Dark Chocolate (7.5 oz)', 'Milano Cookies Milk Chocolate (6 oz)', "M&M's Milk Chocolate (3.14 oz)", 'OREO Chocolate Sandwich Cookies (14.3 oz)', 'Pocky Chocolate Cream (2.47 oz)', 'Pocky Strawberry Cream (2.47 oz)', 'Pop-Tarts Frosted Cookies and Crème (13.5 oz, 8 Pop-Tarts)', "Pop-Tarts Frosted S'mores (13.5 oz, 8 Pop-Tarts)", 'Pringles Original (5.2 oz)', 'Pringles Sour Cream & Onion (5.5 oz)', 'Skittles Original (2.17 oz)', 'Snickers (1.86 oz)', 'Sprite (12 fl oz)', 'Twix (1.79 oz)') class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): gender = models.StringField(choices=[['Female', 'Female'], ['Male', 'Male'], ['Non-binary', 'Non-binary'], ['Prefer not to reveal', 'Prefer not to reveal']], label='Q. What is your gender?', widget=widgets.RadioSelect) age = models.IntegerField(label='Q. What is your age?', max=100, min=0) race = models.StringField(choices=[['African-American / Black', 'African-American / Black'], ['American Indian or Alaskan Native', 'American Indian or Alaskan Native'], ['Asian American / Asian', 'Asian American / Asian'], ['White', 'White'], ['Hispanic / Latino/a', 'Hispanic / Latino/a'], ['Native Hawaiian or Pacific Islander', 'Native Hawaiian or Pacific Islander'], ['Multi-racial', 'Multi-racial'], ['Prefer not to answer', 'Prefer not to answer']], label='Q. What is your race?', widget=widgets.RadioSelect) major = models.StringField(label='Q. What is your major?') class RandomProcedure(Page): form_model = 'player' class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): participant = player.participant return dict( product_description=C.PRODUCTS_DESCRIPTIONS[C.PRODUCTS.index(participant.mpl_product)], product_img=f'mpl/{participant.mpl_product}.jpg' ) class Questionnaire(Page): form_model = 'player' form_fields = ['gender', 'age', 'race', 'major'] class Final(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): participant = player.participant return dict( product_description=C.PRODUCTS_DESCRIPTIONS[C.PRODUCTS.index(participant.mpl_product)], product_img=f'mpl/{participant.mpl_product}.jpg' ) page_sequence = [RandomProcedure, Results, Questionnaire, Final]