Skip to content

Commit

Permalink
pricing stats: fix number of ill requests
Browse files Browse the repository at this point in the history
* Fixes the count of number of ILL request to be coherent with RERO+'s
pricing criteria. All ILL requests created within the timeframe
except those with the status "denied" are counted.
* The calculation is simplified and does not use operation logs, which
created problems.
* Fixes tests.

Co-Authored-by: Pascal Repond <[email protected]>
  • Loading branch information
PascalRepond committed Oct 24, 2023
1 parent 63376d9 commit 613136c
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 30 deletions.
26 changes: 12 additions & 14 deletions rero_ils/modules/stats/api/pricing.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -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, 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 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=status)
return query.count()

# -------- optional -----------
Expand Down
13 changes: 6 additions & 7 deletions tests/api/stats/test_stats_rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -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')
Expand Down
18 changes: 9 additions & 9 deletions tests/ui/stats/test_stats_pricing.py
Original file line number Diff line number Diff line change
Expand Up @@ -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']

Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit 613136c

Please sign in to comment.