From 176e3f7a2ebcd213179614c2a31e2bc41d44edb7 Mon Sep 17 00:00:00 2001 From: PascalRepond Date: Mon, 17 Oct 2022 15:09:41 +0200 Subject: [PATCH] serializers: fix error when no `bf:Publication` * When no `provisionActivity` of type `bf:publication` is present, the collector returns None rather than an empty generator. * Fixes RT 412. * Fixes Sentry RERO-ILS-2D1. Co-Authored-by: Pascal Repond Co-Authored-by: Renaud Michotte --- .../modules/items/serializers/collector.py | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/rero_ils/modules/items/serializers/collector.py b/rero_ils/modules/items/serializers/collector.py index 09174fbb66..b0b06f86bd 100644 --- a/rero_ils/modules/items/serializers/collector.py +++ b/rero_ils/modules/items/serializers/collector.py @@ -144,21 +144,23 @@ def _build_doc(data): ) # process provision activity provision_activity = next( - filter(lambda x: x.get('type') - == 'bf:Publication', data.get('provisionActivity')) - ) - start_date = provision_activity.get('startDate', '') - end_date = provision_activity.get('endDate') - document_data['document_publication_year'] = \ - f'{start_date} - {end_date}' \ - if end_date else start_date - - document_data['document_publisher'] = cls.separator.join( - data['value'] - for stmt in provision_activity.get('statement', []) - for data in stmt.get('label', []) - if stmt['type'] == 'bf:Agent' + filter(lambda x: x.get('type') == 'bf:Publication', + data.get('provisionActivity')), + None ) + if provision_activity: + start_date = provision_activity.get('startDate', '') + end_date = provision_activity.get('endDate') + document_data['document_publication_year'] = \ + f'{start_date} - {end_date}' \ + if end_date else start_date + + document_data['document_publisher'] = cls.separator.join( + data['value'] + for stmt in provision_activity.get('statement', []) + for data in stmt.get('label', []) + if stmt['type'] == 'bf:Agent' + ) return document_data doc_search = DocumentsSearch() \