Ajouter un filtre supplémentaire pour l'affichage des rapports et restreindre les autorisations de supprimer un rapport
- Role : enseignant
- Page(s) / Url(s) : teacher/reports
La modification des filtres faite par #639 (closed) ne suffit pas. Il y a encore des affichages de rapports que les enseignants ne s'attendent pas forcément à voir dans leur onglet "Rapports". Et du coup les enseignants peuvent supprimer de façon abusive ces rapports (cf. les mails envoyés par Nadège Meunier le 15/12/21, les problèmes à l'initiative de #639 (closed) et le ticket fait dernièrement par Claire : #684).
Deux correctifs peuvent être apportés à ce problème :
-
rendre les filtres plus restrictifs par défaut. En haut de l'onglet Rapports mettre 3 filtres au lieu des 2 actuels : - Filtre de classe [select sur mes classes]
- Filtre de mission [select sur mes missions]
- Filtre de mises en équipe [mes classes | toutes classes]
Par défaut le troisième filtre prend la valeur "faites dans mes classes" Ceci modifie la requête SQL de sélection des rapports qui se simplifie en :
SELECT report.id_report FROM report
JOIN team_config tc USING(id_team_config)
JOIN link_class_teacher lct ON (lct.id_class = tc.id_class AND lct.id_teacher = ?)
WHERE report.status NOT IN ("test","tuto") AND delete_time IS NULL
AND tc.id_class = ?
AND tc.id_mission = ?
Les deux dernières lignes de cette requête correspondent aux filtres de classe et de mission
-
restreindre les autorisations de supprimer un rapport aux seuls rapports qui sont liés à une mise en équipe liée à une classe de l'enseignant. Ceci signifie qu'un enseignant ne peux supprimer que les rapports suivants :
SELECT report.id_report FROM report
JOIN team_config tc USING(id_team_config)
JOIN link_class_teacher lct ON (lct.id_class = tc.id_class AND lct.id_teacher = ?)
WHERE report.status NOT IN ("test","tuto") AND delete_time IS NULL
Faut il créer la requête inverse ?
Edited by Cedric d'Ham