diff --git a/rero_ils/modules/stats/api/pricing.py b/rero_ils/modules/stats/api/pricing.py index afcf965288..668f9452c4 100644 --- a/rero_ils/modules/stats/api/pricing.py +++ b/rero_ils/modules/stats/api/pricing.py @@ -26,13 +26,13 @@ from rero_ils.modules.acquisition.acq_order_lines.api import \ AcqOrderLinesSearch from rero_ils.modules.documents.api import DocumentsSearch +from rero_ils.modules.ill_requests.api import ILLRequestsSearch from rero_ils.modules.ill_requests.models import ILLRequestStatus from rero_ils.modules.items.api import ItemsSearch from rero_ils.modules.items.models import ItemCirculationAction from rero_ils.modules.libraries.api import LibrariesSearch from rero_ils.modules.loans.logs.api import LoanOperationLogsSearch -from rero_ils.modules.operation_logs.api import OperationLog, \ - OperationLogsSearch +from rero_ils.modules.operation_logs.api import OperationLog from rero_ils.modules.patrons.api import PatronsSearch from rero_ils.modules.stats.api.api import StatsSearch from rero_ils.modules.users.models import UserRole @@ -114,9 +114,9 @@ def process(self, library): 'number_of_renewals': self.number_of_circ_operations( library.pid, ItemCirculationAction.EXTEND), - 'number_of_validated_ill_requests': - self.number_of_ill_requests_operations( - library.pid, [ILLRequestStatus.VALIDATED]), + 'number_of_ill_requests': + self.number_of_ill_requests( + library.pid, [ILLRequestStatus.DENIED]), 'number_of_items': self.number_of_items(library.pid), 'number_of_new_items': self.number_of_new_items(library.pid), 'number_of_deleted_items': self.number_of_deleted_items( @@ -209,20 +209,18 @@ def number_of_circ_operations(self, library_pid, trigger): ).filter('term', loan__item__library_pid=library_pid)\ .count() - def number_of_ill_requests_operations(self, library_pid, status): - """Number of ILL requests creation or update operations. + def number_of_ill_requests(self, library_pid, exclude_status): + """Number of existing ILL requests for a time range and a library. :param library_pid: string - the library to filter with - :param status: list of status to filter with - :return: the number of matched inter library loan request + :param exclude_status: list of statuses to exclude from the count + :return: the number of matched inter library loan requests :rtype: integer """ - query = OperationLogsSearch()\ - .filter('term', record__type='illr')\ - .filter('terms', operation=['update', 'create'])\ + query = ILLRequestsSearch()\ .filter('range', _created=self.date_range)\ - .filter('term', ill_request__library_pid=library_pid)\ - .filter('terms', ill_request__status=status) + .filter('term', library__pid=library_pid)\ + .exclude('terms', status=exclude_status) return query.count() # -------- optional ----------- diff --git a/tests/api/stats/test_stats_rest.py b/tests/api/stats/test_stats_rest.py index bf2a71ebef..47086fdc84 100644 --- a/tests/api/stats/test_stats_rest.py +++ b/tests/api/stats/test_stats_rest.py @@ -50,14 +50,13 @@ def test_stats_get(client, stats, csv_header): 'library id,library name,number_of_active_patrons,' 'number_of_checkins,number_of_checkouts,' 'number_of_deleted_items,number_of_documents,' - 'number_of_items,number_of_librarians,number_of_libraries,' - 'number_of_new_items,number_of_new_patrons,' + 'number_of_ill_requests,number_of_items,number_of_librarians,' + 'number_of_libraries,number_of_new_items,number_of_new_patrons,' 'number_of_order_lines,number_of_patrons,' - 'number_of_renewals,number_of_requests,' - 'number_of_validated_ill_requests\r\n' - 'lib3,Library of Fully,0,0,0,0,1,1,0,2,1,1,0,1,0,0,0\r\n' - 'lib1,Library of Martigny-ville,0,0,0,0,1,1,0,2,1,1,0,1,0,0,0\r\n' - 'lib4,Library of Sion,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0\r\n' + 'number_of_renewals,number_of_requests\r\n' + 'lib3,Library of Fully,0,0,0,0,1,0,1,0,2,1,1,0,1,0,0\r\n' + 'lib1,Library of Martigny-ville,0,0,0,0,1,1,1,0,2,1,1,0,1,0,0\r\n' + 'lib4,Library of Sion,0,0,0,0,1,0,1,0,1,1,0,0,0,0,0\r\n' ) list_url = url_for('invenio_records_rest.stat_list') diff --git a/tests/ui/stats/test_stats_pricing.py b/tests/ui/stats/test_stats_pricing.py index 9806d79557..129f0b034f 100644 --- a/tests/ui/stats/test_stats_pricing.py +++ b/tests/ui/stats/test_stats_pricing.py @@ -35,7 +35,7 @@ def test_stats_pricing_collect(stat_for_pricing): 'library', 'number_of_documents', 'number_of_libraries', 'number_of_librarians', 'number_of_active_patrons', 'number_of_order_lines', 'number_of_checkouts', 'number_of_renewals', - 'number_of_validated_ill_requests', 'number_of_items', + 'number_of_ill_requests', 'number_of_items', 'number_of_new_items', 'number_of_deleted_items', 'number_of_patrons', 'number_of_new_patrons', 'number_of_checkins', 'number_of_requests'] @@ -95,19 +95,19 @@ def test_stats_pricing_number_of_circ_operations( lib_martigny.pid, ItemCirculationAction.CHECKOUT) == 1 -def test_stats_pricing_number_of_ill_requests_operations( +def test_stats_pricing_number_of_ill_requests( stat_for_pricing, ill_request_martigny, lib_martigny): - """Test the number of ILL requests creation or update operations.""" + """Test the number of ILL requests.""" assert stat_for_pricing\ - .number_of_ill_requests_operations( - 'foo', [ILLRequestStatus.VALIDATED]) == 0 + .number_of_ill_requests( + 'foo', [ILLRequestStatus.DENIED]) == 0 lib_pid = lib_martigny.pid assert stat_for_pricing\ - .number_of_ill_requests_operations( - lib_pid, [ILLRequestStatus.CLOSED]) == 0 + .number_of_ill_requests( + lib_pid, [ILLRequestStatus.DENIED]) == 1 assert stat_for_pricing\ - .number_of_ill_requests_operations( - lib_pid, [ILLRequestStatus.PENDING]) == 1 + .number_of_ill_requests( + lib_pid, [ILLRequestStatus.PENDING]) == 0 def test_stats_pricing_number_of_items(