Skip to content
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

Premier jalon pour la classification par objectif des contenus #6354

Merged
merged 6 commits into from
Jul 19, 2022

Conversation

Arnaud-D
Copy link
Contributor

@Arnaud-D Arnaud-D commented Jul 15, 2022

Cette PR implémente les bases de la nouvelle classification des publications. J'ai appelé ça "classification par objectifs", vu qu'il n'y avait pas vraiment de nom jusqu'à présent. En lien avec le groupe de travail et le projet GitHub associé.

Au menu :

  • un modèle pour enregistrer les objectifs (c'est-à-dire les catégories) et un champ pour pouvoir les associer aux publications (en many-to-many) ;
  • une interface d'admin pour la gestion des objectifs (les créer, renommer, etc.) ;
  • une vue pour gérer la classification pour une publi seule (accessible au staff uniquement pour le moment, et on enregistre également l'action dans le journal des événements, le bouton est dans la section "Éditorialisation" de la barre latérale) ;
  • des tests de tout ça et ce qu'il faut pour aller avec (factory notamment) ;
  • et même des fixtures pour l'environnement de dév !

J'ai choisi de mettre le formulaire pour le staff seulement, avec la même permission que tout ce qui est édition de publications des tiers par le staff.

Niveau orga du code, j'ai choisi de mettre la vue et le formulaire dans un seul fichier goals.py, alors que les autres vues de formulaire sont séparées en forms d'un côté et views de l'autre. Je pense que mettre les deux au même endroit est plus facile niveau maintenance, vu qu'il n'est pas prévu que le formulaire soit réutilisé ailleurs dans le futur.

Sinon, ça a été l'occasion d'étendre le système de journal d'événements pour la première fois, et c'est plutôt facile à faire, donc bon point de côté-là.

Contrôle qualité

Avant toute chose, appliquer les migrations.

Pour l'administration des objectifs :

  • se loguer en tant qu'admin et aller dans l'interface d'administration ;
  • créer des catégories, en supprimer, etc ;
  • regarder qu'elles sont bien créée et qu'elles apparaissent dans la modale d'éditorialisation.1

Pour la gestion des objectifs sur un contenu :

  • se loguer en tant que staff ;
  • aller sur un contenu et modifier les objectifs du contenu ;
  • vérifier que c'est bien pris en compte en allant voir les valeurs initiales dans la modale (videz bien votre cache pour être sûr) ;
  • vérifier aussi que le journal d'événement a bien un enregistrement pour l'action.

Petites vérifications de permission :

  • vérifier qu'on n'est bien redirigé vers le login quand on n'est pas logué et qu'on essaie d'accéder à la vue en question (voir le diff pour la nouvelle route) ;
  • vérifier que le formulaire n'est pas affiché pour les non-staff et qu'on se prend une 403 si on essaie d'utiliser le formulaire malgré tout ;
  • vérifier qu'on a bien une erreur quand on trifouille le formulaire pour avoir des valeurs invalides.

Après cette PR

Ce premier jalon n'est pas très utile en soi et ne permet pas d'avancer outre mesure. Pour la suite, j'envisage une interface permettant l'édition en masse, ce qui facilitera le classement quand la fonctionnalité sera déployée en production.

@Arnaud-D Arnaud-D added the C-Back Concerne le back-end Django label Jul 15, 2022
@coveralls
Copy link

coveralls commented Jul 15, 2022

Coverage Status

Coverage increased (+0.05%) to 88.141% when pulling 23d38e6 on Arnaud-D:nouvelle_classification_1 into 029e2e9 on zestedesavoir:dev.

Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quelques petites corrections à faire, mais beau boulot ! 👍

templates/tutorialv2/includes/editorialization.part.html Outdated Show resolved Hide resolved
zds/tutorialv2/models/events.py Show resolved Hide resolved
zds/tutorialv2/views/goals.py Show resolved Hide resolved
@Arnaud-D
Copy link
Contributor Author

Voilà, j'ai pris en compte deux remarques et la troisième j'argumente sur pourquoi je préfère ne pas faire comme ça.

Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tout fonctionne bien, mais le bouton Modifier les objectifs et la modale associée sont visibles lorsque je suis connecté avec un utilisateur et que je vais sur les contenus rédigés par cet utilisateur.

@Arnaud-D
Copy link
Contributor Author

Ah oui, j'avais complètement oublié ça. C'est corrigé.

Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA OK ✔️

@philippemilink philippemilink enabled auto-merge (squash) July 19, 2022 17:41
@philippemilink philippemilink merged commit 2bee051 into zestedesavoir:dev Jul 19, 2022
@Arnaud-D Arnaud-D deleted the nouvelle_classification_1 branch July 19, 2022 20:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Back Concerne le back-end Django
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants