#1
by
Arsil
Hi Everyone,
I am working on an app with two apps where App1 is real effort task and App two is election game. In the template of Election game before voting, I define role of variables as candidate 1, candidate 2, and voter (3 person group) by using id_in_group as follows:
def role2(player):
if player.id_in_group == 3:
return 'voter'
elif player.id_in_group == 2:
return 'candidate2'
else:
return 'candidate1'
I have checked that this role identification worked. However, when I called the variable of score in the previous app it gave me an error. I used the following code.
<p>
{{if group.get_player_by_id(1).participant.correctanswers_T1 > group.get_player_by_id(2).participant.correctanswers_T1 }}
Candidate 1 has a higher score than Candidate 2 in Task 1.
{{elif get_player_by_id(1).participant.correctanswers_T1 < get_player_by_id(2).participant.correctanswers_T1}}
Candidate 1 has a lower score than Candidate 2 in Task 1.
{{else }}
Candidate 1 and Candidate 2 scores tied in Task 1.
</p>
and
I have also tried to use get_player_by_id(1).participant.correctanswers_T1 but it also did not work. Any help is much appreciated.
#2
by
Chris_oTree
You can't put complex expressions like that in templates. Instead you should do it in vars_for_template:
def vars_for_template(player):
p1_correct_T1 = group.get_player_by_id(1).participant.correctanswers_T1
# etc...
return dict(p1_correct_T1=p1_correct_T1)
Then in the template:
{{ if p1_correct_T1 > p2_correct_T1 }}
...
etc.
#3
by
Arsil
Hi Chris, Thank so much for the detailed reply. I have tried this code and it is working fine now as I expected. Regards, Arslan