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

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
