Bug #16186
Destruction d'un objet Document : Document has no attribute document_file
0%
Description
C'est peut être quelque chose que j'ai raté mais en effet quand j'essaye de détruire un Document j'ai cette erreur.
def delete(self): '''Delete file on model delete''' self.document_file.delete() super(Document, self).delete()
Et il n'y pas de document_file dans les champs du modèle Document en effet.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 7 ans
[...] quand j'essaye de détruire un Document j'ai cette erreur
Quand/comment ? je ne regarde pas le code mais je viens d'utiliser l'UI et j'ai pu supprimer un document sans erreur.
Mis à jour par Serghei Mihai il y a presque 7 ans
Jean-Baptiste Jaillet a écrit :
C'est peut être quelque chose que j'ai raté mais en effet quand j'essaye de détruire un Document j'ai cette erreur.
[...]
Là, tu pointes le code d'une fonction et non une erreur/trace.
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
Shell sur mon fargo local :
In [1]: from fargo.fargo.models import Document In [2]: test = Document.objects.get(pk='42423b3cdcf3fa1a62b22078d65a454d1ebf35dbcb2a290bd3207c805c9ec0dc') In [3]: test Out[3]: <Document: Document object> In [4]: test.delete()
Retour :
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-4-a18631b22b85> in <module>() ----> 1 test.delete() /home/jb/PycharmProjects/Publik/fargo/fargo/fargo/models.pyc in delete(self) 174 def delete(self): 175 '''Delete file on model delete''' --> 176 self.document_file.delete() 177 super(Document, self).delete() 178 AttributeError: 'Document' object has no attribute 'document_file'
Mis à jour par Serghei Mihai il y a presque 7 ans
En même temps (copyright d'un candidat à la présidentielle) le modèle Document n'a pas d'attribut document_file
.
A croire la vue fargo/fargo/api_views.py
.
Le contenu du fichier est placé dans l'attribut content
du modèle.
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
Oui d'après le modèle Document même :
content = models.FileField( upload_to='uploads/', max_length=300, verbose_name=_('file'))
C'est pour ça que je demande si ce n'est pas plutôt :
self.content.delete()
Mis à jour par Frédéric Péters il y a presque 7 ans
À un moment faut arrêter de poser des questions et faire un patch.
Mis à jour par Serghei Mihai il y a presque 7 ans
Jean-Baptiste Jaillet a écrit :
C'est pour ça que je demande si ce n'est pas plutôt :
[...]
Bah si, vu que le modèle n'a pas l'attribut document_file
.
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
- Lié à Development #16192: ajouter dépôt de document en oauth2 ajouté
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
- Fichier 0001-document-correct-method-delete-16186.patch 0001-document-correct-method-delete-16186.patch ajouté
- Statut changé de Nouveau à En cours
- Assigné à mis à Jean-Baptiste Jaillet
- Patch proposed changé de Non à Oui
Je me demande juste s'il ne faut pas soit supprimer les autres instances Document qui dépendent du fichier ou si on doit juste vérifier qu'il n'y a pas d'autres instances qui utilisent le fichier avant de le supprimer. (?)
Mis à jour par Frédéric Péters il y a presque 7 ans
Je me demande juste s'il ne faut pas soit supprimer les autres instances Document qui dépendent du fichier ou si on doit juste vérifier qu'il n'y a pas d'autres instances qui utilisent le fichier avant de le supprimer. (?)
Ajoute donc un test qui crée un deuxième objet Document et qui vérifie après suppression du premier que le contenu du second reste bien présent.
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
Hum je viens de percuter qu'en fait justement si deux Document sont créés à partir du même fichier, alors on ne créer pas de nouvelle instance, mais on renvoie bien la même.
Donc on a toujours qu'une seule instance de Document, mais potentiellement plusieurs UserDocument qui pointent sur le même Document.
Donc en l'état pour ce ticket, le patch me semble bon (en dehors de potentielles remarques bien évidemment).
Mis à jour par Benjamin Dauvergne il y a presque 7 ans
Je ne sais pas si un signal était vraiment nécessaire, mais ack.
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
- Statut changé de En cours à Résolu (à déployer)
Pushed
Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans
- Statut changé de Résolu (à déployer) à Fermé
document: correct method delete (#16186)