Development #77955
action "formulaire" dans une action globale interactive exécutée en masse, erreur sur champs fichier
Start date:
26 May 2023
Due date:
% Done:
0%
Estimated time:
Patch proposed:
No
Planning:
No
Description
Exception: type = '<class 'AttributeError'>', value = ''NoneType' object has no attribute 'get_tempfile_content'' Stack trace (most recent call first): File "/home/fred/src/eo/wcs/wcs/qommon/form.py", line 950, in set_value_from_token 948 session = get_session() 949 if token: > 950 self.value = session.get_tempfile_content(token) 951 952 def render(self): locals: request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> session = None token = '********************' File "/home/fred/src/eo/wcs/wcs/qommon/form.py", line 960, in _parse 958 def _parse(self, request): 959 if self.get_value_from_token: > 960 self.set_value_from_token(request) 961 962 if self.value is None: locals: request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> File "/home/fred/src/eo/venv/lib/python3.11/site-packages/quixote/form/widget.py", line 136, in parse 134 try: 135 self._parse(request) > 136 except WidgetValueError as exc: 137 self.set_error(stringify(exc)) 138 if (self.required and self.value is None and locals: request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> submitted = True File "/home/fred/src/eo/venv/lib/python3.11/site-packages/quixote/form/widget.py", line 95, in get_error 93 94 def get_error(self, request=None): > 95 self.parse(request=request) 96 return self.error 97 locals: request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> File "/home/fred/src/eo/venv/lib/python3.11/site-packages/quixote/form/widget.py", line 99, in has_error 97 98 def has_error(self, request=None): > 99 return bool(self.get_error(request=request)) 100 101 def clear_error(self, request=None): locals: request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> File "/home/fred/src/eo/venv/lib/python3.11/site-packages/quixote/form/widget.py", line 761, in has_error 759 def has_error(self, request=None): 760 has_error = False > 761 if Widget.has_error(self, request=request): 762 has_error = True 763 for widget in self.widgets: locals: has_error = False request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <FileWithPreviewWidget at 7fc99a887210: ftest_2> File "/home/fred/src/eo/venv/lib/python3.11/site-packages/quixote/form/form.py", line 188, in has_errors 186 if self.is_submitted(): 187 for widget in self.get_all_widgets(): > 188 if widget.has_error(request=request): 189 has_errors = True 190 return has_errors locals: has_errors = False request = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <wcs.qommon.form.Form object at 0x7fc99bcac790> widget = <FileWithPreviewWidget at 7fc99a887210: ftest_2> File "/home/fred/src/eo/wcs/wcs/wf/form.py", line 340, in submit_form 338 if add_element_widget and add_element_widget.parse(): 339 raise RedisplayFormException() > 340 elif not form.has_errors(): 341 button_name = form.get_submit() 342 button = form.get_widget(button_name) locals: evo = <wcs.formdata.Evolution object at 0x7fc99b505810> form = <wcs.qommon.form.Form object at 0x7fc99bcac790> formdata = <_wcs_Test-Glob-Inter 'test glob inter #625-1' id:1> self = <FormWorkflowStatusItem 4 in global action "int1" (1) in workflow "actions globales interactives" (250)> user = <SqlUser 'Frédéric P.' id:1> File "/home/fred/src/eo/wcs/wcs/workflows.py", line 2064, in handle_form 2062 2063 for item in self.get_active_items(form, filled, user): > 2064 next_url = item.submit_form(form, filled, user, evo) 2065 if next_url is True: 2066 break locals: evo = <wcs.formdata.Evolution object at 0x7fc99b505810> filled = <_wcs_Test-Glob-Inter 'test glob inter #625-1' id:1> form = <wcs.qommon.form.Form object at 0x7fc99bcac790> item = <FormWorkflowStatusItem 4 in global action "int1" (1) in workflow "actions globales interactives" (250)> next_url = None self = <wcs.workflows.WorkflowGlobalAction object at 0x7fc99b507050> user = <SqlUser 'Frédéric P.' id:1> File "/home/fred/src/eo/wcs/wcs/workflows.py", line 2123, in handle_form 2121 def handle_form(self, form, filled, user): 2122 evo = Evolution() > 2123 url = super().handle_form(form, filled, user, evo) 2124 if isinstance(url, str): 2125 return url locals: __class__ = <class 'wcs.workflows.WorkflowGlobalAction'> evo = <wcs.formdata.Evolution object at 0x7fc99b505810> filled = <_wcs_Test-Glob-Inter 'test glob inter #625-1' id:1> form = <wcs.qommon.form.Form object at 0x7fc99bcac790> self = <wcs.workflows.WorkflowGlobalAction object at 0x7fc99b507050> user = <SqlUser 'Frédéric P.' id:1> File "/home/fred/src/eo/wcs/wcs/forms/actions.py", line 238, in execute_one 236 form = action.get_action_form(formdata, user=user) 237 form.method = 'get' > 238 url = action.handle_form(form, formdata, user=user) 239 if afterjob: 240 # reset request to avoid emails being created as afterjobs locals: action = <wcs.workflows.WorkflowGlobalAction object at 0x7fc99b507050> afterjob = True cls = <class 'wcs.forms.actions.GlobalInteractiveMassActionAfterJob'> form = <wcs.qommon.form.Form object at 0x7fc99bcac790> formdata = <_wcs_Test-Glob-Inter 'test glob inter #625-1' id:1> publisher = <wcs.compat.CompatWcsPublisher object at 0x7fc99bce6b90> status = 'wf-1' user = <SqlUser 'Frédéric P.' id:1> File "/home/fred/src/eo/wcs/wcs/forms/actions.py", line 225, in execute 223 publisher._set_request(req) 224 formdata = data_class.get(item_id) > 225 self.execute_one(publisher, formdata, action, user) 226 self.increment_count() 227 locals: action = <wcs.workflows.WorkflowGlobalAction object at 0x7fc99b507050> data_class = <class 'wcs.formdef._wcs_Test-Glob-Inter'> formdata = <_wcs_Test-Glob-Inter 'test glob inter #625-1' id:1> formdef = <FormDef 'test glob inter' id:625> item_id = 1 publisher = <wcs.compat.CompatWcsPublisher object at 0x7fc99bce6b90> req = <wcs.qommon.http_request.HTTPRequest object at 0x7fc9a8af4d10> self = <GlobalInteractiveMassActionAfterJob id:45c4a24e-9a5b-4ca5-ba45-8d591733969a> user = <SqlUser 'Frédéric P.' id:1>
History
Updated by Robot Gitea 14 days ago
- Tracker changed from Bug to Development
- Status changed from Nouveau to En cours
Frédéric Péters (fpeters) a ouvert une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/342
- Titre : WIP: misc: manage file fields in global interactive forms (#77955)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/342/files
Updated by Robot Gitea 12 days ago
- Status changed from Solution proposée to Solution validée
Lauréline Guérin (lguerin) a approuvé une pull request sur Gitea concernant cette demande :
Updated by Robot Gitea 12 days ago
- Status changed from Solution validée to Résolu (à déployer)
Frédéric Péters (fpeters) a mergé une pull request sur Gitea concernant cette demande :
- URL : https://git.entrouvert.org/entrouvert/wcs/pulls/342
- Titre : misc: manage file fields in global interactive forms (#77955)
- Modifications : https://git.entrouvert.org/entrouvert/wcs/pulls/342/files
Updated by Transition automatique 12 days ago
- Status changed from Résolu (à déployer) to Solution déployée