#1 by js8773420
Hi everyone,
I am trying to conditionally display a message on a page only if a variable in my code cumulA is >= 1. I am relatively new to oTree so could be missing something obvious, but does anyone know how I can do it?
This is the code I have been trying to use in the html page:
{{ if player.cumulA >= 1 }}
<p>A</p>
{{ endif }}
And this is the part of my code where cumulA is referenced:
class Nudge(Page):
def is_displayed(player):
return player.participant.nudge == 1
def vars_for_template(player):
current_t = player.round_number
max_t = C.NUM_ROUNDS
# get the affectation of the player:
actifs = (player.actifs).split(",")
idxs_prix = []
for i in range(1, (current_t + 1) + C.history):
idxs_prix.append(i)
prices_to_show = get_prices(player)
# in order to compute the positions in the portfolio:
qtes_pfeuille = []
cumulA = sum([p.quantityA * p.decisionA for p in player.in_all_rounds()])
cumulB = sum([p.quantityB * p.decisionB for p in player.in_all_rounds()])
cumulC = sum([p.quantityC * p.decisionC for p in player.in_all_rounds()])
cumulD = sum([p.quantityD * p.decisionD for p in player.in_all_rounds()])
cumulE = sum([p.quantityE * p.decisionE for p in player.in_all_rounds()])
cumulF = sum([p.quantityF * p.decisionF for p in player.in_all_rounds()])
qtes_pfeuille = [cumulA, cumulB, cumulC, cumulD, cumulE, cumulF]
When I try to run the code, the page comes back with an error saying "Error evaluating the condition in the 'if' tag" but runs fine if I remove the conditional display code from the html.
#2 by js8773420 (edited )
Sorry everyone, I have figured out how to do this with a bit of trial and error + another look at my code so all good. Instead I am trying to conditionally display a message based on if at least two of the cumulX variables are greater than 0 (e.g. cumulA > 0 and cumulB > 0). I have tried to do it via introducing a new set of variables as heldX as you can see in the code below and just crudely use the int function to see if each cumulX variable is > 0 but I am running into the same issue with my page saying: "Cannot resolve the variable 'held_stocks' (line 141, in "held_stocks.0")"
I added this into the def vars_for_template(player) section:
held_stocks = []
heldA = int(cumulA / 90000000)
heldB = int(cumulB / 90000000)
heldC = int(cumulC / 90000000)
heldD = int(cumulD / 90000000)
heldE = int(cumulE / 90000000)
heldF = int(cumulF / 90000000)
held_stocks = [heldA, heldB, heldC, heldD, heldE, heldF]
And this to the html page:
<p> {{ held_stocks.0 }} </p>
This is what worked for my previous issue so I am unsure why it is not working here. Is it maybe because of the crude way I used to try to see if cumulX > 0 ? If anyone is able to help I think I am truely stuck this time so I would greatly appreciate it.
Thanks,
JS
#3 by js8773420
Please ignore all the above. Has now been sorted. Sorry again everyone. If anyone knows how to delete a thread, please let me know.