Closed ChantyTaguan closed 9 years ago
Il y a beaucoup de changements, les diffs git sont un peu pénible à comprendre. Tu saurais nous expliquer les grands changements ?
Je vois que tu as créé des sous classes et que tu les utilises à différents endroits pour faire les différentes souscriptions mais je vois aussi beaucoup de conditions qui n'existait pas avant et des méthodes statiques (d'ailleurs, qu'apporte en plus l'annotation ?).
Alors, on a donc la classe Subscription, qui contient tous les attributs d'un abonnement, qui sont les même qu'avant, à l'exception de type, qui disaparait, et is_active qui est devenu active (au moment où j'ai renommé is_active, j'avais une bonne raison, mais au final, cette raison ne tient plus, peut-être qu'on devrait remettre is_active du coup...).
En plus des attributs, Subscription possèdent quelques méthodes qui permettent d'activer et désactiver l'abonnement (complètement, ou juste l'envoi d'email)
On a ensuite une série de classe qui hérite de Subscription, et qui représentent les différents types d'abonnement possibles :
Ces classes possèdent toutes deux méthodes statiques. L'annotation @staticmethod permettant de ne pas avoir "self" dans les paramètres.
Ces classes possèdent en plus toutes la méthode send_notification qui utilise différent paramètres selon la sous-classe et qui envoie la notification au souscripteur de l'abonnement. L'implémentation de l'envoi d'email n'est pas encore faite, j'ai juste un début de code à ce propos dans AnswerSubscription.
Pour finir, la plupart définissent la méthode mark_notification_read(), qui comme sont nom l'indique, fait passer la notification de non-lue à lue. Les classes d'abonnement qui ne définissent pas cette méthode (y en a qu'une : NewTopicSubscription), c'est parce qu'elles peuvent avoir plusieurs notifications non-lues au même moment. Ce cas est traité avec le signal "topic_read" qui récupère directement les notifications concernées pour les mettre à "lues".
Enfin, j'ai ajouté trois attributs à la classe Notification, qui sont initialisées dans send_notification et différent selon le type d'abonnement :
Voilà, je pense que j'ai fait le tour :)
Issue #15