Modèle de grist pour un système de vote

Lien : Ex - système de vote unique - Grist

Ex - système de vote unique.grist (180 Ko)

2025-07-03 10.57.38

Se placer en tant qu’éditeur·ice pour tester (le·la propriétaire peut ajouter autant de votes souhaités)

La colonne est éditable si :

  • L’user n’a jamais voté (ou a retiré son vote) et il veut ajouter un vote :
    user.Email not in rec.Users and newRec.Vote == (rec.Vote + 1)

  • L’user a déjà voté ( user.Email in rec.Users) et il veut enlever son vote (newRec.Vote == (rec.Vote - 1))

Formule :
user.Email in rec.Users and newRec.Vote == (rec.Vote - 1)

Et avec la formule suivante pour la colonne « Users » (qui est la liste des users ayant un vote sur la ligne) - même formule que précédemment sauf que s’il retire son vote, on le retire de la liste des users pour lui permettre de revoter.

history = PEEK($Users)
new_mail = $User

// Enlève l'user de la liste s'il enlève son vote
if new_mail and new_mail in history:
  history = ";".join(
    e.strip() for e in history.split(";")
    if e.strip() != new_mail)
  return history  
  
// Ajoute l'user dans la liste s'il ajoute son vote
if history and new_mail:
  return history + ";" + new_mail
else:
  return new_mail