Projet

Général

Profil

Bug #16186

Destruction d'un objet Document : Document has no attribute document_file

Ajouté par Jean-Baptiste Jaillet il y a presque 7 ans. Mis à jour il y a presque 7 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jean-Baptiste Jaillet
Version cible:
-
Début:
05 mai 2017
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Fargo - Development #16192: ajouter dépôt de document en oauth2Fermé05 mai 2017

Actions

Révisions associées

Révision fd1fefe0 (diff)
Ajouté par Jean-Baptiste Jaillet il y a presque 7 ans

document: correct method delete (#16186)

Historique

#1

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.

#2

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.

#3

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'

#4

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.

#5

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()

#6

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.

#7

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.

#8

Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans

#9

Mis à jour par Jean-Baptiste Jaillet 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. (?)

#10

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.

#11

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).

#12

Mis à jour par Benjamin Dauvergne il y a presque 7 ans

Je ne sais pas si un signal était vraiment nécessaire, mais ack.

#13

Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans

  • Statut changé de En cours à Résolu (à déployer)

Pushed

#14

Mis à jour par Jean-Baptiste Jaillet il y a presque 7 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF