Je suis actuellement en train de développer la ZEP-13 (qui avance assez bien et est prévue pour la version 20) et je dois ajouter le support des votes sur les billets (les billets d'un membre constituent sa tribune libre). Sauf que je me suis rendu compte que c'était un peu la merde compliqué au niveau des votes : les votes sont nécessairement liés aux commentaires (zds.utils.models.Comment
: messages sur le forum ou commentaires sur un contenu).
1 2 3 4 5 6 7 8 9 10 11 | class CommentVote(models.Model): """Set of comment votes.""" class Meta: verbose_name = 'Vote' verbose_name_plural = 'Votes' unique_together = ('user', 'comment') comment = models.ForeignKey(Comment, db_index=True) user = models.ForeignKey(User, db_index=True) positive = models.BooleanField("Est un vote positif", default=True) |
En l'état je ne peux pas simplement ajouter des votes aux TL. Je vois 3 solutions.
Solution 1 : faire avec l'existant
C'est la solution qui me semble la plus sale. Ça voudrait dire faire pas mal de bidouille pour que tout fonctionne et le jour ou on veut ajouter un vote sur un autre type de données on sera face au même problème.
Solution 2 : recoder ce qui existe en plus propre
Ça serait déjà beaucoup mieux. On réutiliserai le code actuel et on le ferai évoluer pour avoir un résultat modulable (à la manière de la ZEP-24 avec les notifications).
Solution 3 : utiliser une solution de vote externe
J'ai trouvé ça https://github.com/Beeblio/django-vote qu'on pourrait utiliser (via l'app ou en s'inspirant grandement du code) qui nous permettrai de faire très simplement ce qu'on veut. Le projet est maintenu et semble assez propre.
Pour d'autres applications dans le même genre : https://www.djangopackages.com/grids/g/voting/
Les solutions 2 et 3 sont clairement celles que je préfère.
J'attends vos avis.