Projet

Général

Profil

Bug #11058

to_json() ne doit pas tracer pour l'exception PermissionDenied, DoesNotExist ou Http404

Ajouté par Benjamin Dauvergne il y a presque 8 ans. Mis à jour il y a environ 7 ans.

Statut:
Fermé
Priorité:
Normal
Version cible:
-
Début:
26 mai 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

  • PermissionDenied: Il faut renvoyer un 403 (ça je pense que c'est déjà le cas), logger un warning et c'est tout.
  • DoesNotExist: renvoyer 404, logger en warning 'object not found' + la classe du modèle (je ne sais pas si on a d'autres détails dans l'exception à part ça)
  • Http404: juste renvoyer 404, on log rien (si il y a un raise Http404 c'est que c'est prévu)

Fichiers

Révisions associées

Révision 3c80c165 (diff)
Ajouté par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

jsonresponse: don't log exceptions for Http404, PermissionDenied and ObjectDoesnotExist (#11058)

Historique

#1

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

  • Description mis à jour (diff)
#2

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

#3

Mis à jour par Frédéric Péters il y a presque 8 ans

emacs a retiré un espace de fin de ligne qui dans mon souvenir est important.

#5

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

- logger.warning('object not found: %r', e.__class__, extra=extras)
+ logger.warning('object not found: %s', e, extra=extras)

'%r' % e.__class__ ça va juste donner <type 'DoesNotExist'>, '%s' % e ça devrait donner <Model> matching query does not exist..

#6

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

Pour le reste ack.

#7

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

Benjamin Dauvergne a écrit :

'%r' % e.__class__ ça va juste donner <type 'DoesNotExist'>, '%s' % e ça devrait donner <Model> matching query does not exist..

Normalement toutes les vues qu'on fait sont des CBV, basées sur GenericDetailView par exemple, qui pour retrouvent un objet font appel à get_object_or_404. En cas d'object non-trouvé c'est une exception Http404 et non <model>.DoesNotExist qui est levée.

Les endroits ou on raise explicitement ObjectDoesNotExist sont les connecteurs agoraplus et fake_family, et ceci non sur la récupration d'un objet de la base.

Donc dans les logs on obtiendrait plutôt des messages du style:

adult "13366" not found in a family

ou
'unknown login'

#8

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 3c80c165afb6fdbbdc43a8d5ac7748d9249a4326
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Thu May 26 13:55:44 2016 +0200

    jsonresponse: don't log exceptions for Http404, PermissionDenied and ObjectDoesnotExist (#11058)
#9

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

C'est dommage d'avoir détourné ObjectDoesNotExist, Http404 aurait suffi, mais ok.

#10

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

Celui ne va pas être pris en compte par ce patch et pourtant il est chiant aussi:

Error occurred while processing request¶
Traceback (most recent call last):¶
  File "/usr/lib/python2.7/dist-packages/passerelle/utils/jsonresponse.py", line 349, in api¶
    resp = f(*args, **kwargs)¶
  File "/usr/lib/python2.7/dist-packages/passerelle/contrib/iparapheur/views.py", line 76, in get¶
    return self.get_data(request, *args, **kwargs)¶
  File "/usr/lib/python2.7/dist-packages/passerelle/contrib/iparapheur/views.py", line 138, in get_data¶
    return self.get_object().get_file_status(kwargs['file_id'])¶
  File "/usr/lib/python2.7/dist-packages/passerelle/contrib/iparapheur/models.py", line 123, in get_file_status¶
    raise FileError(resp.MessageRetour.message)¶
FileError: Le dossierID '37fb2d75-36fa-4bd3-8701-0cd533ecafba' est inconnu dans le Parapheur.¶
¶
Request repr(): unavailable¶

On pourrait remplacer le FileError par un Http404 ? Si oui j'ouvre un autre ticket.

#11

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

Je suis pour

#12

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a presque 8 ans

Voilà, c'est fait: #11074

#13

Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 7 ans

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

Formats disponibles : Atom PDF