Projet

Général

Profil

Bug #60611

Donnée calculée associée à une source de données, prefill avec une liste de valeurs

Ajouté par Lauréline Guérin il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Solution proposée
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
13 janvier 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

par exemple: {{ cards|objects:"%s"|getlist:"id"|join:"," }}

Exception:
  type = '<class '_pickle.PicklingError'>', value = 'Can't pickle <class 'wcs.carddef._wcs_Items'>: it's not the same object as wcs.carddef._wcs_Items'

Stack trace (most recent call first):
  File "/home/lguerin/src/wcs/wcs/sql.py", line 2769, in store
  2767         sql_dict = {
  2768             'id': self.id,
> 2769             'session_data': bytearray(pickle.dumps(self.__dict__, protocol=2)),
  2770             # the other fields are stored to run optimized SELECT() against the
  2771             # table, they are ignored when loading the data.

Fichiers


Demandes liées

Lié à w.c.s. - Bug #66923: erreur pickle à la sauvegarde d'une session : Can't pickle <class 'wcs.carddef._wcs_Djs-Famille-Team13'>: it's not the same object as wcs.carddef._wcs_Djs-Famille-Team13Information nécessaire04 juillet 2022

Actions

Historique

#2

Mis à jour par Lauréline Guérin il y a plus de 2 ans

(pas trop convaincue par ce patch)

#6

Mis à jour par Thomas Noël il y a plus de 2 ans

Lauréline Guerin a écrit :

(pas trop convaincue par ce patch)

Non plus, mais dans un premier temps, pourquoi pas.

Ceci dit je ne comprends pas le test, il fait un "join" mais on recevrait quand même un wcs.variables.LazyList ? J'ai des doutes.

#8

Mis à jour par Lauréline Guérin il y a plus de 2 ans

Ceci dit je ne comprends pas le test, il fait un "join" mais on recevrait quand même un wcs.variables.LazyList ? J'ai des doutes.

Moi non plus je ne comprends pas bien pourquoi on a un LazyList à la fin, malgré le |join
(note: quand je regarde ce qu'on a dans session pour ce test, qui foire sur le store, je trouve ça: 'magictokens': {'p5eEO01egig-computed': {'1': <wcs.variables.LazyList object at 0x7efd9c50d8e0>}})

#10

Mis à jour par Thomas Noël il y a plus de 2 ans

Lauréline Guerin a écrit :

Ceci dit je ne comprends pas le test, il fait un "join" mais on recevrait quand même un wcs.variables.LazyList ? J'ai des doutes.

Moi non plus je ne comprends pas bien pourquoi on a un LazyList à la fin, malgré le |join
(note: quand je regarde ce qu'on a dans session pour ce test, qui foire sur le store, je trouve ça: 'magictokens': {'p5eEO01egig-computed': {'1': <wcs.variables.LazyList object at 0x7efd9c50d8e0>}})

Ok je pense qu'il y a un problème plus grave quelque part. Et j'ai l'impression que ce str(value) risque de le cacher :/

#11

Mis à jour par Lauréline Guérin il y a plus de 2 ans

pour info:
formdef.fields[0].value_template = '{{ cards|objects:"%s"|getlist:"id" }}' % carddef.url_name dans le test et sans le patch value = str(value), on a bien une LoggedError comme attendu

avec formdef.fields[0].value_template = '{{ cards|objects:"%s"|getlist:"id"|join:"," }}' % carddef.url_name dans le test et sans le patch value = str(value):

Traceback (most recent call last):
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/django/utils/deprecation.py", line 96, in __call__
    response = self.process_response(request, response)
  File "/home/lguerin/src/wcs/wcs/middleware.py", line 99, in process_response
    pub.session_manager.finish_successful_request()
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/quixote/session.py", line 392, in finish_successful_request
    self.maintain_session(session)
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/quixote/session.py", line 299, in maintain_session
    self[session.id] = session
  File "/home/lguerin/src/wcs/wcs/qommon/sessions.py", line 398, in __setitem__
    session.store()
  File "/home/lguerin/src/wcs/wcs/qommon/sessions.py", line 159, in store
    return super().store(*args, **kwargs)
  File "/home/lguerin/src/wcs/wcs/qommon/storage.py", line 735, in store
    s = self.storage_dumps(self)
  File "/home/lguerin/src/wcs/wcs/qommon/storage.py", line 703, in storage_dumps
    return pickle.dumps(object, protocol=2)
_pickle.PicklingError: Can't pickle <class 'wcs.carddef._wcs_Items'>: it's not the same object as wcs.carddef._wcs_Items
en mode pickle et
Traceback (most recent call last):
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/django/utils/deprecation.py", line 96, in __call__
    response = self.process_response(request, response)
  File "/home/lguerin/src/wcs/wcs/middleware.py", line 99, in process_response
    pub.session_manager.finish_successful_request()
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/quixote/session.py", line 392, in finish_successful_request
    self.maintain_session(session)
  File "/home/lguerin/envs/publik-env-py3/lib/python3.9/site-packages/quixote/session.py", line 299, in maintain_session
    self[session.id] = session
  File "/home/lguerin/src/wcs/wcs/qommon/sessions.py", line 398, in __setitem__
    session.store()
  File "/home/lguerin/src/wcs/wcs/sql.py", line 509, in f
    return func(*args, **kwargs)
  File "/home/lguerin/src/wcs/wcs/sql.py", line 2768, in store
    'session_data': bytearray(pickle.dumps(self.__dict__, protocol=2)),
_pickle.PicklingError: Can't pickle <class 'wcs.carddef._wcs_Items'>: it's not the same object as wcs.carddef._wcs_Items
en mode sql

et on a un wcs.variables.LazyList dans magictokens

#12

Mis à jour par Lauréline Guérin il y a presque 2 ans

  • Lié à Bug #66923: erreur pickle à la sauvegarde d'une session : Can't pickle <class 'wcs.carddef._wcs_Djs-Famille-Team13'>: it's not the same object as wcs.carddef._wcs_Djs-Famille-Team13 ajouté

Formats disponibles : Atom PDF