Développement #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.
Files
Related issues
History
Updated by Lauréline Guérin (absente) almost 4 years ago
- File 0001-fields-fix-computed-value-with-lazylist-60600.patch 0001-fields-fix-computed-value-with-lazylist-60600.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
(pas trop convaincue par ce patch)
Updated by Thomas Noël (congés → 24 novembre) almost 4 years ago
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.
Updated by Lauréline Guérin (absente) almost 4 years ago
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>}})
Updated by Lauréline Guérin (absente) almost 4 years ago
Updated by Thomas Noël (congés → 24 novembre) almost 4 years ago
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 :/
Updated by Lauréline Guérin (absente) almost 4 years ago
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
Updated by Lauréline Guérin (absente) over 3 years ago
- Related to 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 added