from otree.api import * import random doc = """ Anonymous Payment """ class C(BaseConstants): NAME_IN_URL = 'anon_pay' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): payments = models.LongStringField(initial='') email = models.StringField(initial='', label='Ihr PayPal-E-Mail-Addresse:') emergency_code = models.StringField(initial='') feedback = models.LongStringField(blank=True) # PAGES class PageWithAmount(Page): @staticmethod def vars_for_template(player: Player): vft = {'nicePayment': cu(player.participant.vars['payment']), 'emailEntered': player.email} player.email = '[REDACTED]' return vft class Details(PageWithAmount): form_fields = ['email'] form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): player.emergency_code = ''.join(random.choices(list('ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'), k=8)) player.subsession.get_players()[0].payments += "email: " + player.email + ", payment: " + str( player.participant.vars["payment"]) + " | " class EndFeedback(PageWithAmount): form_model = 'player' form_fields = ['feedback'] page_sequence = [Details, EndFeedback]