#1 by Hussein
Could someone tell me how I can save the userInput? I am frustrated and really need help because my deadline is in a few days. I would really appreciate if someone could help me. This is the relevant code: __init__.py import json from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'corporate_decision_making' PLAYERS_PER_GROUP = 50 NUM_ROUNDS = 1 payment_per_correct_answer = cu(0.1) class Subsession(BaseSubsession): def creating_session(self): group_size = int(self.session.num_participants / 3) group_matrix = self.get_group_matrix() for group in group_matrix: players = group.get_players() for p in players: p.group = group.id class Group(BaseGroup): def set_payoffs(self): for player in self.get_players(): player.payoff = C.payment_per_correct_answer class Player(BasePlayer): pass class Message(ExtraModel): group = models.Link(Group) sender = models.Link(Player) text = models.StringField() def to_dict(msg: Message): return dict(sender=msg.sender.id_in_group, text=msg.text) # PAGES class PT1(Page): def is_displayed(self): return self.id_in_group == 1 @staticmethod def js_vars(player: Player): return dict(my_id=player.id_in_group) @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group print('received', player.id_in_group, ':', data) if 'userInput' in data: user_input = data['userInput'] player.participant.vars['userInput'] = user_input return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} class DoRR(Page): pass page_sequence = [PT1, DoRR] The relevant Javascript snippet from PT1.html where I get the userInput: if (Number(userInput) === correctValue || Number(userInput) > correctValue || Number(userInput) < correctValue) { liveSend(userInput) conversationState = "getting_name"; txtInput.disabled = true; nextButton.removeAttribute("disabled"); return "Alright, I reported the value."; } And the DoRR.html where i want to display the received data i got from the livemethod in PT1: {{ block title }} DoRR {{ endblock }} {{ block content }} <p>This is your number: {{ player.user_input }}</p> {{ formfields }} {{ next_button }} {{ endblock }}
#2 by Daniel_Frey
Does your live-method work correctly and does the input get stored in player.participant.vars['userInput']? If yes, I think you just need to replace {{ player.user_input }} with {{ participant.vars.userInput }}