Projet

Général

Profil

Bug #3390

crash export listing dans un after_job

Ajouté par Jérôme Schneider il y a presque 11 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Jérôme Schneider
Version cible:
-
Début:
29 juillet 2013
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Planning:

Description

Lorsqu'un gros export (xls, opendocument, ...) est demandé sur un gros listing ça passe dans un after_job. Dans backoffice.ptl un test introduit en janvier test si l'utilisateur courant à bien les droits de lecture sur les formulaires. Le soucis c'est que dans le cas d'un after_job on a pas la requête et on ne connait pas l'utilisateur.


Exception:
  type = '<type 'exceptions.AttributeError'>', value = ''NoneType' object has no attribute 'user''

Stack trace (most recent call first):
  File "/usr/lib/pymodules/python2.7/wcs/forms/backoffice.ptl", line 163, in get_listing_items
   161
   162         # XXX: this will 1) break the offset/count support, and 2) kill performance
>  163         items = [x for x in items if self.formdef.is_user_allowed_read(get_request().user, x)]
   164
   165         return (items, total_count)

[...]

  File "/usr/lib/pymodules/python2.7/wcs/qommon/scgi_server.py", line 38, in handle_connection
    36         # input, output and conn are closed, long running jobs could be done
    37         # here.
>   38         self.publisher.response.process_after_jobs()
    39         if self.number_of_connection_handled == self.connection_limit:
    40             raise SystemExit

  locals:
     self = <qommon.scgi_server.QommonHandler instance at 0x1c20c68>
     conn = <socket object, fd=-1, family=2, type=1, protocol=0>


Fichiers

001_fix_after_json_listing_exports.patch (3,59 ko) 001_fix_after_json_listing_exports.patch Jérôme Schneider, 30 juillet 2013 10:08

Historique

#1

Mis à jour par Thomas Noël il y a presque 11 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Jérôme Schneider

Benjamin « une solution serait d'ajouter un argument for_user=None à get_list_items() et s'en servir dans l'afterjobs au lieu de dépendre d'un argument implicite via get_request().user en remplaçant get_request().user par "for_user or get_request().user »

#2

Mis à jour par Jérôme Schneider il y a presque 11 ans

A patch à relire rapidement pour que je puisse le pousser.

#3

Mis à jour par Jérôme Schneider il y a presque 11 ans

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

Mis à jour par Frédéric Péters il y a plus de 10 ans

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

Formats disponibles : Atom PDF