-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Création d'un historique de sanctions pour le staff #4177
Conversation
Dans le profil d'un membre il existe(ait?) déjà une liste visible uniquement par le staff qui sert de "note de karma" pour le membre. Par exemple les staffeux peuvent y ajouter des notes sur le comportement du membre (s'il fait des multis, à tendance à insulter etc). Pourquoi ne pas fusionner ton idée avec cette liste qui éviterait de créer de nouvelles pages et ainsi rendrait plus rapide la lecture d'un profil ? |
Existe, je confirme. ;) J'en avais parlé un peu avec @artragis sur IRC qui avait en effet évoqué l'existence du système de karma, mais qui avait trouvé toutefois cette liste utile (les informations ne sont en soi pas les mêmes que celles du karma). Cependant, je trouve aussi que fusionner ces deux listes pourrait être pratique (on voit direct tout ce qui s'est passé sans devoir switcher entre les deux pages). À voir avec les besoins du staff. Il reste à voir comment on fait ça techniquement. L'objet Par contre, je peux déjà mettre cet historique en bas de la page de profil plutôt que dans une page séparée, ça simplifiera sans doute les choses. |
Rapport de QA: ok jusqu'ici. Par contre, je suis d'accord avec toi pour mettre le karma sur la même page (sous forme de tableau aussi). Et du coup, je remonterai le bouton pour le mettre en dessous de "promouvoir", qu'il soit facile d'accès :) |
Du coup, on partirait sur une unique page nommée |
zds/member/views.py
Outdated
|
||
user = get_object_or_404(User, pk=user_pk) | ||
|
||
sanctions = Ban.objects.filter(user=user).order_by('-pubdate').select_related('moderator') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
pour une raison qui m'échappe, c'est plus performant prefetch_related()
(voir @vhf )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Je suis un peu étonné pour le coup vu que prefetch_related
fait une seconde requête, tandis que select_related
fait une jointure SQL afin de tout faire en une seule et unique requête. :/
Je trouve que prefetch_related
est plus adapté pour récupérer une liste d'objets rattachés à une objet. Exemple : récupérer la liste des alertes pour chaque commentaire (doc).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ce que je croyais aussi, jusqu'à ce que @vhf démontre le contraire : #4096 (comment)
follow=False | ||
) | ||
|
||
self.assertContains(result, 'Test de LS') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tu peux même aller plus loin et utiliser result.context['sanctions']
pour vérifier ce que la liste de sanctions contient effectivement.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bonne idée :)
Comme tu veux, moi j'aimais bien "historique" aussi :)
Pourquoi pas ? (mais alors, le nom "modération" a effectivement plus de sens) |
Je vais pas insister ou être lourd avec ça, mais je préférerais qu'on affiche cet historique directement dans la liste des "notes" de karma. Ça me semble facile mais je me trompe peut-être. En gros sur la page profile, on a une liste des notes de karma. On récupère ces notes. On récupère l'historique dont il est question ici. On merge les deux listes d'objets (pas grave que ce soient pas les mêmes objets), on sort d'après la date, on passe au template qui l'affiche. Faisable @GCodeur ? Qu'en penses-tu ? |
Je pense que oui. J'avais pensé à ça, mais je m'étais dit que ce serait assez moche niveau code, mais c'est pas forcément le cas. Juste quelques questions :
Donc on passe à un objet
Pour être franc, je n'avais aucune idée de comment faire ça, mais je viens de chercher et ai trouvé ça. Les deux objets ayant un champ date appelé
Tu verrais ça sous la forme d'une liste ou d'un tableau (les deux me paraissent possibles) ? Et pour identifier si l'objet est un |
Yep. En gros par défaut un QuerySet est lazy. C'est super parce que ça permet d'éviter que la requête soit effectivement faite jusqu'au dernier moment, quand Django est certain qu'on a besoin de faire la requête. Un moyen de forcer l'évaluation d'un QuerySet, c'est de faire Ici, ça n'a pas d'impact négatif, on sait qu'on a besoin de ces données, forcer l'évaluation du QuerySet ne pose pas de problème. (Faut juste faire gaffe à ne faire ça que si la personne regardant la page a bien le droit de voir ces données, comme ça y'a pas d'impact sur les autres visiteurs.)
👍
Plutôt tableau à mon avis.
J'ai pas d'avis, fais ce que tu trouves le mieux. Si ça me semble pas bien et que je vois un moyen simple de rendre ça plus propre, j'hésiterai pas à te le dire. Mais là, sans implémentation, difficile de te conseiller. :) |
Merci @vhf d'avoir exprimé ce que je ne savais pas comment dire ! |
Cette pull request crée un historique de sanctions pour le staff qui permet de voir les actions qui ont été faites et à quelle date. Elle utilise le modèle
Ban
qui a toujours été utilisé pour archiver les sanctions (en effet, il n'est pas utilisé pour vérifier qu'un membre a le droit de se connecter/de poster), mais qui n'était jamais affiché.QA
Historique
dans le sous-menuSanctions
et vérifier que les actions effectuées ont bien été répertoriées ;zds.member.tests.tests_views.MemberTests
passent toujours.