invenio-app-ils 6.0.0__py2.py3-none-any.whl → 6.1.1__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- invenio_app_ils/__init__.py +1 -1
- invenio_app_ils/config.py +117 -4
- invenio_app_ils/eitems/api.py +1 -1
- invenio_app_ils/literature/covers_builder.py +13 -1
- invenio_app_ils/stats/event_builders.py +73 -0
- invenio_app_ils/stats/processors.py +30 -0
- invenio_app_ils/stats/templates/aggregations/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +41 -0
- invenio_app_ils/stats/templates/events/__init__.py +8 -0
- invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +8 -0
- invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +41 -0
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/METADATA +17 -3
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/RECORD +21 -11
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/WHEEL +0 -0
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/entry_points.txt +0 -0
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/licenses/AUTHORS.rst +0 -0
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/licenses/LICENSE +0 -0
- {invenio_app_ils-6.0.0.dist-info → invenio_app_ils-6.1.1.dist-info}/top_level.txt +0 -0
invenio_app_ils/__init__.py
CHANGED
invenio_app_ils/config.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2018-
|
|
3
|
+
# Copyright (C) 2018-2025 CERN.
|
|
4
4
|
#
|
|
5
5
|
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
6
|
# under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -15,6 +15,7 @@ You overwrite and set instance-specific configuration by either:
|
|
|
15
15
|
|
|
16
16
|
import datetime
|
|
17
17
|
from datetime import timedelta
|
|
18
|
+
from functools import partial
|
|
18
19
|
|
|
19
20
|
from celery.schedules import crontab
|
|
20
21
|
from invenio_accounts.config import (
|
|
@@ -24,7 +25,7 @@ from invenio_records_rest.facets import terms_filter
|
|
|
24
25
|
from invenio_records_rest.utils import allow_all, deny_all
|
|
25
26
|
from invenio_stats.aggregations import StatAggregator
|
|
26
27
|
from invenio_stats.processors import EventsIndexer
|
|
27
|
-
from invenio_stats.queries import ESTermsQuery
|
|
28
|
+
from invenio_stats.queries import DateHistogramQuery, ESTermsQuery
|
|
28
29
|
|
|
29
30
|
from invenio_app_ils.document_requests.indexer import DocumentRequestIndexer
|
|
30
31
|
from invenio_app_ils.documents.indexer import DocumentIndexer
|
|
@@ -41,6 +42,7 @@ from invenio_app_ils.literature.search import LiteratureSearch
|
|
|
41
42
|
from invenio_app_ils.locations.indexer import LocationIndexer
|
|
42
43
|
from invenio_app_ils.patrons.indexer import PatronIndexer
|
|
43
44
|
from invenio_app_ils.series.indexer import SeriesIndexer
|
|
45
|
+
from invenio_app_ils.stats.event_builders import ils_record_changed_event_builder
|
|
44
46
|
from invenio_app_ils.vocabularies.indexer import VocabularyIndexer
|
|
45
47
|
|
|
46
48
|
from .document_requests.api import (
|
|
@@ -95,6 +97,7 @@ from .permissions import (
|
|
|
95
97
|
authenticated_user_permission,
|
|
96
98
|
backoffice_permission,
|
|
97
99
|
backoffice_read_permission,
|
|
100
|
+
superuser_permission,
|
|
98
101
|
views_permissions_factory,
|
|
99
102
|
)
|
|
100
103
|
from .records.permissions import record_read_permission_factory
|
|
@@ -234,12 +237,20 @@ CELERY_BEAT_SCHEDULE = {
|
|
|
234
237
|
"stats-process-events": {
|
|
235
238
|
"task": "invenio_stats.tasks.process_events",
|
|
236
239
|
"schedule": timedelta(minutes=30),
|
|
237
|
-
"args": [
|
|
240
|
+
"args": [
|
|
241
|
+
(
|
|
242
|
+
"record-view",
|
|
243
|
+
"file-download",
|
|
244
|
+
"ils-record-changes-updates",
|
|
245
|
+
"ils-record-changes-insertions",
|
|
246
|
+
"ils-record-changes-deletions",
|
|
247
|
+
)
|
|
248
|
+
],
|
|
238
249
|
},
|
|
239
250
|
"stats-aggregate-events": {
|
|
240
251
|
"task": "invenio_stats.tasks.aggregate_events",
|
|
241
252
|
"schedule": timedelta(hours=3),
|
|
242
|
-
"args": [("record-view-agg", "file-download-agg")],
|
|
253
|
+
"args": [("record-view-agg", "file-download-agg", "ils-record-changes-agg")],
|
|
243
254
|
},
|
|
244
255
|
"clean_locations_past_closures_exceptions": {
|
|
245
256
|
"task": (
|
|
@@ -921,6 +932,57 @@ STATS_EVENTS = {
|
|
|
921
932
|
"suffix": "%Y-%m",
|
|
922
933
|
},
|
|
923
934
|
},
|
|
935
|
+
"ils-record-changes-updates": {
|
|
936
|
+
"signal": "invenio_records.signals.after_record_update",
|
|
937
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
938
|
+
"event_builders": [
|
|
939
|
+
partial(ils_record_changed_event_builder, method="update"),
|
|
940
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
941
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
942
|
+
],
|
|
943
|
+
"cls": EventsIndexer,
|
|
944
|
+
"params": {
|
|
945
|
+
"preprocessors": [
|
|
946
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
947
|
+
],
|
|
948
|
+
"double_click_window": 0,
|
|
949
|
+
"suffix": "%Y",
|
|
950
|
+
},
|
|
951
|
+
},
|
|
952
|
+
"ils-record-changes-insertions": {
|
|
953
|
+
"signal": "invenio_records.signals.after_record_insert",
|
|
954
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
955
|
+
"event_builders": [
|
|
956
|
+
partial(ils_record_changed_event_builder, method="insert"),
|
|
957
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
958
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
959
|
+
],
|
|
960
|
+
"cls": EventsIndexer,
|
|
961
|
+
"params": {
|
|
962
|
+
"preprocessors": [
|
|
963
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
964
|
+
],
|
|
965
|
+
"double_click_window": 0,
|
|
966
|
+
"suffix": "%Y",
|
|
967
|
+
},
|
|
968
|
+
},
|
|
969
|
+
"ils-record-changes-deletions": {
|
|
970
|
+
"signal": "invenio_records.signals.after_record_delete",
|
|
971
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
972
|
+
"event_builders": [
|
|
973
|
+
partial(ils_record_changed_event_builder, method="delete"),
|
|
974
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
975
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
976
|
+
],
|
|
977
|
+
"cls": EventsIndexer,
|
|
978
|
+
"params": {
|
|
979
|
+
"preprocessors": [
|
|
980
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
981
|
+
],
|
|
982
|
+
"double_click_window": 0,
|
|
983
|
+
"suffix": "%Y",
|
|
984
|
+
},
|
|
985
|
+
},
|
|
924
986
|
}
|
|
925
987
|
|
|
926
988
|
STATS_AGGREGATIONS = {
|
|
@@ -967,6 +1029,19 @@ STATS_AGGREGATIONS = {
|
|
|
967
1029
|
),
|
|
968
1030
|
),
|
|
969
1031
|
),
|
|
1032
|
+
"ils-record-changes-agg": dict(
|
|
1033
|
+
templates="invenio_app_ils.stats.templates.aggregations.ils_record_changes",
|
|
1034
|
+
cls=StatAggregator,
|
|
1035
|
+
params=dict(
|
|
1036
|
+
event="ils-record-changes",
|
|
1037
|
+
field="aggregation_id",
|
|
1038
|
+
interval="day",
|
|
1039
|
+
index_interval="year",
|
|
1040
|
+
copy_fields=dict(pid_type="pid_type", method="method", user_id="user_id"),
|
|
1041
|
+
metric_fields=dict(),
|
|
1042
|
+
query_modifiers=[],
|
|
1043
|
+
),
|
|
1044
|
+
),
|
|
970
1045
|
}
|
|
971
1046
|
|
|
972
1047
|
STATS_QUERIES = {
|
|
@@ -1003,6 +1078,44 @@ STATS_QUERIES = {
|
|
|
1003
1078
|
),
|
|
1004
1079
|
),
|
|
1005
1080
|
),
|
|
1081
|
+
"ils-record-changes": dict(
|
|
1082
|
+
cls=DateHistogramQuery,
|
|
1083
|
+
permission_factory=backoffice_read_permission,
|
|
1084
|
+
params=dict(
|
|
1085
|
+
index="stats-ils-record-changes",
|
|
1086
|
+
copy_fields=dict(
|
|
1087
|
+
pid_type="pid_type",
|
|
1088
|
+
method="method",
|
|
1089
|
+
),
|
|
1090
|
+
required_filters=dict(
|
|
1091
|
+
pid_type="pid_type",
|
|
1092
|
+
method="method",
|
|
1093
|
+
),
|
|
1094
|
+
metric_fields=dict(
|
|
1095
|
+
count=("sum", "count", {}),
|
|
1096
|
+
),
|
|
1097
|
+
),
|
|
1098
|
+
),
|
|
1099
|
+
"ils-record-changes-per-user": dict(
|
|
1100
|
+
cls=ESTermsQuery,
|
|
1101
|
+
permission_factory=superuser_permission,
|
|
1102
|
+
params=dict(
|
|
1103
|
+
index="stats-ils-record-changes",
|
|
1104
|
+
copy_fields=dict(
|
|
1105
|
+
pid_type="pid_type",
|
|
1106
|
+
method="method",
|
|
1107
|
+
user_id="user_id",
|
|
1108
|
+
),
|
|
1109
|
+
required_filters=dict(
|
|
1110
|
+
pid_type="pid_type",
|
|
1111
|
+
method="method",
|
|
1112
|
+
),
|
|
1113
|
+
metric_fields=dict(
|
|
1114
|
+
count=("sum", "count", {}),
|
|
1115
|
+
),
|
|
1116
|
+
aggregated_fields=["user_id"],
|
|
1117
|
+
),
|
|
1118
|
+
),
|
|
1006
1119
|
}
|
|
1007
1120
|
|
|
1008
1121
|
# List of available vocabularies
|
invenio_app_ils/eitems/api.py
CHANGED
|
@@ -133,7 +133,7 @@ def get_eitems_for_document_by_creator(document_pid, creator, case_insensitive=F
|
|
|
133
133
|
document_pid=document_pid
|
|
134
134
|
).filter(
|
|
135
135
|
"term",
|
|
136
|
-
created_by__value={"
|
|
136
|
+
created_by__value={"value": creator, "case_insensitive": case_insensitive},
|
|
137
137
|
)
|
|
138
138
|
|
|
139
139
|
return creator_match
|
|
@@ -13,7 +13,19 @@ from flask import url_for
|
|
|
13
13
|
def build_ils_demo_cover_urls(metadata):
|
|
14
14
|
"""Build working ulrs for demo data."""
|
|
15
15
|
cover_metadata = metadata.get("cover_metadata", {})
|
|
16
|
-
|
|
16
|
+
|
|
17
|
+
isbn = (
|
|
18
|
+
cover_metadata.get("ISBN", "")
|
|
19
|
+
or cover_metadata.get("isbn", "")
|
|
20
|
+
or metadata.get("isbn", "")
|
|
21
|
+
or ""
|
|
22
|
+
)
|
|
23
|
+
identifiers = metadata.get("identifiers", [])
|
|
24
|
+
if not isbn and identifiers:
|
|
25
|
+
for identifier in identifiers:
|
|
26
|
+
if identifier.get("scheme") == "ISBN":
|
|
27
|
+
isbn = identifier.get("value", "")
|
|
28
|
+
break
|
|
17
29
|
if isbn:
|
|
18
30
|
return build_openlibrary_urls(isbn)
|
|
19
31
|
return build_placeholder_urls()
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# This file is part of Invenio.
|
|
4
|
+
# Copyright (C) 2025 CERN.
|
|
5
|
+
#
|
|
6
|
+
# Invenio is free software; you can redistribute it and/or modify it
|
|
7
|
+
# under the terms of the MIT License; see LICENSE file for more details
|
|
8
|
+
|
|
9
|
+
"""ILS stats event builders."""
|
|
10
|
+
|
|
11
|
+
import datetime
|
|
12
|
+
|
|
13
|
+
from flask import g
|
|
14
|
+
from flask_login import current_user
|
|
15
|
+
|
|
16
|
+
from invenio_app_ils.permissions import backoffice_permission
|
|
17
|
+
from invenio_app_ils.records.api import IlsRecord
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def ils_record_changed_event_builder(
|
|
21
|
+
event, sender_app, method=None, record=None, **kwargs
|
|
22
|
+
):
|
|
23
|
+
"""Build an event for ILS record changes."""
|
|
24
|
+
|
|
25
|
+
if not method:
|
|
26
|
+
raise ValueError("Method must be provided to the event builder.")
|
|
27
|
+
if not record:
|
|
28
|
+
raise ValueError("Record must be provided to the event builder.")
|
|
29
|
+
if not isinstance(record, IlsRecord):
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
# We have to get the pid_type directly through the private accessor,
|
|
33
|
+
# as the pid might not be registered directly after the record creation.
|
|
34
|
+
pid_type = record._pid_type
|
|
35
|
+
|
|
36
|
+
event_data = {
|
|
37
|
+
"timestamp": datetime.datetime.now(datetime.timezone.utc)
|
|
38
|
+
.replace(tzinfo=None)
|
|
39
|
+
.isoformat(),
|
|
40
|
+
"pid_type": pid_type,
|
|
41
|
+
"method": method,
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
event.update(event_data)
|
|
45
|
+
return event
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def add_librarian_user_id_to_event(event, sender_app, **kwargs):
|
|
49
|
+
"""Add the user_id of the librarian performing the action to the event."""
|
|
50
|
+
|
|
51
|
+
user_id = None
|
|
52
|
+
if (
|
|
53
|
+
current_user
|
|
54
|
+
and current_user.is_authenticated
|
|
55
|
+
and backoffice_permission().allows(g.identity)
|
|
56
|
+
):
|
|
57
|
+
user_id = current_user.get_id()
|
|
58
|
+
|
|
59
|
+
event.update({"user_id": user_id})
|
|
60
|
+
|
|
61
|
+
return event
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def add_record_pid_to_event(event, sender_app, record=None, **kwargs):
|
|
65
|
+
"""Add the record pid to the event."""
|
|
66
|
+
if not record:
|
|
67
|
+
raise ValueError("Record must be provided to the event builder.")
|
|
68
|
+
|
|
69
|
+
# We have to get the pid directly from the record,
|
|
70
|
+
# as the pid might not yet be registered (e.g. after record creation).
|
|
71
|
+
event.update({"pid_value": record.get("pid")})
|
|
72
|
+
|
|
73
|
+
return event
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# This file is part of Invenio.
|
|
4
|
+
# Copyright (C) 2025 CERN.
|
|
5
|
+
#
|
|
6
|
+
# Invenio is free software; you can redistribute it and/or modify it
|
|
7
|
+
# under the terms of the MIT License; see LICENSE file for more details
|
|
8
|
+
|
|
9
|
+
"""ILS stats preprocessors."""
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def add_record_change_ids(doc):
|
|
13
|
+
"""Add unique_id and aggregation_id to the doc."""
|
|
14
|
+
|
|
15
|
+
# We use this field to group by during aggregation.
|
|
16
|
+
# e.g. the count of created eitems by a user with id 7 is tracked under eitmid__insert__7.
|
|
17
|
+
doc["aggregation_id"] = f"{doc['pid_type']}__{doc['method']}"
|
|
18
|
+
|
|
19
|
+
# unique_id identifies each individual event and is used by invenio-stats.
|
|
20
|
+
# It automatically deduplicates events from the same second that have the same unique_id.
|
|
21
|
+
# Including the pid_value ensures distinctness between events,
|
|
22
|
+
# even when multiple records are updated within the same second.
|
|
23
|
+
# e.g. during the importer in cds-ils where many eitems are created in bulk.
|
|
24
|
+
doc["unique_id"] = f"{doc['pid_value']}__{doc['pid_type']}__{doc['method']}"
|
|
25
|
+
|
|
26
|
+
if doc["user_id"]:
|
|
27
|
+
doc["aggregation_id"] += f"__{doc['user_id']}"
|
|
28
|
+
doc["unique_id"] += f"__{doc['user_id']}"
|
|
29
|
+
|
|
30
|
+
return doc
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2025 CERN.
|
|
4
|
+
#
|
|
5
|
+
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
|
+
# under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
+
|
|
8
|
+
"""ILS record changes aggregations templates"""
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2025 CERN.
|
|
4
|
+
#
|
|
5
|
+
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
|
+
# under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
+
|
|
8
|
+
"""ILS record changes aggregations templates"""
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"index_patterns": [
|
|
3
|
+
"__SEARCH_INDEX_PREFIX__stats-ils-record-changes-*"
|
|
4
|
+
],
|
|
5
|
+
"settings": {
|
|
6
|
+
"index": {
|
|
7
|
+
"refresh_interval": "5s"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"date_detection": false,
|
|
12
|
+
"dynamic": false,
|
|
13
|
+
"numeric_detection": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"timestamp": {
|
|
16
|
+
"type": "date"
|
|
17
|
+
},
|
|
18
|
+
"updated_timestamp": {
|
|
19
|
+
"type": "date"
|
|
20
|
+
},
|
|
21
|
+
"pid_type": {
|
|
22
|
+
"type": "keyword"
|
|
23
|
+
},
|
|
24
|
+
"method": {
|
|
25
|
+
"type": "keyword"
|
|
26
|
+
},
|
|
27
|
+
"user_id": {
|
|
28
|
+
"type": "keyword"
|
|
29
|
+
},
|
|
30
|
+
"aggregation_id": {
|
|
31
|
+
"type": "keyword"
|
|
32
|
+
},
|
|
33
|
+
"count": {
|
|
34
|
+
"type": "integer"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"aliases": {
|
|
39
|
+
"__SEARCH_INDEX_PREFIX__stats-ils-record-changes": {}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"index_patterns": [
|
|
3
|
+
"__SEARCH_INDEX_PREFIX__events-stats-ils-record-changes-*"
|
|
4
|
+
],
|
|
5
|
+
"settings": {
|
|
6
|
+
"index": {
|
|
7
|
+
"refresh_interval": "5s"
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
"mappings": {
|
|
11
|
+
"date_detection": false,
|
|
12
|
+
"dynamic": false,
|
|
13
|
+
"numeric_detection": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"timestamp": {
|
|
16
|
+
"type": "date"
|
|
17
|
+
},
|
|
18
|
+
"updated_timestamp": {
|
|
19
|
+
"type": "date"
|
|
20
|
+
},
|
|
21
|
+
"pid_type": {
|
|
22
|
+
"type": "keyword"
|
|
23
|
+
},
|
|
24
|
+
"method": {
|
|
25
|
+
"type": "keyword"
|
|
26
|
+
},
|
|
27
|
+
"user_id": {
|
|
28
|
+
"type": "keyword"
|
|
29
|
+
},
|
|
30
|
+
"unique_id": {
|
|
31
|
+
"type": "keyword"
|
|
32
|
+
},
|
|
33
|
+
"aggregation_id": {
|
|
34
|
+
"type": "keyword"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"aliases": {
|
|
39
|
+
"__SEARCH_INDEX_PREFIX__events-stats-ils-record-changes": {}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invenio-app-ils
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.1.1
|
|
4
4
|
Summary: Invenio Integrated Library System.
|
|
5
5
|
Home-page: https://github.com/inveniosoftware/invenio-app-ils
|
|
6
6
|
Author: CERN
|
|
@@ -28,7 +28,7 @@ Requires-Dist: invenio-theme<5.0.0,>=4.3.0
|
|
|
28
28
|
Requires-Dist: invenio-access<5.0.0,>=4.1.0
|
|
29
29
|
Requires-Dist: invenio-accounts<7.0.0,>=6.1.1
|
|
30
30
|
Requires-Dist: invenio-oauth2server<4.0.0,>=3.2.0
|
|
31
|
-
Requires-Dist: invenio-oauthclient<
|
|
31
|
+
Requires-Dist: invenio-oauthclient<7.0.0,>=6.0.0
|
|
32
32
|
Requires-Dist: invenio-userprofiles<5.0.0,>=4.0.0
|
|
33
33
|
Requires-Dist: invenio-indexer<4.0.0,>=3.1.0
|
|
34
34
|
Requires-Dist: invenio-jsonschemas<3.0.0,>=2.1.0
|
|
@@ -95,7 +95,7 @@ https://invenioils.docs.cern.ch
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
..
|
|
98
|
-
Copyright (C) 2018-
|
|
98
|
+
Copyright (C) 2018-2025 CERN.
|
|
99
99
|
|
|
100
100
|
invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
101
101
|
under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -103,6 +103,20 @@ https://invenioils.docs.cern.ch
|
|
|
103
103
|
Changes
|
|
104
104
|
=======
|
|
105
105
|
|
|
106
|
+
Version 6.1.1 (released 2025-12-10)
|
|
107
|
+
|
|
108
|
+
- tests: move covers builder test into correct folder
|
|
109
|
+
- setup: bump oauthclient major version
|
|
110
|
+
- global: bump OpenSearch to v3.2.0
|
|
111
|
+
|
|
112
|
+
Version 6.1.0 (released 2025-10-05)
|
|
113
|
+
|
|
114
|
+
- fix: make terms query that gets eitems by creator use correct keyword
|
|
115
|
+
- stats: record change ids only contain `user_id` when it is not None
|
|
116
|
+
- global: include python files inside invenio_app_ils in manifest
|
|
117
|
+
- stats: move file `test_stats` into folder for stats
|
|
118
|
+
- stats: add stats to track ILSRecord insertions, deletions and updates
|
|
119
|
+
|
|
106
120
|
Version 6.0.0 (released 2025-10-03)
|
|
107
121
|
|
|
108
122
|
- breaking change: permissions: turn permission that checks if user can see notifications into read permission
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
invenio_app_ils/__init__.py,sha256=
|
|
1
|
+
invenio_app_ils/__init__.py,sha256=aUR3Bj9BAjXvgK6UWWHG518slgtK6nFjMi9QDrxgSlI,285
|
|
2
2
|
invenio_app_ils/cli.py,sha256=GGXMuXUlO9i8S9fpBXwj5wfPcK8aYe0leSDB3V--7Bs,58609
|
|
3
|
-
invenio_app_ils/config.py,sha256=
|
|
3
|
+
invenio_app_ils/config.py,sha256=aMdID-W4Jm8zI5K4Nvwvk86SG5OCuRZFS7wTWnXrAKM,45294
|
|
4
4
|
invenio_app_ils/errors.py,sha256=HB_iWj-aYxzTzzO6hWb66mUPZdqpWYHgmr2H2t3j3wU,13293
|
|
5
5
|
invenio_app_ils/ext.py,sha256=SULPfx1FxBLaOaKcyNKAAIyvZAuvTH3AcH_a8aXTSYo,11522
|
|
6
6
|
invenio_app_ils/facets.py,sha256=x-ID7vL34zqbxJi7VC3EJSee13l_Jk0CfPZN3RHZrM8,4207
|
|
@@ -150,7 +150,7 @@ invenio_app_ils/documents/schemas/__init__.py,sha256=ngcwrP0RQpnFmW2WG5ZANoPw3A1
|
|
|
150
150
|
invenio_app_ils/documents/schemas/documents/document-v1.0.0.json,sha256=uhtuj4PxrM4AkZUv-2_8CsXUYd8MMY_Cizbov1QZCp4,18138
|
|
151
151
|
invenio_app_ils/documents/schemas/documents/document-v2.0.0.json,sha256=uhtuj4PxrM4AkZUv-2_8CsXUYd8MMY_Cizbov1QZCp4,18138
|
|
152
152
|
invenio_app_ils/eitems/__init__.py,sha256=QAjmRFG-mc0z4BRiBKF_oQtmoc5Lma00n32HU5rw3Xo,227
|
|
153
|
-
invenio_app_ils/eitems/api.py,sha256=
|
|
153
|
+
invenio_app_ils/eitems/api.py,sha256=nNjlT397Mhxf9WQqG_sifq0q1kqX1Dje6Se6cof24K8,5157
|
|
154
154
|
invenio_app_ils/eitems/indexer.py,sha256=T9TjHHIEKWOQKJf3MIKHRJhLVjnJhUxwCwJKvzET63U,1800
|
|
155
155
|
invenio_app_ils/eitems/search.py,sha256=7OAC-HBVkubEsONFdlPgy7FfWxkI-_Wa586PKuHOH1A,1796
|
|
156
156
|
invenio_app_ils/eitems/jsonresolvers/__init__.py,sha256=eJEOVjrdQ2npcBT30Sf_xEq01jds8N8lnexskEGZR8o,245
|
|
@@ -261,7 +261,7 @@ invenio_app_ils/items/serializers/__init__.py,sha256=OxfwU0rGarUnBvznMmiGaJx6uMw
|
|
|
261
261
|
invenio_app_ils/items/serializers/item.py,sha256=8qHJp4SFxJj_qM-Pf-Om98KYc5ytweNLJiD94ksGslQ,2967
|
|
262
262
|
invenio_app_ils/literature/__init__.py,sha256=GELxzVtOq8G2O7Uvs_mLsj0wPnS5l-6ns9mLFDGMEmQ,231
|
|
263
263
|
invenio_app_ils/literature/api.py,sha256=gbLMK36fN0KXUmygRLadeejPnJ_3CSU_8WFrgxwQ_j4,862
|
|
264
|
-
invenio_app_ils/literature/covers_builder.py,sha256=
|
|
264
|
+
invenio_app_ils/literature/covers_builder.py,sha256=eBDfWVFnMswDJ6efk1PdMLI3ut7MSziVDnznb4-CW-E,1640
|
|
265
265
|
invenio_app_ils/literature/search.py,sha256=Ny49TUkTsJB34REm-ZgahOcIeJDvH-zZk6mXKHBF47Q,1860
|
|
266
266
|
invenio_app_ils/literature/serializers/__init__.py,sha256=CnJdYvVa433JbQb-dZciGDGAdtg0-bEhjtW8fK8rZy4,931
|
|
267
267
|
invenio_app_ils/literature/serializers/csv.py,sha256=dkV5p5H5tCxLcj9bKQDbGeqwfuytfWGyPLy4YDFhZig,1130
|
|
@@ -377,6 +377,8 @@ invenio_app_ils/series/schemas/series/series-v2.0.0.json,sha256=QrNqmAeuqZysIHVB
|
|
|
377
377
|
invenio_app_ils/static/images/placeholder.png,sha256=dSqkEWkAsDHcV8GBVS52gsMhXQxLKSWjg74etFdToTE,4585
|
|
378
378
|
invenio_app_ils/static_pages/search_guide.html,sha256=8wkk5o6sJCsbPwccYRwhxO5TMiVsLdAXOEduWQStyMk,22084
|
|
379
379
|
invenio_app_ils/stats/__init__.py,sha256=tYEj7b8b25K-qS6FTv7w2bc_iLjaiTFn8INNv4-JVmM,254
|
|
380
|
+
invenio_app_ils/stats/event_builders.py,sha256=p628CvL9x1tothBah-giK5nxuA8MBVKHseTFRSTFUiI,2085
|
|
381
|
+
invenio_app_ils/stats/processors.py,sha256=vQnAt6ijJqUC8buHtCg-hj1rhQamTLD5f9jTN1oxRBk,1184
|
|
380
382
|
invenio_app_ils/stats/aggregations/__init__.py,sha256=Ix-wNZuG_-H6P-bJ2FS43AlDQwnXegMvdy6pb-FHejY,284
|
|
381
383
|
invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py,sha256=NR2hvgsR555O6Szy4eGC_XpNT4VZo888lMp6faeXffA,294
|
|
382
384
|
invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py,sha256=NR2hvgsR555O6Szy4eGC_XpNT4VZo888lMp6faeXffA,294
|
|
@@ -392,6 +394,14 @@ invenio_app_ils/stats/file_download/os-v2/__init__.py,sha256=T0kcRAoEecatActm6Mv
|
|
|
392
394
|
invenio_app_ils/stats/file_download/os-v2/file-download-v1.json,sha256=TAz_srZZ7BhBHiQTuac-3NhbD1OraAnUYW9ZsneYWj4,1444
|
|
393
395
|
invenio_app_ils/stats/file_download/v7/__init__.py,sha256=T0kcRAoEecatActm6MvVlAWbHIQ7xq8D2vCE59ShWTI,287
|
|
394
396
|
invenio_app_ils/stats/file_download/v7/file-download-v1.json,sha256=JOfqa0HYysRL1-OcnrG4Ohhv39eML5qKVXswN7OYfE4,1383
|
|
397
|
+
invenio_app_ils/stats/templates/aggregations/__init__.py,sha256=u5NGrHHOqWBgFs2-igJenjaj33UGluHgkKYV2etwJ1E,242
|
|
398
|
+
invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py,sha256=Fae3O56C56coEeyOZqcW4Pr9p3anlR6C1MZidpF4ots,254
|
|
399
|
+
invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py,sha256=Fae3O56C56coEeyOZqcW4Pr9p3anlR6C1MZidpF4ots,254
|
|
400
|
+
invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json,sha256=YDDLh51xr-fEm3PMDka1DYyiZjvHQ8L76Qc8NQQl1AM,755
|
|
401
|
+
invenio_app_ils/stats/templates/events/__init__.py,sha256=vn0uewDZ-svfcjtL2Tmjh2qWdI8sLWyAgOmuEc30hwE,236
|
|
402
|
+
invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py,sha256=PoP04xZy8M3jLQjKdHg8CH_1uZCPeaE6vbgL5ciBmCU,249
|
|
403
|
+
invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py,sha256=PoP04xZy8M3jLQjKdHg8CH_1uZCPeaE6vbgL5ciBmCU,249
|
|
404
|
+
invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json,sha256=AyraC4_iFST-y1W8_zufUqDiLNj1Jl_BIxZRnhkPHqU,773
|
|
395
405
|
invenio_app_ils/templates/logged_out.html,sha256=T-zEwtIHQENkDwO9d5QmB7oNmCofq8DuClpg-ojPfoU,356
|
|
396
406
|
invenio_app_ils/templates/invenio_app_ils/mail/footer.html,sha256=tLIgLCHNfWZibDG-vf9C-APhxn5AGJhJzBRqpwMwh04,413
|
|
397
407
|
invenio_app_ils/templates/invenio_app_ils/notifications/footer.html,sha256=tLIgLCHNfWZibDG-vf9C-APhxn5AGJhJzBRqpwMwh04,413
|
|
@@ -445,10 +455,10 @@ invenio_app_ils/vocabularies/sources/__init__.py,sha256=EMLoLQGiq9_qoZ4lKqO_J0u2
|
|
|
445
455
|
invenio_app_ils/vocabularies/sources/base.py,sha256=kmNg85cjrxqc8VErFP2SUtlyo1PnmzOBQgfoSpfTPh4,1418
|
|
446
456
|
invenio_app_ils/vocabularies/sources/json.py,sha256=KGLTJ4AX8zEDdkpi3v92oHGs-h2dUzHbNPSg99-j8o0,1021
|
|
447
457
|
invenio_app_ils/vocabularies/sources/opendefinition.py,sha256=9zbRXuTr0i5lVLt596oUhsLQPiJVf9jiM9-C7T6zbXA,2151
|
|
448
|
-
invenio_app_ils-6.
|
|
449
|
-
invenio_app_ils-6.
|
|
450
|
-
invenio_app_ils-6.
|
|
451
|
-
invenio_app_ils-6.
|
|
452
|
-
invenio_app_ils-6.
|
|
453
|
-
invenio_app_ils-6.
|
|
454
|
-
invenio_app_ils-6.
|
|
458
|
+
invenio_app_ils-6.1.1.dist-info/licenses/AUTHORS.rst,sha256=BaXCGzdHCmiMOl4qtVlh1qrfy2ROMVOQp6ylzy1m0ww,212
|
|
459
|
+
invenio_app_ils-6.1.1.dist-info/licenses/LICENSE,sha256=9OdaPOAO1ZOJcRQ8BrGj7QAdaJc8SRSUgBtdom49MrI,1062
|
|
460
|
+
invenio_app_ils-6.1.1.dist-info/METADATA,sha256=WQMIQ4Em9Y-ocitjv3a7QiopaJFJfwlWZnr4MH6087o,18263
|
|
461
|
+
invenio_app_ils-6.1.1.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
|
|
462
|
+
invenio_app_ils-6.1.1.dist-info/entry_points.txt,sha256=L36OnFZlrAnCaQpXnWoLmYYJ1U6Y1K_TDUZB0nnWeO0,7748
|
|
463
|
+
invenio_app_ils-6.1.1.dist-info/top_level.txt,sha256=p-lnzfSHaDER0BHbQvDV6dvUW7_Q0prMDFaqPhBSK50,16
|
|
464
|
+
invenio_app_ils-6.1.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|