From 526433aa2a0a59876aeb20de075a466bcf56d28b Mon Sep 17 00:00:00 2001 From: Peter Weber Date: Thu, 24 Feb 2022 11:50:37 +0100 Subject: [PATCH] holding: better delete_standard_holdings_having_no_items * Adds try, exception to delete of holding. Co-Authored-by: Peter Weber --- rero_ils/modules/holdings/tasks.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/rero_ils/modules/holdings/tasks.py b/rero_ils/modules/holdings/tasks.py index 57d23d744c..d61f1ac9a1 100644 --- a/rero_ils/modules/holdings/tasks.py +++ b/rero_ils/modules/holdings/tasks.py @@ -29,20 +29,21 @@ @shared_task(ignore_result=True) def delete_standard_holdings_having_no_items(): """Removes standard holdings records with no attached items.""" - current_app.logger.debug( - "Starting delete_standard_holdings_having_no_items task ...") es_query = HoldingsSearch() \ .filter('term', holdings_type='standard') \ .filter('term', items_count=0) \ .source('pid') - - deleted = 0 + errors = 0 for hit in es_query.scan(): record = Holding.get_record_by_pid(hit.pid) - record.delete(force=False, dbcommit=True, delindex=True) - deleted += 1 - - current_app.logger.debug("Ending delete_standard_holdings_having_no_items") - msg = f'Number of removed holdings: {es_query.count()}' - set_timestamp('holdings-deletion', deleted=deleted) - return msg + try: + record.delete(force=False, dbcommit=True, delindex=True) + except Exception as err: + errors += 1 + reasons = record.reasons_not_to_delete() + current_app.logger.error( + f'Can not delete standard holding: {hit.pid} {reasons} {err}') + + counts = {'count': es_query.count(), 'errors': errors} + set_timestamp('delete_standard_holdings_having_no_items', **counts) + return counts