invenio-app-ils 7.0.0__tar.gz → 7.1.1__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-7.0.0 → invenio_app_ils-7.1.1}/CHANGES.rst +11 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/PKG-INFO +12 -1
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-services.yml +14 -14
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/__init__.py +1 -1
- invenio_app_ils-7.1.1/invenio_app_ils/acquisition/indexer.py +72 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/acquisition/mappings/v7 → invenio_app_ils-7.1.1/invenio_app_ils/acquisition/mappings/os-v2}/acq_orders/order-v1.0.0.json +5 -0
- invenio_app_ils-7.1.1/invenio_app_ils/acquisition/stats/__init__.py +8 -0
- invenio_app_ils-7.1.1/invenio_app_ils/acquisition/stats/views.py +82 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/indexer.py +2 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +3 -1
- invenio_app_ils-7.1.1/invenio_app_ils/circulation/stats/api.py +51 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/stats/views.py +14 -29
- invenio_app_ils-7.1.1/invenio_app_ils/document_requests/indexer.py +121 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/document_requests/mappings/v7 → invenio_app_ils-7.1.1/invenio_app_ils/document_requests/mappings/os-v2}/document_requests/document_request-v1.0.0.json +5 -0
- invenio_app_ils-7.1.1/invenio_app_ils/document_requests/stats/__init__.py +8 -0
- invenio_app_ils-7.1.1/invenio_app_ils/document_requests/stats/views.py +85 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ext.py +49 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/permissions.py +2 -0
- invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/__init__.py +18 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/api.py +8 -50
- {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/schemas.py +11 -29
- invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/serializers/__init__.py +18 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/serializers/response.py +3 -4
- {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/serializers/schema.py +1 -1
- invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/views.py +34 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/PKG-INFO +12 -1
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/SOURCES.txt +12 -4
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/entry_points.txt +2 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/setup.cfg +2 -0
- invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats/serializers/__init__.py +0 -13
- invenio_app_ils-7.0.0/invenio_app_ils/document_requests/indexer.py +0 -47
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/.editorconfig +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/.git-blame-ignore-revs +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/AUTHORS.rst +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/CONTRIBUTING.rst +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/INSTALL.rst +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/LICENSE +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/MANIFEST.in +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/README.rst +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/backend/Dockerfile +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/Dockerfile +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/conf.d/default.conf +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/nginx.conf +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/test.crt +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/test.key +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/Dockerfile +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/haproxy.cfg +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/haproxy_cert.pem +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-compose.full.yml +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-compose.yml +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/config.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/errors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/ext.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/order_provider.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/jsonschemas/order.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/acquisition/mappings/os-v2 → invenio_app_ils-7.1.1/invenio_app_ils/acquisition/mappings/v7}/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/proxies.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/schemas/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/assets/semantic-ui/less/theme.config +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/config.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/errors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/jsonresolvers/loan.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/base.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/bulk_extend.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_self_checkout.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_update_dates.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/messages.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/tasks.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/receivers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/csv.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/custom_fields.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/json.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/response.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/stats/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/tasks.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/bulk_extend.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/cancel.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkin.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkout.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/extend.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/overdue_reminder.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request_no_items.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/self_checkout.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/will_expire_in_reminder.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/transitions/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/transitions/transitions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/utils.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/cli.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/response.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/schema.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/tasks.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/config.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/demo_data/documents.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/demo_data/items.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/document_request_document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/document_request_patron.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_decline.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_provider.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0/invenio_app_ils/document_requests/mappings/os-v2 → invenio_app_ils-7.1.1/invenio_app_ils/document_requests/mappings/v7}/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/messages.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/schemas/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_accept.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_in_catalog.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_not_found.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_other.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_user_cancel.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_circulation.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_eitem.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_item.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_relations.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_stock.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/jsonschemas/document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/utils.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/eitem_document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/eitem_files.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/errors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/facets.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/fetchers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/receivers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/config.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/errors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/ext.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/borrowing_request.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/messages.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/proxies.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/schemas/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/csv.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/custom_fields.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/json.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_accept.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_decline.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_request.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/jsonresolvers/internal_location.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/jsonschemas/internal_location.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/v7/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/schemas/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_document.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_internal_location.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_loan.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/jsonschemas/items.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/serializers/item.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/covers_builder.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/csv.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/custom_fields.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/json.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/jsonschemas/location.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/v7/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/receivers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/schemas/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/minters.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/backends/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/backends/mail.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/messages.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/models.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/tasks.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/anonymization.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/cli.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/v7/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/config.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/errors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/ext.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/jsonschemas/provider.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/v7/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/proxies.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/schemas/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/proxies.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/jsonresolvers/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/listeners.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/changed_by.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/identifiers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/preserve_cover_metadata.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/price.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/metadata_extensions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/permissions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/receivers.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/schemas/json.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/serializers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/retriever.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/nodes.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/search_permissions.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/jsonresolvers/series_relations.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/jsonschemas/series.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/signals.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/static/images/placeholder.png +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/static_pages/search_guide.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/event_builders.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/v7/file-download-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/processors.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/aggr-loan-transitions-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/loan-transitions-v1.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/invenio_app_ils/mail/footer.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/invenio_app_ils/notifications/footer.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/logged_out.html +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/translations/.gitkeep +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/views.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/api.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/cli.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_mediums.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_order_line_purchase_types.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_payment_modes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_recipients.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/affiliation_identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/alternative_identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/alternative_title_types.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_roles.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_types.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/conference_identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/countries.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/currencies.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/docreq_payment_method.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/docreq_request_type.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_identifiers_materials.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_requests_mediums.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_subjects.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/eitem_sources.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/ill_item_types.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/ill_payment_modes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/item_mediums.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/provider_types.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/series_identifier_schemes.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/series_url_access_restrictions.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/tags.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/indexer.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/jsonresolvers/licenses.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/schemas/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/schemas/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/search.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/__init__.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/base.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/json.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/opendefinition.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/webpack.py +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/dependency_links.txt +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/not-zip-safe +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/requires.txt +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/top_level.txt +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/pyproject.toml +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/run-tests.sh +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/bootstrap +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/build_assets +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/celery +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/console +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/server +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/setup +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/update +0 -0
- {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/setup.py +0 -0
|
@@ -8,6 +8,17 @@
|
|
|
8
8
|
Changes
|
|
9
9
|
=======
|
|
10
10
|
|
|
11
|
+
Version 7.1.1 (released 2026-02-02)
|
|
12
|
+
|
|
13
|
+
- fix(checkout): explicitly set transaction date on loan checkout
|
|
14
|
+
|
|
15
|
+
Version 7.1.0 (released 2026-01-22)
|
|
16
|
+
|
|
17
|
+
- stats: add document request stats endpoint and extend document request index
|
|
18
|
+
- stats: fix Schema using deserialize to validate
|
|
19
|
+
- stats: add order stats endpoint and extend orders index
|
|
20
|
+
- stats: turn loan histogram endpoint into reusable component
|
|
21
|
+
|
|
11
22
|
Version 7.0.0 (released 2026-01-06)
|
|
12
23
|
|
|
13
24
|
- stats: generalize stat tracking loan extensions to track all transitions
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invenio-app-ils
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.1.1
|
|
4
4
|
Summary: Invenio Integrated Library System.
|
|
5
5
|
Home-page: https://github.com/inveniosoftware/invenio-app-ils
|
|
6
6
|
Author: CERN
|
|
@@ -103,6 +103,17 @@ https://invenioils.docs.cern.ch
|
|
|
103
103
|
Changes
|
|
104
104
|
=======
|
|
105
105
|
|
|
106
|
+
Version 7.1.1 (released 2026-02-02)
|
|
107
|
+
|
|
108
|
+
- fix(checkout): explicitly set transaction date on loan checkout
|
|
109
|
+
|
|
110
|
+
Version 7.1.0 (released 2026-01-22)
|
|
111
|
+
|
|
112
|
+
- stats: add document request stats endpoint and extend document request index
|
|
113
|
+
- stats: fix Schema using deserialize to validate
|
|
114
|
+
- stats: add order stats endpoint and extend orders index
|
|
115
|
+
- stats: turn loan histogram endpoint into reusable component
|
|
116
|
+
|
|
106
117
|
Version 7.0.0 (released 2026-01-06)
|
|
107
118
|
|
|
108
119
|
- stats: generalize stat tracking loan extensions to track all transitions
|
|
@@ -14,7 +14,7 @@ services:
|
|
|
14
14
|
- ENVIRONMENT=DEV
|
|
15
15
|
image: invenio_app_ils-backend
|
|
16
16
|
ports:
|
|
17
|
-
- "5000"
|
|
17
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5000:5000"
|
|
18
18
|
environment:
|
|
19
19
|
- "INVENIO_ACCOUNTS_SESSION_REDIS_URL=redis://cache:6379/1"
|
|
20
20
|
- "INVENIO_BROKER_URL=amqp://guest:guest@mq:5672/"
|
|
@@ -34,20 +34,20 @@ services:
|
|
|
34
34
|
dockerfile: ./docker/frontend/Dockerfile
|
|
35
35
|
image: invenio_app_ils-frontend
|
|
36
36
|
ports:
|
|
37
|
-
- "80"
|
|
38
|
-
- "443"
|
|
37
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:80:80"
|
|
38
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:443:443"
|
|
39
39
|
lb:
|
|
40
40
|
build: ./docker/lb/
|
|
41
41
|
image: invenio_app_ils-lb
|
|
42
42
|
ports:
|
|
43
|
-
- "80:80"
|
|
44
|
-
- "443:443"
|
|
45
|
-
- "8080:8080"
|
|
43
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:80:80"
|
|
44
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:443:443"
|
|
45
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:8080:8080"
|
|
46
46
|
cache:
|
|
47
47
|
image: redis:6
|
|
48
48
|
read_only: true
|
|
49
49
|
ports:
|
|
50
|
-
- "6379:6379"
|
|
50
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:6379:6379"
|
|
51
51
|
db:
|
|
52
52
|
image: postgres:14
|
|
53
53
|
environment:
|
|
@@ -55,12 +55,12 @@ services:
|
|
|
55
55
|
- "POSTGRES_PASSWORD=psw"
|
|
56
56
|
- "POSTGRES_DB=ils"
|
|
57
57
|
ports:
|
|
58
|
-
- "5432:5432"
|
|
58
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5432:5432"
|
|
59
59
|
mq:
|
|
60
60
|
image: rabbitmq:3-management
|
|
61
61
|
ports:
|
|
62
|
-
- "15672:15672"
|
|
63
|
-
- "5672:5672"
|
|
62
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:15672:15672"
|
|
63
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5672:5672"
|
|
64
64
|
search:
|
|
65
65
|
image: opensearchproject/opensearch::3.2.0
|
|
66
66
|
environment:
|
|
@@ -75,12 +75,12 @@ services:
|
|
|
75
75
|
hard: -1
|
|
76
76
|
mem_limit: 1g
|
|
77
77
|
ports:
|
|
78
|
-
- "9200:9200"
|
|
79
|
-
- "9300:9300"
|
|
78
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:9200:9200"
|
|
79
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:9300:9300"
|
|
80
80
|
opensearch-dashboards:
|
|
81
81
|
image: opensearchproject/opensearch-dashboards:3.2.0
|
|
82
82
|
ports:
|
|
83
|
-
- "5601:5601"
|
|
83
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5601:5601"
|
|
84
84
|
expose:
|
|
85
85
|
- "5601"
|
|
86
86
|
environment:
|
|
@@ -91,4 +91,4 @@ services:
|
|
|
91
91
|
image: mher/flower:0.9.7
|
|
92
92
|
command: --broker=amqp://guest:guest@mq:5672/ --broker_api=http://guest:guest@mq:15672/api/
|
|
93
93
|
ports:
|
|
94
|
-
- "5555:5555"
|
|
94
|
+
- "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5555:5555"
|
|
@@ -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)
|
|
@@ -164,6 +164,8 @@ def index_stats_fields_for_loan(loan_dict):
|
|
|
164
164
|
)
|
|
165
165
|
|
|
166
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
|
|
167
169
|
if not "extra_data" in loan_dict:
|
|
168
170
|
loan_dict["extra_data"] = {}
|
|
169
171
|
loan_dict["extra_data"]["stats"] = stats
|
|
@@ -11,7 +11,7 @@ import arrow
|
|
|
11
11
|
from flask import current_app
|
|
12
12
|
from invenio_circulation.records.loaders.schemas.json import (
|
|
13
13
|
DateString,
|
|
14
|
-
LoanItemPIDSchemaV1,
|
|
14
|
+
LoanItemPIDSchemaV1, DateTimeString, set_missing_transaction_date,
|
|
15
15
|
)
|
|
16
16
|
from marshmallow import ValidationError, fields, post_load, validates
|
|
17
17
|
|
|
@@ -28,6 +28,8 @@ class LoanCheckoutSchemaV1(LoanBaseSchemaV1):
|
|
|
28
28
|
end_date = DateString()
|
|
29
29
|
force = fields.Bool(load_default=False)
|
|
30
30
|
|
|
31
|
+
transaction_date = DateTimeString(missing=set_missing_transaction_date)
|
|
32
|
+
|
|
31
33
|
@validates("force")
|
|
32
34
|
def validate_force(self, value, **kwargs):
|
|
33
35
|
"""Validate that only librarian can perform a force checkout."""
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2019-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
|
+
"""APIs for ILS circulation statistics."""
|
|
9
|
+
|
|
10
|
+
from invenio_app_ils.circulation.search import get_most_loaned_documents
|
|
11
|
+
from invenio_app_ils.proxies import current_app_ils
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def fetch_most_loaned_documents(from_date, to_date, bucket_size):
|
|
15
|
+
"""Fetch the documents with the most loans within the date interval."""
|
|
16
|
+
# Create loans aggregation
|
|
17
|
+
most_loaned = get_most_loaned_documents(from_date, to_date, bucket_size)
|
|
18
|
+
|
|
19
|
+
# Prepare the loan and extension count
|
|
20
|
+
document_pids = []
|
|
21
|
+
document_metadata = {}
|
|
22
|
+
loan_result = most_loaned.execute()
|
|
23
|
+
for bucket in loan_result.aggregations.most_loaned_documents.buckets:
|
|
24
|
+
document_pid = bucket["key"]
|
|
25
|
+
loan_count = bucket["doc_count"]
|
|
26
|
+
loan_extensions = int(bucket["extensions"]["value"])
|
|
27
|
+
document_pids.append(document_pid)
|
|
28
|
+
document_metadata[document_pid] = dict(
|
|
29
|
+
loans=loan_count, extensions=loan_extensions
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Enhance the document serializer
|
|
33
|
+
doc_search = current_app_ils.document_search_cls()
|
|
34
|
+
doc_search = doc_search.with_preference_param().params(version=True)
|
|
35
|
+
doc_search = doc_search.search_by_pid(*document_pids)
|
|
36
|
+
doc_search = doc_search[0:bucket_size]
|
|
37
|
+
result = doc_search.execute()
|
|
38
|
+
|
|
39
|
+
for hit in result.hits:
|
|
40
|
+
pid = hit["pid"]
|
|
41
|
+
hit["loan_count"] = document_metadata[pid]["loans"]
|
|
42
|
+
hit["loan_extensions"] = document_metadata[pid]["extensions"]
|
|
43
|
+
|
|
44
|
+
res = result.to_dict()
|
|
45
|
+
res["hits"]["hits"] = sorted(
|
|
46
|
+
res["hits"]["hits"],
|
|
47
|
+
key=lambda hit: hit["_source"]["loan_count"],
|
|
48
|
+
reverse=True,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
return res
|
|
@@ -18,17 +18,17 @@ from invenio_records_rest.utils import obj_or_import_string
|
|
|
18
18
|
from invenio_rest import ContentNegotiatedMethodView
|
|
19
19
|
from marshmallow.exceptions import ValidationError
|
|
20
20
|
|
|
21
|
-
from invenio_app_ils.circulation.stats.api import
|
|
22
|
-
fetch_most_loaned_documents,
|
|
23
|
-
get_loan_statistics,
|
|
24
|
-
)
|
|
25
|
-
from invenio_app_ils.circulation.stats.schemas import HistogramParamsSchema
|
|
26
|
-
from invenio_app_ils.circulation.stats.serializers import loan_stats_response
|
|
21
|
+
from invenio_app_ils.circulation.stats.api import fetch_most_loaned_documents
|
|
27
22
|
from invenio_app_ils.circulation.views import IlsCirculationResource
|
|
28
23
|
from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
|
|
29
24
|
from invenio_app_ils.documents.api import DOCUMENT_PID_FETCHER, DOCUMENT_PID_TYPE
|
|
30
25
|
from invenio_app_ils.errors import InvalidParameterError
|
|
31
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
|
+
)
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
def create_most_loaned_documents_view(blueprint, app):
|
|
@@ -56,33 +56,18 @@ def create_most_loaned_documents_view(blueprint, app):
|
|
|
56
56
|
)
|
|
57
57
|
|
|
58
58
|
|
|
59
|
-
def create_loan_histogram_view(blueprint, app):
|
|
60
|
-
"""Add url rule for loan histogram view."""
|
|
61
|
-
|
|
62
|
-
endpoints = app.config.get("RECORDS_REST_ENDPOINTS")
|
|
63
|
-
document_endpoint = endpoints.get(CIRCULATION_LOAN_PID_TYPE)
|
|
64
|
-
default_media_type = document_endpoint.get("default_media_type")
|
|
65
|
-
loan_stats_serializers = {"application/json": loan_stats_response}
|
|
66
|
-
|
|
67
|
-
loan_stats_view_func = LoanHistogramResource.as_view(
|
|
68
|
-
LoanHistogramResource.view_name,
|
|
69
|
-
serializers=loan_stats_serializers,
|
|
70
|
-
default_media_type=default_media_type,
|
|
71
|
-
ctx={},
|
|
72
|
-
)
|
|
73
|
-
blueprint.add_url_rule(
|
|
74
|
-
"/circulation/loans/stats",
|
|
75
|
-
view_func=loan_stats_view_func,
|
|
76
|
-
methods=["GET"],
|
|
77
|
-
)
|
|
78
|
-
|
|
79
|
-
|
|
80
59
|
def create_circulation_stats_blueprint(app):
|
|
81
60
|
"""Add statistics views to the blueprint."""
|
|
82
61
|
blueprint = Blueprint("invenio_app_ils_circulation_stats", __name__, url_prefix="")
|
|
83
62
|
|
|
84
63
|
create_most_loaned_documents_view(blueprint, app)
|
|
85
|
-
|
|
64
|
+
create_histogram_view(
|
|
65
|
+
blueprint,
|
|
66
|
+
app,
|
|
67
|
+
CIRCULATION_LOAN_PID_TYPE,
|
|
68
|
+
LoanHistogramResource,
|
|
69
|
+
"/circulation/loans",
|
|
70
|
+
)
|
|
86
71
|
|
|
87
72
|
return blueprint
|
|
88
73
|
|
|
@@ -190,7 +175,7 @@ class LoanHistogramResource(IlsCirculationResource):
|
|
|
190
175
|
search = search_cls()
|
|
191
176
|
search, _ = default_search_factory(self, search)
|
|
192
177
|
|
|
193
|
-
aggregation_buckets =
|
|
178
|
+
aggregation_buckets = get_record_statistics(
|
|
194
179
|
loan_date_fields,
|
|
195
180
|
search,
|
|
196
181
|
parsed_args["group_by"],
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
#
|
|
3
|
+
# Copyright (C) 2019-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
|
+
"""DocumentRequest indexer APIs."""
|
|
9
|
+
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
|
|
12
|
+
from celery import shared_task
|
|
13
|
+
from flask import current_app
|
|
14
|
+
from invenio_indexer.api import RecordIndexer
|
|
15
|
+
from invenio_search import current_search_client
|
|
16
|
+
|
|
17
|
+
from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
|
|
18
|
+
from invenio_app_ils.acquisition.proxies import current_ils_acq
|
|
19
|
+
from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE
|
|
20
|
+
from invenio_app_ils.ill.api import BORROWING_REQUEST_PID_TYPE
|
|
21
|
+
from invenio_app_ils.ill.proxies import current_ils_ill
|
|
22
|
+
from invenio_app_ils.indexer import ReferencedRecordsIndexer
|
|
23
|
+
from invenio_app_ils.proxies import current_app_ils
|
|
24
|
+
|
|
25
|
+
from .api import DOCUMENT_REQUEST_PID_TYPE
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def index_stats_fields_for_document_request(doc_request_dict):
|
|
29
|
+
"""Indexer hook to modify the document request record dict before indexing."""
|
|
30
|
+
|
|
31
|
+
# This is done through the hook and not through an indexer class,
|
|
32
|
+
# as we need access to the `_created` field.
|
|
33
|
+
|
|
34
|
+
physical_item_provider = doc_request_dict.get("physical_item_provider")
|
|
35
|
+
if not physical_item_provider:
|
|
36
|
+
return
|
|
37
|
+
|
|
38
|
+
provider_pid = physical_item_provider["pid"]
|
|
39
|
+
provider_pid_type = physical_item_provider["pid_type"]
|
|
40
|
+
|
|
41
|
+
doc_request_created = doc_request_dict["_created"]
|
|
42
|
+
doc_request_creation_date = datetime.fromisoformat(doc_request_created).date()
|
|
43
|
+
|
|
44
|
+
provider_creation_date = None
|
|
45
|
+
|
|
46
|
+
if provider_pid_type == ORDER_PID_TYPE:
|
|
47
|
+
order_search_cls = current_ils_acq.order_search_cls
|
|
48
|
+
search_body = {
|
|
49
|
+
"query": {"term": {"pid": provider_pid}},
|
|
50
|
+
"size": 1,
|
|
51
|
+
}
|
|
52
|
+
search_result = current_search_client.search(
|
|
53
|
+
index=order_search_cls.Meta.index, body=search_body
|
|
54
|
+
)
|
|
55
|
+
hits = search_result["hits"]["hits"]
|
|
56
|
+
if len(hits) > 0:
|
|
57
|
+
order = hits[0]["_source"]
|
|
58
|
+
provider_creation_date = datetime.fromisoformat(order["_created"]).date()
|
|
59
|
+
|
|
60
|
+
elif provider_pid_type == BORROWING_REQUEST_PID_TYPE:
|
|
61
|
+
brw_req_search_cls = current_ils_ill.borrowing_request_search_cls
|
|
62
|
+
search_body = {
|
|
63
|
+
"query": {"term": {"pid": provider_pid}},
|
|
64
|
+
"size": 1,
|
|
65
|
+
}
|
|
66
|
+
search_result = current_search_client.search(
|
|
67
|
+
index=brw_req_search_cls.Meta.index, body=search_body
|
|
68
|
+
)
|
|
69
|
+
hits = search_result["hits"]["hits"]
|
|
70
|
+
if len(hits) > 0:
|
|
71
|
+
brw_req = hits[0]["_source"]
|
|
72
|
+
provider_creation_date = datetime.fromisoformat(brw_req["_created"]).date()
|
|
73
|
+
stats = {}
|
|
74
|
+
if provider_creation_date:
|
|
75
|
+
provider_creation_delay = (
|
|
76
|
+
provider_creation_date - doc_request_creation_date
|
|
77
|
+
).days
|
|
78
|
+
stats["provider_creation_delay"] = (
|
|
79
|
+
provider_creation_delay if provider_creation_delay >= 0 else None
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
if stats:
|
|
83
|
+
doc_request_dict["stats"] = stats
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
@shared_task(ignore_result=True)
|
|
87
|
+
def index_referenced_records(docreq):
|
|
88
|
+
"""Index referenced records."""
|
|
89
|
+
indexer = ReferencedRecordsIndexer()
|
|
90
|
+
indexed = dict(pid_type=DOCUMENT_REQUEST_PID_TYPE, record=docreq)
|
|
91
|
+
|
|
92
|
+
referenced = []
|
|
93
|
+
|
|
94
|
+
# fetch and index the document
|
|
95
|
+
document_pid = docreq.get("document_pid")
|
|
96
|
+
if document_pid:
|
|
97
|
+
document_cls = current_app_ils.document_record_cls
|
|
98
|
+
document = document_cls.get_record_by_pid(document_pid)
|
|
99
|
+
referenced.append(dict(pid_type=DOCUMENT_PID_TYPE, record=document))
|
|
100
|
+
|
|
101
|
+
# fetch and index the related order (physical_item_provider)
|
|
102
|
+
physical_item_provider = docreq.get("physical_item_provider")
|
|
103
|
+
if physical_item_provider:
|
|
104
|
+
provider_pid = physical_item_provider.get("pid")
|
|
105
|
+
provider_pid_type = physical_item_provider.get("pid_type")
|
|
106
|
+
if provider_pid and provider_pid_type == ORDER_PID_TYPE:
|
|
107
|
+
order_cls = current_ils_acq.order_record_cls
|
|
108
|
+
order = order_cls.get_record_by_pid(provider_pid)
|
|
109
|
+
referenced.append(dict(pid_type=ORDER_PID_TYPE, record=order))
|
|
110
|
+
|
|
111
|
+
indexer.index(indexed, referenced)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
class DocumentRequestIndexer(RecordIndexer):
|
|
115
|
+
"""Indexer class for DocumentRequest record."""
|
|
116
|
+
|
|
117
|
+
def index(self, docreq, arguments=None, **kwargs):
|
|
118
|
+
"""Index a DocumentRequest."""
|
|
119
|
+
super().index(docreq)
|
|
120
|
+
eta = datetime.utcnow() + current_app.config["ILS_INDEXER_TASK_DELAY"]
|
|
121
|
+
index_referenced_records.apply_async((docreq,), eta=eta)
|
|
@@ -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 document requests stats module."""
|