Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pricing stats: fix number of ill requests #3499

Merged
merged 1 commit into from
Oct 25, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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, 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 -----------
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