From 376737340fc678531f168a64f08422e9e0defc57 Mon Sep 17 00:00:00 2001 From: Renaud Michotte Date: Wed, 4 Nov 2020 16:33:44 +0100 Subject: [PATCH] patrons: fix subscriptions renewal problem. The method to retrieve patrons without valid subscriptions doesn't works as expected. Each day, a new subscription will be added for all patrons linked to patron_type requiring a subscription, even if they have a valid one. Closes rero/rero-ils#1317 Co-Authored-by: Renaud Michotte Co-Authored-by: lauren-d --- rero_ils/modules/patrons/api.py | 4 +--- tests/api/patrons/test_patrons_rest.py | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/rero_ils/modules/patrons/api.py b/rero_ils/modules/patrons/api.py index 4fcf8b67eb..658bef9428 100644 --- a/rero_ils/modules/patrons/api.py +++ b/rero_ils/modules/patrons/api.py @@ -20,7 +20,6 @@ from datetime import datetime from functools import partial -from elasticsearch_dsl import Q from flask import current_app from flask_login import current_user from flask_security.confirmable import confirm_user @@ -426,8 +425,7 @@ def get_patrons_without_subscription(cls, patron_type_pid): """Get patrons linked to patron_type that haven't any subscription.""" query = PatronsSearch() \ .filter('term', patron__type__pid=patron_type_pid) \ - .filter('bool', must_not=[ - Q('exists', field="patron__subscriptions")]) + .exclude('exists', field='patron.subscriptions') for res in query.source('pid').scan(): yield Patron.get_record_by_pid(res.pid) diff --git a/tests/api/patrons/test_patrons_rest.py b/tests/api/patrons/test_patrons_rest.py index f0af1ddbb9..770575a97b 100644 --- a/tests/api/patrons/test_patrons_rest.py +++ b/tests/api/patrons/test_patrons_rest.py @@ -114,9 +114,9 @@ def test_patron_has_valid_subscriptions( patron_sion.add_subscription(patron_type_grown_sion, start, end) # !! As `add_subscription` use the method `Patron.update`, then the signal # `after_record_update` are send by invenio_records and the patron - # listener `reate_subscription_patron_transaction` is called. This + # listener `create_subscription_patron_transaction` is called. This # listener found that user doesn't have any subscription and add a valid - # one for this patron. So after `add_subscription` call, i just removed + # one for this patron. So after `add_subscription` call, I just removed # the valid subscription created. del patron_sion['patron']['subscriptions'][1] assert not patron_sion.has_valid_subscription