invenio-app-ils 5.1.0__tar.gz → 6.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-5.1.0 → invenio_app_ils-6.1.0}/CHANGES.rst +13 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/MANIFEST.in +1 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/PKG-INFO +14 -1
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/__init__.py +1 -1
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/config.py +7 -3
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/config.py +2 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/cli.py +11 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/views.py +2 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/config.py +127 -13
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/api.py +1 -1
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/config.py +2 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/views.py +2 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/anonymization.py +3 -1
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/permissions.py +24 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/config.py +6 -3
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/permissions.py +8 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/views.py +2 -2
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/search_permissions.py +3 -3
- invenio_app_ils-6.1.0/invenio_app_ils/stats/event_builders.py +73 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/processors.py +30 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/aggregations/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +41 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/events/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils-6.1.0/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +41 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/PKG-INFO +14 -1
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/SOURCES.txt +10 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/entry_points.txt +1 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/setup.cfg +1 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/.editorconfig +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/.git-blame-ignore-revs +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/AUTHORS.rst +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/CONTRIBUTING.rst +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/INSTALL.rst +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/LICENSE +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/README.rst +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/backend/Dockerfile +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/frontend/Dockerfile +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/frontend/conf.d/default.conf +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/frontend/nginx.conf +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/frontend/test.crt +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/frontend/test.key +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/lb/Dockerfile +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/lb/haproxy.cfg +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker/lb/haproxy_cert.pem +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker-compose.full.yml +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker-compose.yml +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/docker-services.yml +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/errors.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/ext.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/jsonresolvers/order_provider.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/loaders/jsonschemas/order.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/os-v2/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/mappings/v7/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/proxies.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/schemas/acq_orders/order-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/acquisition/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/assets/semantic-ui/less/theme.config +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/jsonresolvers/loan.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/base.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/bulk_extend.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_self_checkout.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_update_dates.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/notifications/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/notifications/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/notifications/messages.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/notifications/tasks.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/receivers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/serializers/csv.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/serializers/custom_fields.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/serializers/json.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/serializers/response.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/stats/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/stats/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/stats/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/tasks.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/bulk_extend.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/cancel.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkin.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkout.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/extend.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/overdue_reminder.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request_no_items.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/self_checkout.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/will_expire_in_reminder.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/transitions/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/transitions/transitions.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/utils.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/circulation/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/serializers/response.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/serializers/schema.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/closures/tasks.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/demo_data/documents.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/demo_data/items.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_patron.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_decline.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_provider.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/os-v2/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/mappings/v7/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/notifications/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/notifications/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/notifications/messages.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/schemas/document_requests/document_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_accept.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.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-5.1.0 → invenio_app_ils-6.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-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_other.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.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-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/document_requests/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/document_circulation.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/document_eitem.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/document_item.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/document_relations.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/jsonresolvers/document_stock.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/loaders/jsonschemas/document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/schemas/documents/document-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/documents/utils.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/jsonresolvers/eitem_document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/jsonresolvers/eitem_files.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/eitems/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/errors.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ext.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/facets.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/fetchers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/files/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/files/receivers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/files/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/errors.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/ext.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/loaders/jsonschemas/borrowing_request.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/notifications/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/notifications/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/notifications/messages.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/proxies.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/schemas/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/serializers/csv.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/serializers/custom_fields.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/serializers/json.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_accept.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_decline.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_request.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/ill/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/jsonresolvers/internal_location.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/internal_location.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/mappings/v7/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/schemas/internal_locations/internal_location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/internal_locations/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/jsonresolvers/item_document.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/jsonresolvers/item_internal_location.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/jsonresolvers/item_loan.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/loaders/jsonschemas/items.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/schemas/items/item-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/schemas/items/item-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/items/serializers/item.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/covers_builder.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/serializers/csv.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/serializers/custom_fields.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/literature/serializers/json.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/loaders/jsonschemas/location.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/mappings/v7/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/receivers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/schemas/locations/location-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/locations/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/minters.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/backends/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/backends/mail.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/messages.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/models.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/notifications/tasks.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/cli.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/mappings/v7/patrons/patron-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/patrons/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/errors.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/ext.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/loaders/jsonschemas/provider.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/mappings/v7/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/proxies.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/schemas/providers/provider-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/providers/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/proxies.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/jsonresolvers/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/listeners.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/schemas/changed_by.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/schemas/identifiers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/schemas/preserve_cover_metadata.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/loaders/schemas/price.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/metadata_extensions.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/receivers.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/schemas/json.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records/serializers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records_relations/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records_relations/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records_relations/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records_relations/retriever.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/records_relations/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/relations/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/relations/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/relations/nodes.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/jsonresolvers/series_relations.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/loaders/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/loaders/jsonschemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/loaders/jsonschemas/series.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/schemas/series/series-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/schemas/series/series-v2.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/series/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/signals.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/static/images/placeholder.png +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/static_pages/search_guide.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/aggr-file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/stats/file_download/v7/file-download-v1.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/templates/invenio_app_ils/mail/footer.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/templates/invenio_app_ils/notifications/footer.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/templates/logged_out.html +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/translations/.gitkeep +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/views.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/api.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/cli.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/acq_mediums.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/acq_order_line_purchase_types.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/acq_payment_modes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/acq_recipients.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/affiliation_identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/alternative_identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/alternative_title_types.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/author_identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/author_roles.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/author_types.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/conference_identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/countries.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/currencies.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/docreq_payment_method.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/docreq_request_type.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/document_identifiers_materials.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/document_requests_mediums.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/document_subjects.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/eitem_sources.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/ill_item_types.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/ill_payment_modes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/item_mediums.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/provider_types.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/series_identifier_schemes.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/series_url_access_restrictions.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/data/tags.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/indexer.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/jsonresolvers/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/jsonresolvers/licenses.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/v7/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/schemas/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/schemas/vocabularies/vocabulary-v1.0.0.json +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/search.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/sources/__init__.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/sources/base.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/sources/json.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/vocabularies/sources/opendefinition.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils/webpack.py +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/dependency_links.txt +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/not-zip-safe +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/requires.txt +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/invenio_app_ils.egg-info/top_level.txt +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/pyproject.toml +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/run-tests.sh +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/bootstrap +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/build_assets +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/celery +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/console +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/server +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/setup +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/scripts/update +0 -0
- {invenio_app_ils-5.1.0 → invenio_app_ils-6.1.0}/setup.py +0 -0
|
@@ -8,6 +8,19 @@
|
|
|
8
8
|
Changes
|
|
9
9
|
=======
|
|
10
10
|
|
|
11
|
+
Version 6.1.0 (released 2025-10-05)
|
|
12
|
+
|
|
13
|
+
- fix: make terms query that gets eitems by creator use correct keyword
|
|
14
|
+
- stats: record change ids only contain `user_id` when it is not None
|
|
15
|
+
- global: include python files inside invenio_app_ils in manifest
|
|
16
|
+
- stats: move file `test_stats` into folder for stats
|
|
17
|
+
- stats: add stats to track ILSRecord insertions, deletions and updates
|
|
18
|
+
|
|
19
|
+
Version 6.0.0 (released 2025-10-03)
|
|
20
|
+
|
|
21
|
+
- breaking change: permissions: turn permission that checks if user can see notifications into read permission
|
|
22
|
+
- permissions: add backoffice readonly action
|
|
23
|
+
|
|
11
24
|
Version 5.1.0 (released 2025-09-24)
|
|
12
25
|
|
|
13
26
|
- eitem: add api methods to get eitems by `created_by` and `source` fields
|
|
@@ -64,6 +64,7 @@ recursive-include invenio_app_ils *.ttf
|
|
|
64
64
|
recursive-include invenio_app_ils *.woff
|
|
65
65
|
recursive-include invenio_app_ils *.woff2
|
|
66
66
|
recursive-include invenio_app_ils *.config
|
|
67
|
+
recursive-include invenio_app_ils *.py
|
|
67
68
|
recursive-include tests *.py
|
|
68
69
|
recursive-include tests *.json
|
|
69
70
|
recursive-include tests *.html
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: invenio-app-ils
|
|
3
|
-
Version:
|
|
3
|
+
Version: 6.1.0
|
|
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,19 @@ https://invenioils.docs.cern.ch
|
|
|
103
103
|
Changes
|
|
104
104
|
=======
|
|
105
105
|
|
|
106
|
+
Version 6.1.0 (released 2025-10-05)
|
|
107
|
+
|
|
108
|
+
- fix: make terms query that gets eitems by creator use correct keyword
|
|
109
|
+
- stats: record change ids only contain `user_id` when it is not None
|
|
110
|
+
- global: include python files inside invenio_app_ils in manifest
|
|
111
|
+
- stats: move file `test_stats` into folder for stats
|
|
112
|
+
- stats: add stats to track ILSRecord insertions, deletions and updates
|
|
113
|
+
|
|
114
|
+
Version 6.0.0 (released 2025-10-03)
|
|
115
|
+
|
|
116
|
+
- breaking change: permissions: turn permission that checks if user can see notifications into read permission
|
|
117
|
+
- permissions: add backoffice readonly action
|
|
118
|
+
|
|
106
119
|
Version 5.1.0 (released 2025-09-24)
|
|
107
120
|
|
|
108
121
|
- eitem: add api methods to get eitems by `created_by` and `source` fields
|
|
@@ -10,7 +10,11 @@ from invenio_indexer.api import RecordIndexer
|
|
|
10
10
|
from invenio_records_rest.facets import terms_filter
|
|
11
11
|
|
|
12
12
|
from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
|
|
13
|
-
from invenio_app_ils.permissions import
|
|
13
|
+
from invenio_app_ils.permissions import (
|
|
14
|
+
backoffice_permission,
|
|
15
|
+
backoffice_read_permission,
|
|
16
|
+
superuser_permission,
|
|
17
|
+
)
|
|
14
18
|
|
|
15
19
|
from .api import ORDER_PID_FETCHER, ORDER_PID_MINTER, ORDER_PID_TYPE, Order
|
|
16
20
|
from .search import OrderSearch
|
|
@@ -44,8 +48,8 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
44
48
|
default_media_type="application/json",
|
|
45
49
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
46
50
|
error_handlers=dict(),
|
|
47
|
-
read_permission_factory_imp=
|
|
48
|
-
list_permission_factory_imp=
|
|
51
|
+
read_permission_factory_imp=backoffice_read_permission,
|
|
52
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
49
53
|
create_permission_factory_imp=backoffice_permission,
|
|
50
54
|
update_permission_factory_imp=backoffice_permission,
|
|
51
55
|
delete_permission_factory_imp=superuser_permission,
|
|
@@ -41,7 +41,7 @@ from invenio_app_ils.items.api import (
|
|
|
41
41
|
)
|
|
42
42
|
from invenio_app_ils.patrons.api import patron_exists
|
|
43
43
|
from invenio_app_ils.permissions import (
|
|
44
|
-
|
|
44
|
+
PatronOwnerReadPermission,
|
|
45
45
|
authenticated_user_permission,
|
|
46
46
|
backoffice_permission,
|
|
47
47
|
loan_extend_circulation_permission,
|
|
@@ -254,7 +254,7 @@ ILS_CIRCULATION_RECORDS_REST_ENDPOINTS = dict(
|
|
|
254
254
|
links_factory_imp="invenio_circulation.links:loan_links_factory",
|
|
255
255
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
256
256
|
error_handlers=dict(),
|
|
257
|
-
read_permission_factory_imp=
|
|
257
|
+
read_permission_factory_imp=PatronOwnerReadPermission,
|
|
258
258
|
# auth via search_factory
|
|
259
259
|
list_permission_factory_imp=authenticated_user_permission,
|
|
260
260
|
create_permission_factory_imp=superuser_permission,
|
|
@@ -1308,6 +1308,7 @@ def data(
|
|
|
1308
1308
|
# Create roles to restrict access
|
|
1309
1309
|
_run_command("roles create admin", verbose)
|
|
1310
1310
|
_run_command("roles create librarian", verbose)
|
|
1311
|
+
_run_command("roles create librarian-readonly", verbose)
|
|
1311
1312
|
|
|
1312
1313
|
# Create users
|
|
1313
1314
|
patron1_profile = {"full_name": "Yannic Vilma"}
|
|
@@ -1328,6 +1329,12 @@ def data(
|
|
|
1328
1329
|
verbose,
|
|
1329
1330
|
)
|
|
1330
1331
|
|
|
1332
|
+
readonly_profile = {"full_name": "Ro Only"}
|
|
1333
|
+
_run_command(
|
|
1334
|
+
f"users create readonly@test.ch -a --password=123456 --profile '{json.dumps(readonly_profile)}'",
|
|
1335
|
+
verbose,
|
|
1336
|
+
)
|
|
1337
|
+
|
|
1331
1338
|
patron3_profile = {"full_name": "Medrod Tara"}
|
|
1332
1339
|
_run_command(
|
|
1333
1340
|
f"users create patron3@test.ch -a --password=123456 --profile '{json.dumps(patron3_profile)}'",
|
|
@@ -1350,6 +1357,7 @@ def data(
|
|
|
1350
1357
|
|
|
1351
1358
|
# assign roles
|
|
1352
1359
|
_run_command("roles add librarian@test.ch librarian", verbose)
|
|
1360
|
+
_run_command("roles add readonly@test.ch librarian-readonly", verbose)
|
|
1353
1361
|
|
|
1354
1362
|
# Index vocabularies
|
|
1355
1363
|
vocabularies_dir = os.path.join(CURRENT_DIR, "vocabularies", "data")
|
|
@@ -1368,6 +1376,9 @@ def data(
|
|
|
1368
1376
|
# Assign actions
|
|
1369
1377
|
_run_command("access allow superuser-access role admin", verbose)
|
|
1370
1378
|
_run_command("access allow ils-backoffice-access role librarian", verbose)
|
|
1379
|
+
_run_command(
|
|
1380
|
+
"access allow ils-backoffice-readonly-access role librarian-readonly", verbose
|
|
1381
|
+
)
|
|
1371
1382
|
|
|
1372
1383
|
# Create demo locations
|
|
1373
1384
|
click.echo("Creating locations and internal locations...")
|
|
@@ -16,7 +16,7 @@ from invenio_rest import ContentNegotiatedMethodView
|
|
|
16
16
|
from invenio_app_ils.locations.api import LOCATION_PID_TYPE
|
|
17
17
|
from invenio_app_ils.closures.serializers import closure_periods_response
|
|
18
18
|
from invenio_app_ils.closures.api import get_closure_periods
|
|
19
|
-
from invenio_app_ils.permissions import
|
|
19
|
+
from invenio_app_ils.permissions import backoffice_read_permission
|
|
20
20
|
from invenio_app_ils.records.permissions import RecordPermission
|
|
21
21
|
|
|
22
22
|
|
|
@@ -53,7 +53,7 @@ class LocationClosurePeriodsResource(ContentNegotiatedMethodView):
|
|
|
53
53
|
"""Get the date ranges for which a location is closure based in the specified year"""
|
|
54
54
|
|
|
55
55
|
factory = RecordPermission(record, "read")
|
|
56
|
-
if not factory.is_public() and not
|
|
56
|
+
if not factory.is_public() and not backoffice_read_permission().can():
|
|
57
57
|
if not current_user.is_authenticated:
|
|
58
58
|
abort(401)
|
|
59
59
|
abort(403)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
#
|
|
3
|
-
# Copyright (C) 2018-
|
|
3
|
+
# Copyright (C) 2018-2025 CERN.
|
|
4
4
|
#
|
|
5
5
|
# invenio-app-ils is free software; you can redistribute it and/or modify it
|
|
6
6
|
# under the terms of the MIT License; see LICENSE file for more details.
|
|
@@ -15,6 +15,7 @@ You overwrite and set instance-specific configuration by either:
|
|
|
15
15
|
|
|
16
16
|
import datetime
|
|
17
17
|
from datetime import timedelta
|
|
18
|
+
from functools import partial
|
|
18
19
|
|
|
19
20
|
from celery.schedules import crontab
|
|
20
21
|
from invenio_accounts.config import (
|
|
@@ -24,7 +25,7 @@ from invenio_records_rest.facets import terms_filter
|
|
|
24
25
|
from invenio_records_rest.utils import allow_all, deny_all
|
|
25
26
|
from invenio_stats.aggregations import StatAggregator
|
|
26
27
|
from invenio_stats.processors import EventsIndexer
|
|
27
|
-
from invenio_stats.queries import ESTermsQuery
|
|
28
|
+
from invenio_stats.queries import DateHistogramQuery, ESTermsQuery
|
|
28
29
|
|
|
29
30
|
from invenio_app_ils.document_requests.indexer import DocumentRequestIndexer
|
|
30
31
|
from invenio_app_ils.documents.indexer import DocumentIndexer
|
|
@@ -41,6 +42,7 @@ from invenio_app_ils.literature.search import LiteratureSearch
|
|
|
41
42
|
from invenio_app_ils.locations.indexer import LocationIndexer
|
|
42
43
|
from invenio_app_ils.patrons.indexer import PatronIndexer
|
|
43
44
|
from invenio_app_ils.series.indexer import SeriesIndexer
|
|
45
|
+
from invenio_app_ils.stats.event_builders import ils_record_changed_event_builder
|
|
44
46
|
from invenio_app_ils.vocabularies.indexer import VocabularyIndexer
|
|
45
47
|
|
|
46
48
|
from .document_requests.api import (
|
|
@@ -91,9 +93,11 @@ from .patrons.api import (
|
|
|
91
93
|
)
|
|
92
94
|
from .patrons.search import PatronsSearch
|
|
93
95
|
from .permissions import (
|
|
94
|
-
|
|
96
|
+
PatronOwnerReadPermission,
|
|
95
97
|
authenticated_user_permission,
|
|
96
98
|
backoffice_permission,
|
|
99
|
+
backoffice_read_permission,
|
|
100
|
+
superuser_permission,
|
|
97
101
|
views_permissions_factory,
|
|
98
102
|
)
|
|
99
103
|
from .records.permissions import record_read_permission_factory
|
|
@@ -233,12 +237,20 @@ CELERY_BEAT_SCHEDULE = {
|
|
|
233
237
|
"stats-process-events": {
|
|
234
238
|
"task": "invenio_stats.tasks.process_events",
|
|
235
239
|
"schedule": timedelta(minutes=30),
|
|
236
|
-
"args": [
|
|
240
|
+
"args": [
|
|
241
|
+
(
|
|
242
|
+
"record-view",
|
|
243
|
+
"file-download",
|
|
244
|
+
"ils-record-changes-updates",
|
|
245
|
+
"ils-record-changes-insertions",
|
|
246
|
+
"ils-record-changes-deletions",
|
|
247
|
+
)
|
|
248
|
+
],
|
|
237
249
|
},
|
|
238
250
|
"stats-aggregate-events": {
|
|
239
251
|
"task": "invenio_stats.tasks.aggregate_events",
|
|
240
252
|
"schedule": timedelta(hours=3),
|
|
241
|
-
"args": [("record-view-agg", "file-download-agg")],
|
|
253
|
+
"args": [("record-view-agg", "file-download-agg", "ils-record-changes-agg")],
|
|
242
254
|
},
|
|
243
255
|
"clean_locations_past_closures_exceptions": {
|
|
244
256
|
"task": (
|
|
@@ -395,8 +407,8 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
395
407
|
default_media_type="application/json",
|
|
396
408
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
397
409
|
error_handlers=dict(),
|
|
398
|
-
read_permission_factory_imp=
|
|
399
|
-
list_permission_factory_imp=
|
|
410
|
+
read_permission_factory_imp=backoffice_read_permission,
|
|
411
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
400
412
|
create_permission_factory_imp=backoffice_permission,
|
|
401
413
|
update_permission_factory_imp=backoffice_permission,
|
|
402
414
|
delete_permission_factory_imp=backoffice_permission,
|
|
@@ -427,8 +439,8 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
427
439
|
default_media_type="application/json",
|
|
428
440
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
429
441
|
error_handlers=dict(),
|
|
430
|
-
read_permission_factory_imp=
|
|
431
|
-
list_permission_factory_imp=
|
|
442
|
+
read_permission_factory_imp=backoffice_read_permission,
|
|
443
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
432
444
|
create_permission_factory_imp=backoffice_permission,
|
|
433
445
|
update_permission_factory_imp=backoffice_permission,
|
|
434
446
|
delete_permission_factory_imp=backoffice_permission,
|
|
@@ -522,8 +534,8 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
522
534
|
default_media_type="application/json",
|
|
523
535
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
524
536
|
error_handlers=dict(),
|
|
525
|
-
read_permission_factory_imp=
|
|
526
|
-
list_permission_factory_imp=
|
|
537
|
+
read_permission_factory_imp=backoffice_read_permission,
|
|
538
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
527
539
|
create_permission_factory_imp=backoffice_permission,
|
|
528
540
|
update_permission_factory_imp=backoffice_permission,
|
|
529
541
|
delete_permission_factory_imp=backoffice_permission,
|
|
@@ -552,7 +564,7 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
552
564
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
553
565
|
error_handlers=dict(),
|
|
554
566
|
read_permission_factory_imp=deny_all,
|
|
555
|
-
list_permission_factory_imp=
|
|
567
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
556
568
|
create_permission_factory_imp=deny_all,
|
|
557
569
|
update_permission_factory_imp=deny_all,
|
|
558
570
|
delete_permission_factory_imp=deny_all,
|
|
@@ -584,7 +596,7 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
584
596
|
default_media_type="application/json",
|
|
585
597
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
586
598
|
error_handlers=dict(),
|
|
587
|
-
read_permission_factory_imp=
|
|
599
|
+
read_permission_factory_imp=PatronOwnerReadPermission,
|
|
588
600
|
# auth via search_factory
|
|
589
601
|
list_permission_factory_imp=authenticated_user_permission,
|
|
590
602
|
create_permission_factory_imp=authenticated_user_permission,
|
|
@@ -920,6 +932,57 @@ STATS_EVENTS = {
|
|
|
920
932
|
"suffix": "%Y-%m",
|
|
921
933
|
},
|
|
922
934
|
},
|
|
935
|
+
"ils-record-changes-updates": {
|
|
936
|
+
"signal": "invenio_records.signals.after_record_update",
|
|
937
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
938
|
+
"event_builders": [
|
|
939
|
+
partial(ils_record_changed_event_builder, method="update"),
|
|
940
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
941
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
942
|
+
],
|
|
943
|
+
"cls": EventsIndexer,
|
|
944
|
+
"params": {
|
|
945
|
+
"preprocessors": [
|
|
946
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
947
|
+
],
|
|
948
|
+
"double_click_window": 0,
|
|
949
|
+
"suffix": "%Y",
|
|
950
|
+
},
|
|
951
|
+
},
|
|
952
|
+
"ils-record-changes-insertions": {
|
|
953
|
+
"signal": "invenio_records.signals.after_record_insert",
|
|
954
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
955
|
+
"event_builders": [
|
|
956
|
+
partial(ils_record_changed_event_builder, method="insert"),
|
|
957
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
958
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
959
|
+
],
|
|
960
|
+
"cls": EventsIndexer,
|
|
961
|
+
"params": {
|
|
962
|
+
"preprocessors": [
|
|
963
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
964
|
+
],
|
|
965
|
+
"double_click_window": 0,
|
|
966
|
+
"suffix": "%Y",
|
|
967
|
+
},
|
|
968
|
+
},
|
|
969
|
+
"ils-record-changes-deletions": {
|
|
970
|
+
"signal": "invenio_records.signals.after_record_delete",
|
|
971
|
+
"templates": "invenio_app_ils.stats.templates.events.ils_record_changes",
|
|
972
|
+
"event_builders": [
|
|
973
|
+
partial(ils_record_changed_event_builder, method="delete"),
|
|
974
|
+
"invenio_app_ils.stats.event_builders.add_librarian_user_id_to_event",
|
|
975
|
+
"invenio_app_ils.stats.event_builders.add_record_pid_to_event",
|
|
976
|
+
],
|
|
977
|
+
"cls": EventsIndexer,
|
|
978
|
+
"params": {
|
|
979
|
+
"preprocessors": [
|
|
980
|
+
"invenio_app_ils.stats.processors.add_record_change_ids",
|
|
981
|
+
],
|
|
982
|
+
"double_click_window": 0,
|
|
983
|
+
"suffix": "%Y",
|
|
984
|
+
},
|
|
985
|
+
},
|
|
923
986
|
}
|
|
924
987
|
|
|
925
988
|
STATS_AGGREGATIONS = {
|
|
@@ -966,6 +1029,19 @@ STATS_AGGREGATIONS = {
|
|
|
966
1029
|
),
|
|
967
1030
|
),
|
|
968
1031
|
),
|
|
1032
|
+
"ils-record-changes-agg": dict(
|
|
1033
|
+
templates="invenio_app_ils.stats.templates.aggregations.ils_record_changes",
|
|
1034
|
+
cls=StatAggregator,
|
|
1035
|
+
params=dict(
|
|
1036
|
+
event="ils-record-changes",
|
|
1037
|
+
field="aggregation_id",
|
|
1038
|
+
interval="day",
|
|
1039
|
+
index_interval="year",
|
|
1040
|
+
copy_fields=dict(pid_type="pid_type", method="method", user_id="user_id"),
|
|
1041
|
+
metric_fields=dict(),
|
|
1042
|
+
query_modifiers=[],
|
|
1043
|
+
),
|
|
1044
|
+
),
|
|
969
1045
|
}
|
|
970
1046
|
|
|
971
1047
|
STATS_QUERIES = {
|
|
@@ -1002,6 +1078,44 @@ STATS_QUERIES = {
|
|
|
1002
1078
|
),
|
|
1003
1079
|
),
|
|
1004
1080
|
),
|
|
1081
|
+
"ils-record-changes": dict(
|
|
1082
|
+
cls=DateHistogramQuery,
|
|
1083
|
+
permission_factory=backoffice_read_permission,
|
|
1084
|
+
params=dict(
|
|
1085
|
+
index="stats-ils-record-changes",
|
|
1086
|
+
copy_fields=dict(
|
|
1087
|
+
pid_type="pid_type",
|
|
1088
|
+
method="method",
|
|
1089
|
+
),
|
|
1090
|
+
required_filters=dict(
|
|
1091
|
+
pid_type="pid_type",
|
|
1092
|
+
method="method",
|
|
1093
|
+
),
|
|
1094
|
+
metric_fields=dict(
|
|
1095
|
+
count=("sum", "count", {}),
|
|
1096
|
+
),
|
|
1097
|
+
),
|
|
1098
|
+
),
|
|
1099
|
+
"ils-record-changes-per-user": dict(
|
|
1100
|
+
cls=ESTermsQuery,
|
|
1101
|
+
permission_factory=superuser_permission,
|
|
1102
|
+
params=dict(
|
|
1103
|
+
index="stats-ils-record-changes",
|
|
1104
|
+
copy_fields=dict(
|
|
1105
|
+
pid_type="pid_type",
|
|
1106
|
+
method="method",
|
|
1107
|
+
user_id="user_id",
|
|
1108
|
+
),
|
|
1109
|
+
required_filters=dict(
|
|
1110
|
+
pid_type="pid_type",
|
|
1111
|
+
method="method",
|
|
1112
|
+
),
|
|
1113
|
+
metric_fields=dict(
|
|
1114
|
+
count=("sum", "count", {}),
|
|
1115
|
+
),
|
|
1116
|
+
aggregated_fields=["user_id"],
|
|
1117
|
+
),
|
|
1118
|
+
),
|
|
1005
1119
|
}
|
|
1006
1120
|
|
|
1007
1121
|
# List of available vocabularies
|
|
@@ -133,7 +133,7 @@ def get_eitems_for_document_by_creator(document_pid, creator, case_insensitive=F
|
|
|
133
133
|
document_pid=document_pid
|
|
134
134
|
).filter(
|
|
135
135
|
"term",
|
|
136
|
-
created_by__value={"
|
|
136
|
+
created_by__value={"value": creator, "case_insensitive": case_insensitive},
|
|
137
137
|
)
|
|
138
138
|
|
|
139
139
|
return creator_match
|
|
@@ -11,7 +11,7 @@ from invenio_records_rest.facets import terms_filter
|
|
|
11
11
|
|
|
12
12
|
from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
|
|
13
13
|
from invenio_app_ils.permissions import (
|
|
14
|
-
|
|
14
|
+
PatronOwnerReadPermission,
|
|
15
15
|
authenticated_user_permission,
|
|
16
16
|
backoffice_permission,
|
|
17
17
|
superuser_permission,
|
|
@@ -76,7 +76,7 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
76
76
|
default_media_type="application/json",
|
|
77
77
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
78
78
|
error_handlers=dict(),
|
|
79
|
-
read_permission_factory_imp=
|
|
79
|
+
read_permission_factory_imp=PatronOwnerReadPermission,
|
|
80
80
|
# auth via search_factory
|
|
81
81
|
list_permission_factory_imp=authenticated_user_permission,
|
|
82
82
|
create_permission_factory_imp=backoffice_permission,
|
|
@@ -38,7 +38,7 @@ def get_notifications_blueprint(_):
|
|
|
38
38
|
"size": fields.Int(validate=[validate.Range(min=1, max=100)]),
|
|
39
39
|
}
|
|
40
40
|
)
|
|
41
|
-
@need_permissions("
|
|
41
|
+
@need_permissions("get-notifications-sent-to-patron")
|
|
42
42
|
def get_notifications(
|
|
43
43
|
recipient_user_id=None,
|
|
44
44
|
pid_type=None,
|
|
@@ -69,7 +69,7 @@ def get_notifications_blueprint(_):
|
|
|
69
69
|
return {"hits": notifications, "total": len(notifications)}
|
|
70
70
|
|
|
71
71
|
@blueprint.route("/notifications/<int:id>")
|
|
72
|
-
@need_permissions("
|
|
72
|
+
@need_permissions("get-notifications-sent-to-patron")
|
|
73
73
|
def get_notification(id):
|
|
74
74
|
try:
|
|
75
75
|
notification = NotificationsLogs.query.filter_by(id=id).one()
|
|
@@ -170,7 +170,9 @@ def anonymize_patron_data(patron_pid, force=False):
|
|
|
170
170
|
borrowing_request["patron"] = anonymous_patron_fields
|
|
171
171
|
borrowing_request["patron_pid"] = anonymous_patron_fields["pid"]
|
|
172
172
|
borrowing_request.commit()
|
|
173
|
-
anonymized_records[BORROWING_REQUEST_PID_TYPE]["records"].append(
|
|
173
|
+
anonymized_records[BORROWING_REQUEST_PID_TYPE]["records"].append(
|
|
174
|
+
borrowing_request
|
|
175
|
+
)
|
|
174
176
|
indices += 1
|
|
175
177
|
|
|
176
178
|
DocumentRequestSearch = current_app_ils.document_request_search_cls
|
|
@@ -20,6 +20,7 @@ from invenio_app_ils.errors import InvalidLoanExtendError, LoanCheckoutByPatronF
|
|
|
20
20
|
from invenio_app_ils.proxies import current_app_ils
|
|
21
21
|
|
|
22
22
|
backoffice_access_action = action_factory("ils-backoffice-access")
|
|
23
|
+
backoffice_readonly_access_action = action_factory("ils-backoffice-readonly-access")
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
def need_permissions(action):
|
|
@@ -62,6 +63,11 @@ def backoffice_permission(*args, **kwargs):
|
|
|
62
63
|
return Permission(backoffice_access_action)
|
|
63
64
|
|
|
64
65
|
|
|
66
|
+
def backoffice_read_permission(*args, **kwargs):
|
|
67
|
+
"""Return permission for backoffice (full or read-only) read access."""
|
|
68
|
+
return Permission(backoffice_access_action, backoffice_readonly_access_action)
|
|
69
|
+
|
|
70
|
+
|
|
65
71
|
def superuser_permission(*args, **kwargs):
|
|
66
72
|
"""Return permission to allow only admins."""
|
|
67
73
|
return Permission(superuser_access)
|
|
@@ -160,6 +166,18 @@ def loan_checkout_permission(*args, **kwargs):
|
|
|
160
166
|
raise LoanCheckoutByPatronForbidden(int(loan["patron_pid"]), current_user.id)
|
|
161
167
|
|
|
162
168
|
|
|
169
|
+
class PatronOwnerReadPermission(Permission):
|
|
170
|
+
"""Return Permission to evaluate if the current user owns the record or has backoffice read access."""
|
|
171
|
+
|
|
172
|
+
def __init__(self, record):
|
|
173
|
+
"""Constructor."""
|
|
174
|
+
super().__init__(
|
|
175
|
+
UserNeed(int(record["patron_pid"])),
|
|
176
|
+
backoffice_access_action,
|
|
177
|
+
backoffice_readonly_access_action,
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
|
|
163
181
|
class PatronOwnerPermission(Permission):
|
|
164
182
|
"""Return Permission to evaluate if the current user owns the record."""
|
|
165
183
|
|
|
@@ -179,13 +197,15 @@ _is_backoffice_permission = [
|
|
|
179
197
|
"circulation-loan-update-dates",
|
|
180
198
|
"relations-create",
|
|
181
199
|
"relations-delete",
|
|
182
|
-
"stats-most-loaned",
|
|
183
200
|
"document-request-actions",
|
|
184
201
|
"bucket-create",
|
|
185
202
|
"ill-brwreq-patron-loan-create",
|
|
186
203
|
"ill-brwreq-patron-loan-extension-accept",
|
|
187
204
|
"ill-brwreq-patron-loan-extension-decline",
|
|
188
|
-
|
|
205
|
+
]
|
|
206
|
+
_is_backoffice_read_permission = [
|
|
207
|
+
"stats-most-loaned",
|
|
208
|
+
"get-notifications-sent-to-patron",
|
|
189
209
|
]
|
|
190
210
|
_is_patron_owner_permission = [
|
|
191
211
|
"document-request-decline",
|
|
@@ -199,6 +219,8 @@ def views_permissions_factory(action):
|
|
|
199
219
|
return authenticated_user_permission()
|
|
200
220
|
elif action in _is_backoffice_permission:
|
|
201
221
|
return backoffice_permission()
|
|
222
|
+
elif action in _is_backoffice_read_permission:
|
|
223
|
+
return backoffice_read_permission()
|
|
202
224
|
elif action in _is_patron_owner_permission:
|
|
203
225
|
return PatronOwnerPermission
|
|
204
226
|
elif action == "circulation-loan-checkout":
|
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
from invenio_records_rest.facets import terms_filter
|
|
11
11
|
|
|
12
12
|
from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
|
|
13
|
-
from invenio_app_ils.permissions import
|
|
13
|
+
from invenio_app_ils.permissions import (
|
|
14
|
+
backoffice_permission,
|
|
15
|
+
backoffice_read_permission,
|
|
16
|
+
)
|
|
14
17
|
|
|
15
18
|
from .api import PROVIDER_PID_FETCHER, PROVIDER_PID_MINTER, PROVIDER_PID_TYPE, Provider
|
|
16
19
|
from .indexer import ProviderIndexer
|
|
@@ -47,8 +50,8 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
47
50
|
default_media_type="application/json",
|
|
48
51
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
49
52
|
error_handlers=dict(),
|
|
50
|
-
read_permission_factory_imp=
|
|
51
|
-
list_permission_factory_imp=
|
|
53
|
+
read_permission_factory_imp=backoffice_read_permission,
|
|
54
|
+
list_permission_factory_imp=backoffice_read_permission,
|
|
52
55
|
create_permission_factory_imp=backoffice_permission,
|
|
53
56
|
update_permission_factory_imp=backoffice_permission,
|
|
54
57
|
delete_permission_factory_imp=backoffice_permission,
|
|
@@ -12,7 +12,10 @@ from flask_principal import ActionNeed, RoleNeed, UserNeed
|
|
|
12
12
|
from invenio_access import Permission, any_user
|
|
13
13
|
from six import string_types
|
|
14
14
|
|
|
15
|
-
from invenio_app_ils.permissions import
|
|
15
|
+
from invenio_app_ils.permissions import (
|
|
16
|
+
backoffice_access_action,
|
|
17
|
+
backoffice_readonly_access_action,
|
|
18
|
+
)
|
|
16
19
|
|
|
17
20
|
create_records_action = ActionNeed("create-records")
|
|
18
21
|
|
|
@@ -68,7 +71,10 @@ class RecordPermission(Permission):
|
|
|
68
71
|
if self.is_public():
|
|
69
72
|
return [any_user]
|
|
70
73
|
else:
|
|
71
|
-
return self.record_needs() + [
|
|
74
|
+
return self.record_needs() + [
|
|
75
|
+
backoffice_readonly_access_action,
|
|
76
|
+
backoffice_access_action,
|
|
77
|
+
]
|
|
72
78
|
|
|
73
79
|
def record_explicit_restrictions(self):
|
|
74
80
|
"""Return the list of user ids/roles allowed for the given action."""
|
|
@@ -17,7 +17,7 @@ from invenio_rest import ContentNegotiatedMethodView
|
|
|
17
17
|
from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE
|
|
18
18
|
from invenio_app_ils.eitems.api import EITEM_PID_TYPE
|
|
19
19
|
from invenio_app_ils.errors import StatsError
|
|
20
|
-
from invenio_app_ils.permissions import
|
|
20
|
+
from invenio_app_ils.permissions import backoffice_read_permission
|
|
21
21
|
from invenio_app_ils.records.permissions import RecordPermission
|
|
22
22
|
from invenio_app_ils.series.api import SERIES_PID_TYPE
|
|
23
23
|
from invenio_app_ils.signals import file_downloaded, record_viewed
|
|
@@ -62,7 +62,7 @@ class DocumentStatsResource(ContentNegotiatedMethodView):
|
|
|
62
62
|
def post(self, pid, record, **kwargs):
|
|
63
63
|
"""Send a signal to count record view for the record stats."""
|
|
64
64
|
factory = RecordPermission(record, "read")
|
|
65
|
-
if not factory.is_public() and not
|
|
65
|
+
if not factory.is_public() and not backoffice_read_permission().can():
|
|
66
66
|
if not current_user.is_authenticated:
|
|
67
67
|
abort(401)
|
|
68
68
|
abort(403)
|
|
@@ -13,7 +13,7 @@ from flask import current_app, g, has_request_context, request
|
|
|
13
13
|
from invenio_search.engine import dsl
|
|
14
14
|
|
|
15
15
|
from invenio_app_ils.errors import SearchQueryError, UnauthorizedSearchError
|
|
16
|
-
from invenio_app_ils.permissions import
|
|
16
|
+
from invenio_app_ils.permissions import backoffice_read_permission
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def _get_user_provides():
|
|
@@ -30,7 +30,7 @@ def _get_user_provides():
|
|
|
30
30
|
|
|
31
31
|
def search_filter_record_permissions():
|
|
32
32
|
"""Filter list of results by `_access` and `restricted` fields."""
|
|
33
|
-
if not has_request_context() or
|
|
33
|
+
if not has_request_context() or backoffice_read_permission().allows(g.identity):
|
|
34
34
|
return dsl.Q()
|
|
35
35
|
|
|
36
36
|
# A record is public if `restricted` field False or missing
|
|
@@ -120,7 +120,7 @@ def _filter_by_patron(patron_id, search, query_string=None):
|
|
|
120
120
|
def _filter_by_current_patron(search, query_string=None):
|
|
121
121
|
"""Filter search results by patron_pid."""
|
|
122
122
|
# if the logged in user is not librarian or admin, validate the query
|
|
123
|
-
if has_request_context() and not
|
|
123
|
+
if has_request_context() and not backoffice_read_permission().allows(g.identity):
|
|
124
124
|
return _filter_by_patron(g.identity.id, search, query_string)
|
|
125
125
|
return search, query_string
|
|
126
126
|
|