invenio-app-ils 6.1.1__tar.gz → 7.1.0__tar.gz
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-6.1.1 → invenio_app_ils-7.1.0}/CHANGES.rst +18 -1
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/PKG-INFO +20 -3
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/__init__.py +2 -2
- invenio_app_ils-7.1.0/invenio_app_ils/acquisition/indexer.py +72 -0
- {invenio_app_ils-6.1.1/invenio_app_ils/acquisition/mappings/v7 → invenio_app_ils-7.1.0/invenio_app_ils/acquisition/mappings/os-v2}/acq_orders/order-v1.0.0.json +5 -0
- invenio_app_ils-7.1.0/invenio_app_ils/acquisition/stats/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/acquisition/stats/views.py +82 -0
- invenio_app_ils-7.1.0/invenio_app_ils/circulation/errors.py +12 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/indexer.py +72 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/stats/api.py +1 -1
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/stats/views.py +57 -1
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/config.py +55 -1
- invenio_app_ils-7.1.0/invenio_app_ils/document_requests/indexer.py +121 -0
- {invenio_app_ils-6.1.1/invenio_app_ils/document_requests/mappings/v7 → invenio_app_ils-7.1.0/invenio_app_ils/document_requests/mappings/os-v2}/document_requests/document_request-v1.0.0.json +5 -0
- invenio_app_ils-7.1.0/invenio_app_ils/document_requests/stats/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/document_requests/stats/views.py +85 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ext.py +56 -2
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/permissions.py +3 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/event_builders.py +44 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/__init__.py +18 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/api.py +109 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/schemas.py +92 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/serializers/__init__.py +18 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/serializers/response.py +36 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/serializers/schema.py +33 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/histogram/views.py +34 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/processors.py +86 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/aggregations/loan_transitions/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/aggr-loan-transitions-v1.json +32 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/events/loan_transitions/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/__init__.py +8 -0
- invenio_app_ils-7.1.0/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/loan-transitions-v1.json +40 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/PKG-INFO +20 -3
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/SOURCES.txt +19 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/entry_points.txt +2 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/requires.txt +1 -1
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/setup.cfg +3 -1
- invenio_app_ils-6.1.1/invenio_app_ils/document_requests/indexer.py +0 -47
- invenio_app_ils-6.1.1/invenio_app_ils/stats/processors.py +0 -30
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/.editorconfig +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/.git-blame-ignore-revs +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/AUTHORS.rst +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/CONTRIBUTING.rst +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/INSTALL.rst +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/LICENSE +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/MANIFEST.in +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/README.rst +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/backend/Dockerfile +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/frontend/Dockerfile +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/frontend/conf.d/default.conf +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/frontend/nginx.conf +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/frontend/test.crt +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/frontend/test.key +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/lb/Dockerfile +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/lb/haproxy.cfg +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker/lb/haproxy_cert.pem +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker-compose.full.yml +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker-compose.yml +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/docker-services.yml +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/config.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/errors.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/ext.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/jsonresolvers/order_provider.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/loaders/jsonschemas/order.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1/invenio_app_ils/acquisition/mappings/os-v2 → invenio_app_ils-7.1.0/invenio_app_ils/acquisition/mappings/v7}/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/proxies.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/schemas/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/acquisition/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/assets/semantic-ui/less/theme.config +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/config.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/jsonresolvers/loan.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/base.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/bulk_extend.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_self_checkout.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_update_dates.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/notifications/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/notifications/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/notifications/messages.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/notifications/tasks.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/receivers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/serializers/csv.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/serializers/custom_fields.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/serializers/json.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/serializers/response.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/stats/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/tasks.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/bulk_extend.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/cancel.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkin.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkout.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/extend.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/overdue_reminder.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request_no_items.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/self_checkout.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/will_expire_in_reminder.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/transitions/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/transitions/transitions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/utils.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/circulation/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/cli.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/serializers/response.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/serializers/schema.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/tasks.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/closures/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/demo_data/documents.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/demo_data/items.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_patron.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_decline.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_provider.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1/invenio_app_ils/document_requests/mappings/os-v2 → invenio_app_ils-7.1.0/invenio_app_ils/document_requests/mappings/v7}/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/notifications/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/notifications/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/notifications/messages.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/schemas/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_accept.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_in_catalog.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_not_found.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_other.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_user_cancel.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/document_requests/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/document_circulation.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/document_eitem.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/document_item.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/document_relations.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/jsonresolvers/document_stock.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/loaders/jsonschemas/document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/schemas/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/documents/utils.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/jsonresolvers/eitem_document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/jsonresolvers/eitem_files.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/eitems/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/errors.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/facets.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/fetchers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/files/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/files/receivers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/files/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/config.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/errors.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/ext.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/loaders/jsonschemas/borrowing_request.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/notifications/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/notifications/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/notifications/messages.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/proxies.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/schemas/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/serializers/csv.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/serializers/custom_fields.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/serializers/json.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_accept.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_decline.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_request.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/ill/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/jsonresolvers/internal_location.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/internal_location.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/mappings/v7/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/schemas/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/internal_locations/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/jsonresolvers/item_document.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/jsonresolvers/item_internal_location.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/jsonresolvers/item_loan.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/loaders/jsonschemas/items.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/schemas/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/schemas/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/items/serializers/item.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/covers_builder.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/serializers/csv.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/serializers/custom_fields.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/literature/serializers/json.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/loaders/jsonschemas/location.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/mappings/v7/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/receivers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/schemas/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/locations/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/minters.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/backends/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/backends/mail.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/messages.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/models.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/tasks.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/notifications/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/anonymization.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/cli.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/mappings/v7/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/patrons/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/config.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/errors.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/ext.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/loaders/jsonschemas/provider.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/mappings/v7/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/proxies.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/schemas/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/providers/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/proxies.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/jsonresolvers/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/listeners.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/schemas/changed_by.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/schemas/identifiers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/schemas/preserve_cover_metadata.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/loaders/schemas/price.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/metadata_extensions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/permissions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/receivers.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/schemas/json.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/serializers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records_relations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records_relations/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records_relations/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records_relations/retriever.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/records_relations/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/relations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/relations/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/relations/nodes.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/search_permissions.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/jsonresolvers/series_relations.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/loaders/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/loaders/jsonschemas/series.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/schemas/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/schemas/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/series/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/signals.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/static/images/placeholder.png +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/static_pages/search_guide.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/file_download/v7/file-download-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/aggregations/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/events/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/templates/invenio_app_ils/mail/footer.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/templates/invenio_app_ils/notifications/footer.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/templates/logged_out.html +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/translations/.gitkeep +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/views.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/api.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/cli.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/acq_mediums.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/acq_order_line_purchase_types.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/acq_payment_modes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/acq_recipients.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/affiliation_identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/alternative_identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/alternative_title_types.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/author_identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/author_roles.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/author_types.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/conference_identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/countries.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/currencies.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/docreq_payment_method.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/docreq_request_type.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/document_identifiers_materials.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/document_requests_mediums.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/document_subjects.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/eitem_sources.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/ill_item_types.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/ill_payment_modes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/item_mediums.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/provider_types.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/series_identifier_schemes.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/series_url_access_restrictions.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/data/tags.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/indexer.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/jsonresolvers/licenses.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/schemas/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/schemas/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/search.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/sources/__init__.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/sources/base.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/sources/json.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/vocabularies/sources/opendefinition.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils/webpack.py +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/dependency_links.txt +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/not-zip-safe +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/invenio_app_ils.egg-info/top_level.txt +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/pyproject.toml +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/run-tests.sh +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/bootstrap +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/build_assets +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/celery +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/console +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/server +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/setup +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/scripts/update +0 -0
- {invenio_app_ils-6.1.1 → invenio_app_ils-7.1.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
..
|
|
3
|
-
Copyright (C) 2018-
|
|
3
|
+
Copyright (C) 2018-2026 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.
|
|
@@ -8,6 +8,23 @@
|
|
|
8
8
|
Changes
|
|
9
9
|
=======
|
|
10
10
|
|
|
11
|
+
Version 7.1.0 (released 2026-01-22)
|
|
12
|
+
|
|
13
|
+
- stats: add document request stats endpoint and extend document request index
|
|
14
|
+
- stats: fix Schema using deserialize to validate
|
|
15
|
+
- stats: add order stats endpoint and extend orders index
|
|
16
|
+
- stats: turn loan histogram endpoint into reusable component
|
|
17
|
+
|
|
18
|
+
Version 7.0.0 (released 2026-01-06)
|
|
19
|
+
|
|
20
|
+
- stats: generalize stat tracking loan extensions to track all transitions
|
|
21
|
+
- stats: raise error when loan is indexed while loan transition events index does not exits
|
|
22
|
+
- stats: add feature flag for extending record indices with stats
|
|
23
|
+
- stats: warn when loan gets indexed while loan-transitions index does not exist
|
|
24
|
+
- breaking change: global: update invenio-circulation
|
|
25
|
+
- breaking change: stats: add loan stats endpoint and extend loans index
|
|
26
|
+
- breaking change: stats: add stat to track loan extensions
|
|
27
|
+
|
|
11
28
|
Version 6.1.1 (released 2025-12-10)
|
|
12
29
|
|
|
13
30
|
- tests: move covers builder test into correct folder
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invenio-app-ils
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.1.0
|
|
4
4
|
Summary: Invenio Integrated Library System.
|
|
5
5
|
Home-page: https://github.com/inveniosoftware/invenio-app-ils
|
|
6
6
|
Author: CERN
|
|
@@ -39,7 +39,7 @@ Requires-Dist: invenio-records<4.0.0,>=3.0.2
|
|
|
39
39
|
Requires-Dist: invenio-files-rest<4.0.0,>=3.2.0
|
|
40
40
|
Requires-Dist: invenio-banners<6.0.0,>=5.0.0
|
|
41
41
|
Requires-Dist: invenio-pages<8.0.0,>=7.1.0
|
|
42
|
-
Requires-Dist: invenio-circulation<
|
|
42
|
+
Requires-Dist: invenio-circulation<5.0.0,>=4.0.0
|
|
43
43
|
Requires-Dist: invenio-opendefinition<3.0.0,>=2.0.0a2
|
|
44
44
|
Requires-Dist: invenio-pidrelations<2.0.0,>=1.0.0
|
|
45
45
|
Requires-Dist: invenio-stats<6.0.0,>=5.1.1
|
|
@@ -95,7 +95,7 @@ https://invenioils.docs.cern.ch
|
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
..
|
|
98
|
-
Copyright (C) 2018-
|
|
98
|
+
Copyright (C) 2018-2026 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,23 @@ https://invenioils.docs.cern.ch
|
|
|
103
103
|
Changes
|
|
104
104
|
=======
|
|
105
105
|
|
|
106
|
+
Version 7.1.0 (released 2026-01-22)
|
|
107
|
+
|
|
108
|
+
- stats: add document request stats endpoint and extend document request index
|
|
109
|
+
- stats: fix Schema using deserialize to validate
|
|
110
|
+
- stats: add order stats endpoint and extend orders index
|
|
111
|
+
- stats: turn loan histogram endpoint into reusable component
|
|
112
|
+
|
|
113
|
+
Version 7.0.0 (released 2026-01-06)
|
|
114
|
+
|
|
115
|
+
- stats: generalize stat tracking loan extensions to track all transitions
|
|
116
|
+
- stats: raise error when loan is indexed while loan transition events index does not exits
|
|
117
|
+
- stats: add feature flag for extending record indices with stats
|
|
118
|
+
- stats: warn when loan gets indexed while loan-transitions index does not exist
|
|
119
|
+
- breaking change: global: update invenio-circulation
|
|
120
|
+
- breaking change: stats: add loan stats endpoint and extend loans index
|
|
121
|
+
- breaking change: stats: add stat to track loan extensions
|
|
122
|
+
|
|
106
123
|
Version 6.1.1 (released 2025-12-10)
|
|
107
124
|
|
|
108
125
|
- tests: move covers builder test into correct folder
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2018-
|
|
3
|
+
# Copyright (C) 2018-2026 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.
|
|
7
7
|
|
|
8
8
|
"""invenio-app-ils."""
|
|
9
9
|
|
|
10
|
-
__version__ = "
|
|
10
|
+
__version__ = "7.1.0"
|
|
11
11
|
|
|
12
12
|
__all__ = ("__version__",)
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
"""Order indexer APIs."""
|
|
9
|
+
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
|
|
12
|
+
from invenio_search import current_search_client
|
|
13
|
+
|
|
14
|
+
from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
|
|
15
|
+
from invenio_app_ils.proxies import current_app_ils
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def index_stats_fields_for_order(order_dict):
|
|
19
|
+
"""Indexer hook to modify the order record dict before indexing."""
|
|
20
|
+
|
|
21
|
+
# This is done through the hook and not through an indexer class,
|
|
22
|
+
# as we need access to the `_created` field
|
|
23
|
+
|
|
24
|
+
# Only calculate stats if order is received
|
|
25
|
+
if not order_dict.get("received_date"):
|
|
26
|
+
return
|
|
27
|
+
|
|
28
|
+
stats = {}
|
|
29
|
+
|
|
30
|
+
received_date = datetime.fromisoformat(order_dict["received_date"]).date()
|
|
31
|
+
creation_date = datetime.fromisoformat(order_dict["_created"]).date()
|
|
32
|
+
|
|
33
|
+
# Calculate order_processing_time
|
|
34
|
+
order_processing_time = (received_date - creation_date).days
|
|
35
|
+
stats["order_processing_time"] = order_processing_time if order_processing_time >= 0 else None
|
|
36
|
+
|
|
37
|
+
# Find related document request if any
|
|
38
|
+
order_pid = order_dict.get("pid")
|
|
39
|
+
if order_pid:
|
|
40
|
+
doc_req_search_cls = current_app_ils.document_request_search_cls
|
|
41
|
+
search_body = {
|
|
42
|
+
"query": {
|
|
43
|
+
"bool": {
|
|
44
|
+
"must": [
|
|
45
|
+
{"term": {"physical_item_provider.pid": order_pid}},
|
|
46
|
+
{"term": {"physical_item_provider.pid_type": ORDER_PID_TYPE}},
|
|
47
|
+
],
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"size": 1,
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
search_result = current_search_client.search(
|
|
54
|
+
index=doc_req_search_cls.Meta.index, body=search_body
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
hits = search_result["hits"]["hits"]
|
|
58
|
+
if len(hits) > 0:
|
|
59
|
+
doc_request = hits[0]["_source"]
|
|
60
|
+
doc_req_creation_date = datetime.fromisoformat(
|
|
61
|
+
doc_request["_created"]
|
|
62
|
+
).date()
|
|
63
|
+
|
|
64
|
+
order_dict["doc_request"] = {}
|
|
65
|
+
|
|
66
|
+
# Calculate document_request_waiting_time
|
|
67
|
+
waiting_time = (received_date - doc_req_creation_date).days
|
|
68
|
+
stats["document_request_waiting_time"] = (
|
|
69
|
+
waiting_time if waiting_time >= 0 else None
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
order_dict["stats"] = stats
|
|
@@ -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
|
+
"""Invenio App ILS acquisition stats module."""
|
|
@@ -0,0 +1,82 @@
|
|
|
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
|
+
"""Invenio App ILS acquisition stats views."""
|
|
9
|
+
|
|
10
|
+
from flask import Blueprint, request
|
|
11
|
+
from invenio_records_rest.query import default_search_factory
|
|
12
|
+
from invenio_rest import ContentNegotiatedMethodView
|
|
13
|
+
from marshmallow.exceptions import ValidationError
|
|
14
|
+
|
|
15
|
+
from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
|
|
16
|
+
from invenio_app_ils.acquisition.proxies import current_ils_acq
|
|
17
|
+
from invenio_app_ils.errors import InvalidParameterError
|
|
18
|
+
from invenio_app_ils.permissions import need_permissions
|
|
19
|
+
from invenio_app_ils.stats.histogram import (
|
|
20
|
+
HistogramParamsSchema,
|
|
21
|
+
create_histogram_view,
|
|
22
|
+
get_record_statistics,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def create_acquisition_stats_blueprint(app):
|
|
27
|
+
"""Add statistics views to the blueprint."""
|
|
28
|
+
blueprint = Blueprint("invenio_app_ils_acquisition_stats", __name__, url_prefix="")
|
|
29
|
+
|
|
30
|
+
create_histogram_view(
|
|
31
|
+
blueprint, app, ORDER_PID_TYPE, OrderHistogramResource, "/acquisition"
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
return blueprint
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class OrderHistogramResource(ContentNegotiatedMethodView):
|
|
38
|
+
"""Order stats resource."""
|
|
39
|
+
|
|
40
|
+
view_name = "order_histogram"
|
|
41
|
+
|
|
42
|
+
def __init__(self, serializers, ctx, *args, **kwargs):
|
|
43
|
+
"""Constructor."""
|
|
44
|
+
super().__init__(serializers, *args, **kwargs)
|
|
45
|
+
for key, value in ctx.items():
|
|
46
|
+
setattr(self, key, value)
|
|
47
|
+
|
|
48
|
+
@need_permissions("stats-orders")
|
|
49
|
+
def get(self, **kwargs):
|
|
50
|
+
"""Get order statistics."""
|
|
51
|
+
|
|
52
|
+
order_date_fields = [
|
|
53
|
+
"order_date",
|
|
54
|
+
"expected_delivery_date",
|
|
55
|
+
"received_date",
|
|
56
|
+
"_created",
|
|
57
|
+
"_updated",
|
|
58
|
+
]
|
|
59
|
+
|
|
60
|
+
schema = HistogramParamsSchema(order_date_fields)
|
|
61
|
+
try:
|
|
62
|
+
parsed_args = schema.load(request.args.to_dict())
|
|
63
|
+
except ValidationError as e:
|
|
64
|
+
raise InvalidParameterError(description=e.messages) from e
|
|
65
|
+
|
|
66
|
+
# Construct search to allow for filtering with the q parameter
|
|
67
|
+
search_cls = current_ils_acq.order_search_cls
|
|
68
|
+
search = search_cls()
|
|
69
|
+
search, _ = default_search_factory(self, search)
|
|
70
|
+
|
|
71
|
+
aggregation_buckets = get_record_statistics(
|
|
72
|
+
order_date_fields,
|
|
73
|
+
search,
|
|
74
|
+
parsed_args["group_by"],
|
|
75
|
+
parsed_args["metrics"],
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
response = {
|
|
79
|
+
"buckets": aggregation_buckets,
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return self.make_response(response, 200)
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
|
6
|
+
# it under the terms of the MIT License; see LICENSE file for more details.
|
|
7
|
+
|
|
8
|
+
"""Circulation exceptions."""
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class LoanTransitionEventsIndexMissingError(Exception):
|
|
12
|
+
"""Error raised when the loan transition events index is missing."""
|
|
@@ -15,7 +15,9 @@ from invenio_circulation.pidstore.pids import CIRCULATION_LOAN_PID_TYPE
|
|
|
15
15
|
from invenio_circulation.proxies import current_circulation
|
|
16
16
|
from invenio_indexer.api import RecordIndexer
|
|
17
17
|
from invenio_pidstore.errors import PIDDeletedError
|
|
18
|
+
from invenio_search import current_search_client
|
|
18
19
|
|
|
20
|
+
from invenio_app_ils.circulation.errors import LoanTransitionEventsIndexMissingError
|
|
19
21
|
from invenio_app_ils.circulation.utils import resolve_item_from_loan
|
|
20
22
|
from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE
|
|
21
23
|
from invenio_app_ils.indexer import ReferencedRecordsIndexer
|
|
@@ -97,3 +99,73 @@ def index_extra_fields_for_loan(loan_dict):
|
|
|
97
99
|
|
|
98
100
|
can_circulate_items_count = document["circulation"]["can_circulate_items_count"]
|
|
99
101
|
loan_dict["can_circulate_items_count"] = can_circulate_items_count
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def index_stats_fields_for_loan(loan_dict):
|
|
105
|
+
"""Indexer hook to modify the loan record dict before indexing"""
|
|
106
|
+
|
|
107
|
+
creation_date = datetime.fromisoformat(loan_dict["_created"]).date()
|
|
108
|
+
start_date = (
|
|
109
|
+
datetime.fromisoformat(loan_dict["start_date"]).date()
|
|
110
|
+
if loan_dict.get("start_date")
|
|
111
|
+
else None
|
|
112
|
+
)
|
|
113
|
+
end_date = (
|
|
114
|
+
datetime.fromisoformat(loan_dict["end_date"]).date()
|
|
115
|
+
if loan_dict.get("end_date")
|
|
116
|
+
else None
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
# Collect extra information relevant for stats
|
|
120
|
+
stats = {}
|
|
121
|
+
|
|
122
|
+
# Time ranges in days
|
|
123
|
+
if start_date and end_date:
|
|
124
|
+
loan_duration = (end_date - start_date).days
|
|
125
|
+
stats["loan_duration"] = loan_duration
|
|
126
|
+
|
|
127
|
+
if creation_date and start_date:
|
|
128
|
+
waiting_time = (start_date - creation_date).days
|
|
129
|
+
stats["waiting_time"] = waiting_time if waiting_time >= 0 else None
|
|
130
|
+
|
|
131
|
+
# Document availability during loan request
|
|
132
|
+
stat_events_index_name = "events-stats-loan-transitions"
|
|
133
|
+
if not current_search_client.indices.exists(index=stat_events_index_name):
|
|
134
|
+
raise LoanTransitionEventsIndexMissingError()
|
|
135
|
+
|
|
136
|
+
loan_pid = loan_dict["pid"]
|
|
137
|
+
search_body = {
|
|
138
|
+
"query": {
|
|
139
|
+
"bool": {
|
|
140
|
+
"must": [
|
|
141
|
+
{"term": {"trigger": "request"}},
|
|
142
|
+
{"term": {"pid_value": loan_pid}},
|
|
143
|
+
],
|
|
144
|
+
}
|
|
145
|
+
},
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
search_result = current_search_client.search(
|
|
149
|
+
index=stat_events_index_name, body=search_body
|
|
150
|
+
)
|
|
151
|
+
hits = search_result["hits"]["hits"]
|
|
152
|
+
if len(hits) == 1:
|
|
153
|
+
request_transition_event = hits[0]["_source"]
|
|
154
|
+
available_items_during_request_count = request_transition_event[
|
|
155
|
+
"extra_data"
|
|
156
|
+
]["available_items_during_request_count"]
|
|
157
|
+
stats["available_items_during_request"] = (
|
|
158
|
+
available_items_during_request_count > 0
|
|
159
|
+
)
|
|
160
|
+
elif len(hits) > 1:
|
|
161
|
+
raise ValueError(
|
|
162
|
+
f"Multiple request transition events for loan {loan_pid}."
|
|
163
|
+
"Expected zero or one."
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
# Make use of the `extra_data` property as loans are part of `invenio-circulation`,
|
|
168
|
+
# which do not expose the `stats` property directly
|
|
169
|
+
if not "extra_data" in loan_dict:
|
|
170
|
+
loan_dict["extra_data"] = {}
|
|
171
|
+
loan_dict["extra_data"]["stats"] = stats
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2019 CERN.
|
|
3
|
+
# Copyright (C) 2019-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.
|
|
@@ -10,15 +10,25 @@
|
|
|
10
10
|
from datetime import datetime
|
|
11
11
|
|
|
12
12
|
from flask import Blueprint, current_app, request
|
|
13
|
+
from invenio_circulation.pidstore.pids import CIRCULATION_LOAN_PID_TYPE
|
|
14
|
+
from invenio_circulation.proxies import current_circulation
|
|
13
15
|
from invenio_pidstore import current_pidstore
|
|
16
|
+
from invenio_records_rest.query import default_search_factory
|
|
14
17
|
from invenio_records_rest.utils import obj_or_import_string
|
|
15
18
|
from invenio_rest import ContentNegotiatedMethodView
|
|
19
|
+
from marshmallow.exceptions import ValidationError
|
|
16
20
|
|
|
17
21
|
from invenio_app_ils.circulation.stats.api import fetch_most_loaned_documents
|
|
22
|
+
from invenio_app_ils.circulation.views import IlsCirculationResource
|
|
18
23
|
from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
|
|
19
24
|
from invenio_app_ils.documents.api import DOCUMENT_PID_FETCHER, DOCUMENT_PID_TYPE
|
|
20
25
|
from invenio_app_ils.errors import InvalidParameterError
|
|
21
26
|
from invenio_app_ils.permissions import need_permissions
|
|
27
|
+
from invenio_app_ils.stats.histogram import (
|
|
28
|
+
HistogramParamsSchema,
|
|
29
|
+
create_histogram_view,
|
|
30
|
+
get_record_statistics,
|
|
31
|
+
)
|
|
22
32
|
|
|
23
33
|
|
|
24
34
|
def create_most_loaned_documents_view(blueprint, app):
|
|
@@ -51,6 +61,13 @@ def create_circulation_stats_blueprint(app):
|
|
|
51
61
|
blueprint = Blueprint("invenio_app_ils_circulation_stats", __name__, url_prefix="")
|
|
52
62
|
|
|
53
63
|
create_most_loaned_documents_view(blueprint, app)
|
|
64
|
+
create_histogram_view(
|
|
65
|
+
blueprint,
|
|
66
|
+
app,
|
|
67
|
+
CIRCULATION_LOAN_PID_TYPE,
|
|
68
|
+
LoanHistogramResource,
|
|
69
|
+
"/circulation/loans",
|
|
70
|
+
)
|
|
54
71
|
|
|
55
72
|
return blueprint
|
|
56
73
|
|
|
@@ -131,3 +148,42 @@ class MostLoanedDocumentsResource(ContentNegotiatedMethodView):
|
|
|
131
148
|
pid_fetcher=current_pidstore.fetchers[DOCUMENT_PID_FETCHER],
|
|
132
149
|
search_result=most_loaned_documents,
|
|
133
150
|
)
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class LoanHistogramResource(IlsCirculationResource):
|
|
154
|
+
"""Loan stats resource."""
|
|
155
|
+
|
|
156
|
+
view_name = "loan_histogram"
|
|
157
|
+
|
|
158
|
+
@need_permissions("stats-loans")
|
|
159
|
+
def get(self, **kwargs):
|
|
160
|
+
"""Get loan statistics."""
|
|
161
|
+
|
|
162
|
+
loan_cls = current_circulation.loan_record_cls
|
|
163
|
+
loan_date_fields = (
|
|
164
|
+
loan_cls.DATE_FIELDS + loan_cls.DATETIME_FIELDS + ["_created"]
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
schema = HistogramParamsSchema(loan_date_fields)
|
|
168
|
+
try:
|
|
169
|
+
parsed_args = schema.load(request.args.to_dict())
|
|
170
|
+
except ValidationError as e:
|
|
171
|
+
raise InvalidParameterError(description=e.messages) from e
|
|
172
|
+
|
|
173
|
+
# Construct search to allow for filtering with the q parameter
|
|
174
|
+
search_cls = current_circulation.loan_search_cls
|
|
175
|
+
search = search_cls()
|
|
176
|
+
search, _ = default_search_factory(self, search)
|
|
177
|
+
|
|
178
|
+
aggregation_buckets = get_record_statistics(
|
|
179
|
+
loan_date_fields,
|
|
180
|
+
search,
|
|
181
|
+
parsed_args["group_by"],
|
|
182
|
+
parsed_args["metrics"],
|
|
183
|
+
)
|
|
184
|
+
|
|
185
|
+
response = {
|
|
186
|
+
"buckets": aggregation_buckets,
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return self.make_response(response, 200)
|
|
@@ -43,6 +43,7 @@ from invenio_app_ils.locations.indexer import LocationIndexer
|
|
|
43
43
|
from invenio_app_ils.patrons.indexer import PatronIndexer
|
|
44
44
|
from invenio_app_ils.series.indexer import SeriesIndexer
|
|
45
45
|
from invenio_app_ils.stats.event_builders import ils_record_changed_event_builder
|
|
46
|
+
from invenio_app_ils.stats.processors import LoansEventsIndexer
|
|
46
47
|
from invenio_app_ils.vocabularies.indexer import VocabularyIndexer
|
|
47
48
|
|
|
48
49
|
from .document_requests.api import (
|
|
@@ -244,13 +245,21 @@ CELERY_BEAT_SCHEDULE = {
|
|
|
244
245
|
"ils-record-changes-updates",
|
|
245
246
|
"ils-record-changes-insertions",
|
|
246
247
|
"ils-record-changes-deletions",
|
|
248
|
+
"loan-transitions",
|
|
247
249
|
)
|
|
248
250
|
],
|
|
249
251
|
},
|
|
250
252
|
"stats-aggregate-events": {
|
|
251
253
|
"task": "invenio_stats.tasks.aggregate_events",
|
|
252
254
|
"schedule": timedelta(hours=3),
|
|
253
|
-
"args": [
|
|
255
|
+
"args": [
|
|
256
|
+
(
|
|
257
|
+
"record-view-agg",
|
|
258
|
+
"file-download-agg",
|
|
259
|
+
"ils-record-changes-agg",
|
|
260
|
+
"loan-transitions-agg",
|
|
261
|
+
)
|
|
262
|
+
],
|
|
254
263
|
},
|
|
255
264
|
"clean_locations_past_closures_exceptions": {
|
|
256
265
|
"task": (
|
|
@@ -983,6 +992,25 @@ STATS_EVENTS = {
|
|
|
983
992
|
"suffix": "%Y",
|
|
984
993
|
},
|
|
985
994
|
},
|
|
995
|
+
# The following events are used to count loan state transitions.
|
|
996
|
+
# Additionally, some transitions, e.g. "request", are used to store extra data,
|
|
997
|
+
# like the number of available items when a loan is requested.
|
|
998
|
+
# The loan indexer then later queries those events and adds the information to the loan.
|
|
999
|
+
"loan-transitions": {
|
|
1000
|
+
"signal": "invenio_circulation.signals.loan_state_changed",
|
|
1001
|
+
"templates": "invenio_app_ils.stats.templates.events.loan_transitions",
|
|
1002
|
+
"event_builders": [
|
|
1003
|
+
"invenio_app_ils.stats.event_builders.loan_transition_event_builder",
|
|
1004
|
+
],
|
|
1005
|
+
"cls": LoansEventsIndexer,
|
|
1006
|
+
"params": {
|
|
1007
|
+
"preprocessors": [
|
|
1008
|
+
"invenio_app_ils.stats.processors.add_loan_transition_unique_id",
|
|
1009
|
+
],
|
|
1010
|
+
"double_click_window": 0,
|
|
1011
|
+
"suffix": "%Y",
|
|
1012
|
+
},
|
|
1013
|
+
},
|
|
986
1014
|
}
|
|
987
1015
|
|
|
988
1016
|
STATS_AGGREGATIONS = {
|
|
@@ -1042,6 +1070,19 @@ STATS_AGGREGATIONS = {
|
|
|
1042
1070
|
query_modifiers=[],
|
|
1043
1071
|
),
|
|
1044
1072
|
),
|
|
1073
|
+
"loan-transitions-agg": dict(
|
|
1074
|
+
templates="invenio_app_ils.stats.templates.aggregations.loan_transitions",
|
|
1075
|
+
cls=StatAggregator,
|
|
1076
|
+
params=dict(
|
|
1077
|
+
event="loan-transitions",
|
|
1078
|
+
field="trigger",
|
|
1079
|
+
interval="day",
|
|
1080
|
+
index_interval="year",
|
|
1081
|
+
copy_fields=dict(),
|
|
1082
|
+
metric_fields=dict(),
|
|
1083
|
+
query_modifiers=[],
|
|
1084
|
+
),
|
|
1085
|
+
),
|
|
1045
1086
|
}
|
|
1046
1087
|
|
|
1047
1088
|
STATS_QUERIES = {
|
|
@@ -1116,6 +1157,18 @@ STATS_QUERIES = {
|
|
|
1116
1157
|
aggregated_fields=["user_id"],
|
|
1117
1158
|
),
|
|
1118
1159
|
),
|
|
1160
|
+
"loan-transitions": dict(
|
|
1161
|
+
cls=DateHistogramQuery,
|
|
1162
|
+
permission_factory=backoffice_read_permission,
|
|
1163
|
+
params=dict(
|
|
1164
|
+
index="stats-loan-transitions",
|
|
1165
|
+
copy_fields=dict(),
|
|
1166
|
+
required_filters=dict(trigger="trigger"),
|
|
1167
|
+
metric_fields=dict(
|
|
1168
|
+
count=("sum", "count", {}),
|
|
1169
|
+
),
|
|
1170
|
+
),
|
|
1171
|
+
),
|
|
1119
1172
|
}
|
|
1120
1173
|
|
|
1121
1174
|
# List of available vocabularies
|
|
@@ -1189,6 +1242,7 @@ DB_VERSIONING_USER_MODEL = None
|
|
|
1189
1242
|
|
|
1190
1243
|
# Feature Toggles
|
|
1191
1244
|
ILS_SELF_CHECKOUT_ENABLED = False
|
|
1245
|
+
ILS_EXTEND_INDICES_WITH_STATS_ENABLED = False
|
|
1192
1246
|
|
|
1193
1247
|
# Use default frontpage
|
|
1194
1248
|
THEME_FRONTPAGE = False
|