From 0296a9e8a368e7336c2f22f1803739d22d68d3d0 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Thu, 15 Sep 2022 09:41:56 +0200 Subject: [PATCH] api: does not write to disk during form/card listing (#69090) The call to increment_count() is only beneficial to the JSON file export case. --- wcs/backoffice/management.py | 47 +++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/wcs/backoffice/management.py b/wcs/backoffice/management.py index 76474317b..bb1f83c8b 100644 --- a/wcs/backoffice/management.py +++ b/wcs/backoffice/management.py @@ -2453,15 +2453,17 @@ class FormPage(Directory): if view_digest_key in (self.formdef.digest_templates or {}): digest_key = view_digest_key if get_request().form.get('full') == 'on': - output = JsonFileExportAfterJob(self.formdef).create_json_export( - items, - user=user, - anonymise=anonymise, - digest_key=digest_key, - include_evolution=True, - include_files=False, - include_roles=True, - include_unnamed_fields=False, + output = list( + JsonFileExportAfterJob(self.formdef).create_json_export_iterator( + items, + user=user, + anonymise=anonymise, + digest_key=digest_key, + include_evolution=True, + include_files=False, + include_roles=True, + include_unnamed_fields=False, + ) ) else: output = [ @@ -4267,7 +4269,7 @@ class JsonFileExportAfterJob(CsvExportAfterJob): super().__init__(formdef=formdef, **kwargs) self.file_name = '%s.json' % formdef.url_name - def create_json_export( + def create_json_export_iterator( self, items, user, @@ -4305,7 +4307,6 @@ class JsonFileExportAfterJob(CsvExportAfterJob): for x in get_publisher().role_class.get_ids(role_ids, ignore_errors=True) if x is not None } - output = [] for formdata in items: data = formdata.get_json_export_dict( anonymise=anonymise, @@ -4321,6 +4322,30 @@ class JsonFileExportAfterJob(CsvExportAfterJob): data.pop('digests') if digest_key: data['digest'] = (formdata.digests or {}).get(digest_key) + yield data + + def create_json_export( + self, + items, + user, + anonymise, + digest_key, + include_evolution, + include_files, + include_roles, + include_unnamed_fields, + ): + output = [] + for data in self.create_json_export_iterator( + items, + user, + anonymise, + digest_key, + include_evolution, + include_files, + include_roles, + include_unnamed_fields, + ): output.append(data) self.increment_count() return output -- 2.37.2