Bug #60611
Donnée calculée associée à une source de données, prefill avec une liste de valeurs
0%
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
Historique
Mis à jour par Lauréline Guérin il y a plus de 2 ans
- Fichier 0001-fields-fix-computed-value-with-lazylist-60600.patch 0001-fields-fix-computed-value-with-lazylist-60600.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
(pas trop convaincue par ce patch)
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.
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>}}
)
Mis à jour par Lauréline Guérin il y a plus de 2 ans
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 :/
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_Itemsen 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_Itemsen mode sql
et on a un wcs.variables.LazyList dans magictokens
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é