Projet

Général

Profil

Development #46790

éviter de crasher quand un fichier n'a plus son contenu dans uploads/

Ajouté par Thomas Noël il y a plus de 3 ans.

Statut:
Nouveau
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
18 septembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Non
Planning:
Non

Description

Si par malchance ou erreur un fichier uploads/xxx a été effacé, la vue JSON du fichier explose :

Exception

  type = '<class 'FileNotFoundError'>', value = '[Errno 2] No such file or directory: '/var/lib/wcs/xxxx/uploads/ed4d7c5dca66fb771eaed034b0aaaf7daf0af64fbe98e4cd69ffa10cfb60d5ef''

Trace (appels les plus récents en premier)

  File "/usr/lib/python3/dist-packages/wcs/qommon/upload_storage.py", line 74, in get_content
    72         if hasattr(self, 'qfilename'):
    73             filename = os.path.join(get_publisher().app_dir, 'uploads', self.qfilename)
>   74             return open(filename, 'rb').read()
    75         return None
    76 

  locals: 
     filename = '/var/lib/wcs/xxxx/uploads/ed4d7c5dca66fb771eaed034b0aaaf7daf0af64fbe98e4cd69ffa10cfb60d5ef'
     self = <PicklableUpload at 7f8a02af7128: piece d'identité.pdf>

  File "/usr/lib/python3/dist-packages/wcs/qommon/upload_storage.py", line 146, in get_json_value
   144         }
   145         if include_file_content:
>  146             value['content'] = force_text(base64.b64encode(upload.get_content()))
   147         return value
   148 

  locals: 
     include_file_content = True
     self = <wcs.qommon.upload_storage.UploadStorage object at 0x7f8a02af8c50>
     upload = <PicklableUpload at 7f8a02af7128: piece d'identité.pdf>
     value = {'content_type': 'application/pdf', 'filename': 'piece d_identité.pdf'}

  File "/usr/lib/python3/dist-packages/wcs/qommon/upload_storage.py", line 85, in get_json_value
    83     def get_json_value(self, include_file_content=True):
    84         return get_storage_object(getattr(self, 'storage', None)).get_json_value(
>   85                 self, include_file_content=include_file_content)
    86 
    87     def can_thumbnail(self):

On pourrait tenter ici que le get_json_value renvoie un None, comme si le fichier n'existait pas.

Formats disponibles : Atom PDF