Anomalie #195
Objets non supprimés du LDAP
Description
La méthode delete() des modèles Django n'est pas appelée dans tous les cas, notamment en cas de suppression "bulk" (par lots) :
https://docs.djangoproject.com/en/1.6/topics/db/queries/#topics-db-queries-delete
Si on supprime plusieurs objets d'un coup (par exemple via l'admin), ceux-ci ne sont donc pas supprimés du LDAP.
Comment reproduire :
- Créer un objet VPNSubscription dans l'admin
- Dans la liste des VPNSubscription, cocher l'objet nouvellement créé et choisir "supprimer les vpn subscriptions sélectionnés"
- Confirmer la suppression
- Observer que l'objet est toujours dans le LDAP
D'après la doc, il faut itérer sur les QuerySet pour appeler delete() sur chaque objet. Je ne vois pas bien comment faire ça dans le cas général, notamment pour l'admin.
Updated by Baptiste Jonglez over 9 years ago
On devrait pouvoir utiliser des signaux :
« The delete() method does a bulk delete and does not call any delete() methods on your models. It does, however, emit the pre_delete and post_delete signals for all deleted objects (including cascaded deletions). »
Source : https://docs.djangoproject.com/en/1.6/ref/models/querysets/#django.db.models.query.QuerySet.delete
Updated by Baptiste Jonglez over 9 years ago
Autre solution par Capslock : écrire une action de suppression custom pour l'admin.
Référence : https://docs.djangoproject.com/en/1.6/ref/contrib/admin/actions/
Updated by Hugo Lefeuvre about 9 years ago
- Status changed from Nouveau to Résolu
- Assignee changed from Fabien Michel to Hugo Lefeuvre
- % Done changed from 0 to 100
Le problème est résolu pour les classes VPNConfiguration
et Member
. Les autres classes n'interagissent pas de la même manière avec le LDAP et le problème semble donc ne pas se poser.