invenio-app-ils 1.0.0a54__py2.py3-none-any.whl → 6.1.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- invenio_app_ils/__init__.py +2 -2
- invenio_app_ils/acquisition/api.py +3 -1
- invenio_app_ils/acquisition/config.py +10 -21
- invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +1 -0
- invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +364 -0
- invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
- invenio_app_ils/acquisition/mappings/os-v2/acq_orders/order-v1.0.0.json +364 -0
- invenio_app_ils/acquisition/mappings/v7/acq_orders/order-v1.0.0.json +14 -0
- invenio_app_ils/acquisition/search.py +5 -15
- invenio_app_ils/assets/semantic-ui/less/theme.config +103 -0
- invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
- invenio_app_ils/circulation/api.py +153 -67
- invenio_app_ils/circulation/config.py +29 -25
- invenio_app_ils/circulation/indexer.py +14 -19
- invenio_app_ils/circulation/loaders/__init__.py +2 -0
- invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +2 -3
- invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +82 -16
- invenio_app_ils/circulation/loaders/schemas/json/loan_self_checkout.py +19 -0
- invenio_app_ils/circulation/notifications/api.py +23 -19
- invenio_app_ils/circulation/notifications/messages.py +6 -6
- invenio_app_ils/circulation/notifications/tasks.py +1 -2
- invenio_app_ils/circulation/receivers.py +2 -5
- invenio_app_ils/circulation/search.py +23 -22
- invenio_app_ils/circulation/serializers/__init__.py +2 -2
- invenio_app_ils/circulation/serializers/csv.py +1 -3
- invenio_app_ils/circulation/serializers/custom_fields.py +5 -9
- invenio_app_ils/circulation/serializers/json.py +2 -6
- invenio_app_ils/circulation/serializers/response.py +12 -12
- invenio_app_ils/circulation/stats/views.py +5 -15
- invenio_app_ils/circulation/tasks.py +2 -6
- invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/self_checkout.html +19 -0
- invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +19 -0
- invenio_app_ils/circulation/utils.py +23 -17
- invenio_app_ils/circulation/views.py +103 -39
- invenio_app_ils/cli.py +220 -260
- invenio_app_ils/closures/api.py +72 -7
- invenio_app_ils/closures/serializers/__init__.py +16 -0
- invenio_app_ils/closures/serializers/response.py +35 -0
- invenio_app_ils/closures/serializers/schema.py +28 -0
- invenio_app_ils/closures/tasks.py +4 -11
- invenio_app_ils/closures/views.py +66 -0
- invenio_app_ils/config.py +207 -150
- invenio_app_ils/document_requests/api.py +6 -21
- invenio_app_ils/document_requests/loaders/__init__.py +4 -12
- invenio_app_ils/document_requests/mappings/{v6 → os-v1}/__init__.py +2 -2
- invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +196 -0
- invenio_app_ils/document_requests/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/document_requests/mappings/os-v2/document_requests/document_request-v1.0.0.json +196 -0
- invenio_app_ils/document_requests/notifications/api.py +2 -7
- invenio_app_ils/document_requests/notifications/messages.py +3 -7
- invenio_app_ils/document_requests/search.py +2 -6
- invenio_app_ils/document_requests/views.py +4 -10
- invenio_app_ils/documents/api.py +19 -25
- invenio_app_ils/documents/indexer.py +13 -20
- invenio_app_ils/documents/jsonresolvers/document_circulation.py +11 -33
- invenio_app_ils/documents/jsonresolvers/document_eitem.py +1 -0
- invenio_app_ils/documents/jsonresolvers/document_item.py +8 -9
- invenio_app_ils/documents/jsonresolvers/document_stock.py +7 -7
- invenio_app_ils/documents/loaders/jsonschemas/document.py +3 -14
- invenio_app_ils/documents/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +932 -0
- invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +1066 -0
- invenio_app_ils/documents/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +932 -0
- invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +1066 -0
- invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +102 -11
- invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +1066 -0
- invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +732 -0
- invenio_app_ils/eitems/api.py +41 -7
- invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +6 -6
- invenio_app_ils/eitems/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +139 -0
- invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +142 -0
- invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +179 -0
- invenio_app_ils/{series/mappings/v6 → eitems/mappings/os-v2}/__init__.py +1 -1
- invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +139 -0
- invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +142 -0
- invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +179 -0
- invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +12 -2
- invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +142 -0
- invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +179 -0
- invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +120 -0
- invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +120 -0
- invenio_app_ils/eitems/search.py +3 -9
- invenio_app_ils/errors.py +119 -6
- invenio_app_ils/ext.py +15 -18
- invenio_app_ils/facets.py +13 -15
- invenio_app_ils/files/receivers.py +1 -1
- invenio_app_ils/files/views.py +1 -2
- invenio_app_ils/ill/api.py +1 -2
- invenio_app_ils/ill/config.py +10 -16
- invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +2 -3
- invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +1 -3
- invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +1 -3
- invenio_app_ils/ill/loaders/__init__.py +3 -9
- invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +1 -8
- invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +3 -8
- invenio_app_ils/ill/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +254 -0
- invenio_app_ils/{acquisition/mappings/v6 → ill/mappings/os-v2}/__init__.py +1 -1
- invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +254 -0
- invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +14 -0
- invenio_app_ils/ill/notifications/api.py +1 -4
- invenio_app_ils/ill/search.py +3 -9
- invenio_app_ils/ill/serializers/__init__.py +1 -3
- invenio_app_ils/ill/views.py +2 -4
- invenio_app_ils/internal_locations/api.py +1 -4
- invenio_app_ils/internal_locations/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +108 -0
- invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +108 -0
- invenio_app_ils/internal_locations/search.py +1 -3
- invenio_app_ils/items/api.py +18 -15
- invenio_app_ils/items/indexer.py +1 -3
- invenio_app_ils/items/jsonresolvers/item_document.py +1 -1
- invenio_app_ils/items/jsonresolvers/item_internal_location.py +2 -6
- invenio_app_ils/items/loaders/jsonschemas/items.py +2 -0
- {tests/api/circulation → invenio_app_ils/items/mappings/os-v1}/__init__.py +1 -1
- invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +285 -0
- invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +326 -0
- {tests/api/ill → invenio_app_ils/items/mappings/os-v2}/__init__.py +1 -1
- invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +285 -0
- invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +326 -0
- invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +11 -0
- invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +326 -0
- invenio_app_ils/items/schemas/items/item-v1.0.0.json +22 -0
- invenio_app_ils/items/schemas/items/item-v2.0.0.json +172 -0
- invenio_app_ils/items/search.py +18 -11
- invenio_app_ils/items/serializers/item.py +7 -6
- invenio_app_ils/literature/api.py +1 -3
- invenio_app_ils/literature/search.py +3 -5
- invenio_app_ils/literature/serializers/csv.py +1 -3
- invenio_app_ils/literature/serializers/json.py +1 -3
- invenio_app_ils/locations/api.py +2 -4
- invenio_app_ils/locations/indexer.py +3 -9
- invenio_app_ils/locations/loaders/__init__.py +1 -3
- invenio_app_ils/locations/loaders/jsonschemas/location.py +4 -11
- invenio_app_ils/locations/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +90 -0
- invenio_app_ils/locations/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +90 -0
- invenio_app_ils/notifications/messages.py +4 -3
- invenio_app_ils/notifications/tasks.py +1 -3
- invenio_app_ils/notifications/views.py +2 -2
- invenio_app_ils/patrons/anonymization.py +53 -32
- invenio_app_ils/patrons/api.py +3 -5
- invenio_app_ils/patrons/cli.py +1 -2
- invenio_app_ils/patrons/indexer.py +4 -13
- invenio_app_ils/patrons/mappings/os-v1/__init__.py +8 -0
- invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +42 -0
- invenio_app_ils/patrons/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +42 -0
- invenio_app_ils/patrons/views.py +4 -14
- invenio_app_ils/permissions.py +93 -35
- invenio_app_ils/providers/api.py +2 -6
- invenio_app_ils/providers/config.py +11 -19
- invenio_app_ils/providers/indexer.py +2 -6
- invenio_app_ils/providers/mappings/{v6 → os-v1}/__init__.py +1 -1
- invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +57 -0
- invenio_app_ils/providers/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +57 -0
- invenio_app_ils/providers/mappings/v7/__init__.py +1 -1
- invenio_app_ils/providers/proxies.py +1 -3
- invenio_app_ils/records/api.py +3 -9
- invenio_app_ils/records/loaders/schemas/changed_by.py +1 -3
- invenio_app_ils/records/loaders/schemas/identifiers.py +23 -0
- invenio_app_ils/records/metadata_extensions.py +1 -4
- invenio_app_ils/records/permissions.py +8 -2
- invenio_app_ils/records/serializers/__init__.py +1 -4
- invenio_app_ils/records/views.py +4 -7
- invenio_app_ils/records_relations/api.py +11 -34
- invenio_app_ils/records_relations/indexer.py +1 -3
- invenio_app_ils/records_relations/retriever.py +14 -9
- invenio_app_ils/records_relations/views.py +16 -50
- invenio_app_ils/relations/api.py +17 -16
- invenio_app_ils/search_permissions.py +24 -24
- invenio_app_ils/series/api.py +10 -12
- invenio_app_ils/series/loaders/jsonschemas/series.py +3 -2
- invenio_app_ils/{items/mappings/v6 → series/mappings/os-v1}/__init__.py +1 -1
- invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +324 -0
- invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +396 -0
- {tests/api/acquisition → invenio_app_ils/series/mappings/os-v2}/__init__.py +1 -1
- invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +324 -0
- invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +396 -0
- invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +35 -3
- invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +396 -0
- invenio_app_ils/series/schemas/series/series-v2.0.0.json +354 -0
- invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +60 -0
- invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +9 -0
- invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +60 -0
- invenio_app_ils/stats/event_builders.py +73 -0
- invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +72 -0
- invenio_app_ils/stats/file_download/os-v2/__init__.py +9 -0
- invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +72 -0
- invenio_app_ils/stats/processors.py +30 -0
- invenio_app_ils/stats/templates/aggregations/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +41 -0
- {tests → invenio_app_ils/stats/templates/events}/__init__.py +2 -2
- invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +8 -0
- invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +8 -0
- invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +41 -0
- invenio_app_ils/templates/logged_out.html +12 -0
- invenio_app_ils/views.py +18 -4
- invenio_app_ils/vocabularies/api.py +1 -1
- invenio_app_ils/vocabularies/cli.py +6 -18
- invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +5 -0
- invenio_app_ils/vocabularies/data/identifier_schemes.json +5 -0
- invenio_app_ils/vocabularies/indexer.py +1 -4
- invenio_app_ils/vocabularies/jsonresolvers/licenses.py +2 -11
- invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +8 -0
- invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +23 -0
- invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +8 -0
- invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +23 -0
- invenio_app_ils/vocabularies/sources/base.py +1 -3
- invenio_app_ils/webpack.py +27 -0
- invenio_app_ils-6.1.0.dist-info/METADATA +627 -0
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info}/RECORD +227 -249
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info}/WHEEL +1 -1
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info}/entry_points.txt +9 -5
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info}/top_level.txt +0 -1
- invenio_app_ils/acquisition/mappings/v6/acq_orders/order-v1.0.0.json +0 -352
- invenio_app_ils/document_requests/mappings/v6/document_requests/document_request-v1.0.0.json +0 -199
- invenio_app_ils/documents/mappings/v6/documents/document-v1.0.0.json +0 -843
- invenio_app_ils/eitems/mappings/v6/eitems/eitem-v1.0.0.json +0 -131
- invenio_app_ils/ill/mappings/v6/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -242
- invenio_app_ils/internal_locations/mappings/v6/internal_locations/internal_location-v1.0.0.json +0 -110
- invenio_app_ils/items/mappings/v6/items/item-v1.0.0.json +0 -276
- invenio_app_ils/locations/mappings/v6/locations/location-v1.0.0.json +0 -92
- invenio_app_ils/notifications/admin.py +0 -57
- invenio_app_ils/patrons/mappings/v6/__init__.py +0 -8
- invenio_app_ils/patrons/mappings/v6/patrons/patron-v1.0.0.json +0 -44
- invenio_app_ils/providers/mappings/v6/providers/provider-v1.0.0.json +0 -59
- invenio_app_ils/series/mappings/v6/series/series-v1.0.0.json +0 -298
- invenio_app_ils/stats/aggregations/aggr_file_download/v6/aggr-file-download-v1.json +0 -59
- invenio_app_ils/stats/file_download/v6/file-download-v1.json +0 -74
- invenio_app_ils/version.py +0 -14
- invenio_app_ils/vocabularies/mappings/v6/__init__.py +0 -8
- invenio_app_ils/vocabularies/mappings/v6/vocabularies/vocabulary-v1.0.0.json +0 -25
- invenio_app_ils-1.0.0a54.dist-info/METADATA +0 -95
- tests/api/__init__.py +0 -8
- tests/api/acquisition/test_acq_orders_crud.py +0 -102
- tests/api/acquisition/test_acq_orders_permissions.py +0 -104
- tests/api/acquisition/test_acq_providers_permissions.py +0 -83
- tests/api/circulation/test_expired_loans.py +0 -88
- tests/api/circulation/test_loan_checkout.py +0 -216
- tests/api/circulation/test_loan_default_durations.py +0 -57
- tests/api/circulation/test_loan_document_resolver.py +0 -18
- tests/api/circulation/test_loan_extend.py +0 -132
- tests/api/circulation/test_loan_item_permissions.py +0 -139
- tests/api/circulation/test_loan_item_resolver.py +0 -26
- tests/api/circulation/test_loan_list_permissions.py +0 -104
- tests/api/circulation/test_loan_patron_resolver.py +0 -38
- tests/api/circulation/test_loan_request.py +0 -234
- tests/api/circulation/test_loan_update.py +0 -150
- tests/api/circulation/test_notifications.py +0 -229
- tests/api/conftest.py +0 -236
- tests/api/document_requests/__init__.py +0 -8
- tests/api/document_requests/test_document_requests.py +0 -131
- tests/api/document_requests/test_document_requests_permissions.py +0 -177
- tests/api/document_requests/test_notifications_filter.py +0 -36
- tests/api/ill/test_ill_brw_crud.py +0 -84
- tests/api/ill/test_ill_brw_reqs_patron_loan_create_action.py +0 -207
- tests/api/ill/test_ill_brw_reqs_patron_loan_extension_actions.py +0 -298
- tests/api/ill/test_ill_brw_reqs_permissions.py +0 -169
- tests/api/ill/test_ill_providers_permissions.py +0 -82
- tests/api/ils/__init__.py +0 -8
- tests/api/ils/documents/__init__.py +0 -8
- tests/api/ils/documents/test_document_crud.py +0 -57
- tests/api/ils/documents/test_document_permissions.py +0 -106
- tests/api/ils/documents/test_document_resolvers.py +0 -35
- tests/api/ils/eitems/__init__.py +0 -8
- tests/api/ils/eitems/test_eitems_crud.py +0 -41
- tests/api/ils/eitems/test_eitems_permissions.py +0 -84
- tests/api/ils/eitems/test_files.py +0 -172
- tests/api/ils/items/__init__.py +0 -8
- tests/api/ils/items/test_apis.py +0 -43
- tests/api/ils/items/test_items_crud.py +0 -60
- tests/api/ils/items/test_items_permissions.py +0 -107
- tests/api/ils/items/test_items_update.py +0 -47
- tests/api/ils/records_relations/__init__.py +0 -8
- tests/api/ils/records_relations/helpers.py +0 -115
- tests/api/ils/records_relations/test_records_relations_parentchild.py +0 -560
- tests/api/ils/records_relations/test_records_relations_sequence.py +0 -302
- tests/api/ils/records_relations/test_records_relations_siblings.py +0 -678
- tests/api/ils/series/__init__.py +0 -8
- tests/api/ils/series/test_series_permissions.py +0 -95
- tests/api/ils/test_anonymization.py +0 -189
- tests/api/ils/test_apis.py +0 -76
- tests/api/ils/test_closures.py +0 -324
- tests/api/ils/test_errors.py +0 -126
- tests/api/ils/test_facets.py +0 -84
- tests/api/ils/test_internal_locations.py +0 -96
- tests/api/ils/test_loaders.py +0 -55
- tests/api/ils/test_metadata_extensions.py +0 -205
- tests/api/ils/test_notifications.py +0 -183
- tests/api/ils/test_notifications_mails.py +0 -39
- tests/api/ils/test_notifications_permissions.py +0 -55
- tests/api/ils/test_patrons.py +0 -106
- tests/api/ils/test_record_delete.py +0 -46
- tests/api/ils/test_record_permissions.py +0 -135
- tests/api/ils/test_resolvers.py +0 -207
- tests/api/ils/test_stats.py +0 -160
- tests/api/ils/test_tasks.py +0 -211
- tests/api/ils/test_vocabularies.py +0 -35
- tests/conftest.py +0 -123
- tests/data/acq_orders.json +0 -89
- tests/data/acq_providers.json +0 -12
- tests/data/document_requests.json +0 -77
- tests/data/documents.json +0 -237
- tests/data/eitems.json +0 -66
- tests/data/ill_borrowing_requests.json +0 -77
- tests/data/ill_providers.json +0 -12
- tests/data/internal_locations.json +0 -22
- tests/data/items.json +0 -271
- tests/data/loans.json +0 -133
- tests/data/loans_most_loaned.json +0 -128
- tests/data/locations.json +0 -20
- tests/data/series.json +0 -33
- tests/helpers.py +0 -104
- tests/templates/notifications/title_body.html +0 -8
- tests/templates/notifications/title_body_html.html +0 -13
- tests/templates/notifications/title_body_html_ctx.html +0 -13
- tests/templates/notifications/title_only.html +0 -3
- tests/test_version.py +0 -17
- /tests/templates/notifications/blank.html → /invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
- /invenio_app_ils/stats/aggregations/aggr_file_download/{v6 → os-v1}/__init__.py +0 -0
- /invenio_app_ils/stats/file_download/{v6 → os-v1}/__init__.py +0 -0
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info/licenses}/AUTHORS.rst +0 -0
- {invenio_app_ils-1.0.0a54.dist-info → invenio_app_ils-6.1.0.dist-info/licenses}/LICENSE +0 -0
invenio_app_ils/ext.py
CHANGED
|
@@ -23,7 +23,7 @@ from .circulation import config as circulation_config
|
|
|
23
23
|
from .circulation.indexer import index_extra_fields_for_loan
|
|
24
24
|
from .circulation.receivers import register_circulation_signals
|
|
25
25
|
from .document_requests.api import DOCUMENT_REQUEST_PID_TYPE
|
|
26
|
-
from .documents.api import DOCUMENT_PID_TYPE
|
|
26
|
+
from .documents.api import DOCUMENT_PID_TYPE, Document
|
|
27
27
|
from .eitems.api import EITEM_PID_TYPE
|
|
28
28
|
from .files.receivers import register_files_signals
|
|
29
29
|
from .internal_locations.api import INTERNAL_LOCATION_PID_TYPE
|
|
@@ -68,16 +68,16 @@ class _InvenioAppIlsState(object):
|
|
|
68
68
|
return pid.pid_value, pid
|
|
69
69
|
|
|
70
70
|
def record_class_by_pid_type(self, pid_type):
|
|
71
|
-
endpoints = current_app.config
|
|
71
|
+
endpoints = current_app.config["RECORDS_REST_ENDPOINTS"]
|
|
72
72
|
return endpoints[pid_type]["record_class"]
|
|
73
73
|
|
|
74
74
|
def indexer_by_pid_type(self, pid_type):
|
|
75
|
-
endpoints = current_app.config
|
|
75
|
+
endpoints = current_app.config["RECORDS_REST_ENDPOINTS"]
|
|
76
76
|
_cls = endpoints[pid_type]["indexer_class"]
|
|
77
77
|
return _cls()
|
|
78
78
|
|
|
79
79
|
def search_by_pid_type(self, pid_type):
|
|
80
|
-
endpoints = current_app.config
|
|
80
|
+
endpoints = current_app.config["RECORDS_REST_ENDPOINTS"]
|
|
81
81
|
return endpoints[pid_type]["search_class"]
|
|
82
82
|
|
|
83
83
|
@cached_property
|
|
@@ -244,25 +244,26 @@ class InvenioAppIls(object):
|
|
|
244
244
|
# disable warnings being logged to Sentry
|
|
245
245
|
logging.getLogger("py.warnings").propagate = False
|
|
246
246
|
|
|
247
|
+
# each production instance has its own post-logout configuration
|
|
248
|
+
if app.config["DEBUG"]:
|
|
249
|
+
app.config["SECURITY_POST_LOGOUT_VIEW"] = "/logged-out"
|
|
250
|
+
|
|
247
251
|
def init_metadata_extensions(self, app):
|
|
248
252
|
"""Metadata extensions initialization."""
|
|
249
253
|
for rec_type in app.config["ILS_RECORDS_METADATA_EXTENSIONS"].keys():
|
|
250
|
-
namespaces = app.config["ILS_RECORDS_METADATA_NAMESPACES"].get(
|
|
251
|
-
|
|
252
|
-
)
|
|
253
|
-
extensions = app.config["ILS_RECORDS_METADATA_EXTENSIONS"].get(
|
|
254
|
-
rec_type, {}
|
|
255
|
-
)
|
|
254
|
+
namespaces = app.config["ILS_RECORDS_METADATA_NAMESPACES"].get(rec_type, {})
|
|
255
|
+
extensions = app.config["ILS_RECORDS_METADATA_EXTENSIONS"].get(rec_type, {})
|
|
256
|
+
rec_schema = extensions.get("schema", "{0}s-{0}-v1.0.0".format(rec_type))
|
|
256
257
|
setattr(
|
|
257
258
|
app.extensions["invenio-app-ils"],
|
|
258
259
|
"{}_metadata_extensions".format(rec_type),
|
|
259
|
-
MetadataExtensions(namespaces, extensions),
|
|
260
|
+
MetadataExtensions(namespaces, extensions["fields"]),
|
|
260
261
|
)
|
|
261
262
|
before_record_index.dynamic_connect(
|
|
262
263
|
before_record_index_hook,
|
|
263
264
|
sender=app,
|
|
264
265
|
weak=False,
|
|
265
|
-
index="
|
|
266
|
+
index=rec_schema.replace("/", "-").rstrip(".json"),
|
|
266
267
|
)
|
|
267
268
|
|
|
268
269
|
def init_loan_indexer_hook(self, app):
|
|
@@ -304,9 +305,7 @@ class InvenioAppIlsREST(InvenioAppIls):
|
|
|
304
305
|
register_location_signals()
|
|
305
306
|
|
|
306
307
|
|
|
307
|
-
def before_record_index_hook(
|
|
308
|
-
sender, json=None, record=None, index=None, **kwargs
|
|
309
|
-
):
|
|
308
|
+
def before_record_index_hook(sender, json=None, record=None, index=None, **kwargs):
|
|
310
309
|
"""Hook to transform record before indexing in ES.
|
|
311
310
|
|
|
312
311
|
:param sender: The entity sending the signal.
|
|
@@ -318,9 +317,7 @@ def before_record_index_hook(
|
|
|
318
317
|
add_es_metadata_extensions(json) # mutates json
|
|
319
318
|
|
|
320
319
|
|
|
321
|
-
def before_loan_index_hook(
|
|
322
|
-
sender, json=None, record=None, index=None, **kwargs
|
|
323
|
-
):
|
|
320
|
+
def before_loan_index_hook(sender, json=None, record=None, index=None, **kwargs):
|
|
324
321
|
"""Hook to transform loan record before ES indexing.
|
|
325
322
|
|
|
326
323
|
:param sender: The entity sending the signal.
|
invenio_app_ils/facets.py
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
"""Facets and factories for result filtering and aggregation."""
|
|
9
9
|
|
|
10
10
|
import arrow
|
|
11
|
-
from elasticsearch_dsl.query import Bool, Q, Range
|
|
12
11
|
from flask import current_app
|
|
12
|
+
from invenio_search.engine import dsl
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def keyed_range_filter(field, range_query, **kwargs):
|
|
@@ -27,8 +27,7 @@ def keyed_range_filter(field, range_query, **kwargs):
|
|
|
27
27
|
args[key] = value
|
|
28
28
|
|
|
29
29
|
args.update(kwargs.copy())
|
|
30
|
-
|
|
31
|
-
return Range(**{field: args})
|
|
30
|
+
return dsl.query.Range(**{field: args})
|
|
32
31
|
|
|
33
32
|
return inner
|
|
34
33
|
|
|
@@ -43,9 +42,9 @@ def default_value_when_missing_filter(field, missing_val):
|
|
|
43
42
|
|
|
44
43
|
def inner(values):
|
|
45
44
|
if missing_val in values:
|
|
46
|
-
return Bool(**{"must_not": {"exists": {"field": field}}})
|
|
45
|
+
return dsl.query.Bool(**{"must_not": {"exists": {"field": field}}})
|
|
47
46
|
else:
|
|
48
|
-
return Q("terms", **{field: values})
|
|
47
|
+
return dsl.Q("terms", **{field: values})
|
|
49
48
|
|
|
50
49
|
return inner
|
|
51
50
|
|
|
@@ -59,9 +58,9 @@ def exists_value_filter(field, filter_value):
|
|
|
59
58
|
|
|
60
59
|
def inner(values):
|
|
61
60
|
if filter_value in values:
|
|
62
|
-
return Bool(**{"must": {"exists": {"field": field}}})
|
|
61
|
+
return dsl.query.Bool(**{"must": {"exists": {"field": field}}})
|
|
63
62
|
else:
|
|
64
|
-
return Bool(**{"must_not": {"exists": {"field": field}}})
|
|
63
|
+
return dsl.query.Bool(**{"must_not": {"exists": {"field": field}}})
|
|
65
64
|
|
|
66
65
|
return inner
|
|
67
66
|
|
|
@@ -91,12 +90,13 @@ def overdue_loans_filter(field):
|
|
|
91
90
|
if range_key in values:
|
|
92
91
|
for key, value in mappings.items():
|
|
93
92
|
args[key] = value
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
"terms",
|
|
97
|
-
**{"state": current_app.config["CIRCULATION_STATES_LOAN_ACTIVE"]}
|
|
93
|
+
range_query = dsl.query.Range(**{field: args})
|
|
94
|
+
terms_query = dsl.Q(
|
|
95
|
+
"terms", **{"state": current_app.config["CIRCULATION_STATES_LOAN_ACTIVE"]}
|
|
98
96
|
)
|
|
99
97
|
|
|
98
|
+
return dsl.query.Bool(must=[range_query, terms_query])
|
|
99
|
+
|
|
100
100
|
return inner
|
|
101
101
|
|
|
102
102
|
|
|
@@ -104,9 +104,7 @@ def overdue_agg():
|
|
|
104
104
|
"""Create a custom aggregation with dynamic dates."""
|
|
105
105
|
return dict(
|
|
106
106
|
filter=dict(
|
|
107
|
-
terms=dict(
|
|
108
|
-
state=current_app.config["CIRCULATION_STATES_LOAN_ACTIVE"]
|
|
109
|
-
)
|
|
107
|
+
terms=dict(state=current_app.config["CIRCULATION_STATES_LOAN_ACTIVE"])
|
|
110
108
|
),
|
|
111
109
|
aggs=dict(
|
|
112
110
|
end_date=dict(
|
|
@@ -142,6 +140,6 @@ def date_range_filter(field, comparator):
|
|
|
142
140
|
input_date = str(arrow.get(values[0]).date())
|
|
143
141
|
except arrow.parser.ParserError:
|
|
144
142
|
raise ValueError("Input should be a date")
|
|
145
|
-
return
|
|
143
|
+
return dsl.RangeField(**{field: {comparator: input_date}})
|
|
146
144
|
|
|
147
145
|
return inner
|
|
@@ -14,7 +14,7 @@ from invenio_files_rest.signals import file_deleted, file_uploaded
|
|
|
14
14
|
from invenio_app_ils.eitems.indexer import index_eitem_after_files_changed
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def on_file_changed(obj):
|
|
17
|
+
def on_file_changed(sender, obj=None):
|
|
18
18
|
"""Index eitems after files changed."""
|
|
19
19
|
eta = arrow.utcnow() + current_app.config["ILS_INDEXER_TASK_DELAY"]
|
|
20
20
|
index_eitem_after_files_changed.apply_async([str(obj.bucket_id)], eta=eta)
|
invenio_app_ils/files/views.py
CHANGED
|
@@ -27,8 +27,7 @@ def create_files_blueprint(app):
|
|
|
27
27
|
default_media_type = options.get("default_media_type", "")
|
|
28
28
|
rec_serializers = options.get("record_serializers", {})
|
|
29
29
|
serializers = {
|
|
30
|
-
mime: obj_or_import_string(func)
|
|
31
|
-
for mime, func in rec_serializers.items()
|
|
30
|
+
mime: obj_or_import_string(func) for mime, func in rec_serializers.items()
|
|
32
31
|
}
|
|
33
32
|
record_bucket_view = RecordBucketResource.as_view(
|
|
34
33
|
RecordBucketResource.view_name.format(EITEM_PID_TYPE),
|
invenio_app_ils/ill/api.py
CHANGED
|
@@ -125,8 +125,7 @@ class BorrowingRequest(IlsRecord):
|
|
|
125
125
|
"borrowing-requests/{brw_req_pid}/provider"
|
|
126
126
|
)
|
|
127
127
|
_patron_resolver_path = (
|
|
128
|
-
"{scheme}://{host}/api/resolver/ill/"
|
|
129
|
-
"borrowing-requests/{brw_req_pid}/patron"
|
|
128
|
+
"{scheme}://{host}/api/resolver/ill/" "borrowing-requests/{brw_req_pid}/patron"
|
|
130
129
|
)
|
|
131
130
|
STATUSES = ["PENDING", "REQUESTED", "ON_LOAN", "RETURNED", "CANCELLED"]
|
|
132
131
|
EXTENSION_STATUSES = ["PENDING", "DECLINED"]
|
invenio_app_ils/ill/config.py
CHANGED
|
@@ -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,
|
|
@@ -29,7 +29,9 @@ from .search import BorrowingRequestsSearch
|
|
|
29
29
|
###############################################################################
|
|
30
30
|
# ILS ILL
|
|
31
31
|
###############################################################################
|
|
32
|
-
ILS_ILL_NOTIFICATIONS_MSG_BUILDER =
|
|
32
|
+
ILS_ILL_NOTIFICATIONS_MSG_BUILDER = (
|
|
33
|
+
"invenio_app_ils.ill.notifications.messages:notification_ill_msg_builder" # noqa
|
|
34
|
+
)
|
|
33
35
|
# Override default templates
|
|
34
36
|
ILS_ILL_NOTIFICATIONS_TEMPLATES = {}
|
|
35
37
|
# Function to select and filter which notifications should be sent
|
|
@@ -54,20 +56,14 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
54
56
|
indexer_class=RecordIndexer,
|
|
55
57
|
record_class=BorrowingRequest,
|
|
56
58
|
record_loaders={
|
|
57
|
-
"application/json":
|
|
58
|
-
"invenio_app_ils.ill.loaders:borrowing_request_loader"
|
|
59
|
-
)
|
|
59
|
+
"application/json": "invenio_app_ils.ill.loaders:borrowing_request_loader"
|
|
60
60
|
},
|
|
61
61
|
record_serializers={
|
|
62
|
-
"application/json":
|
|
63
|
-
"invenio_app_ils.ill.serializers:json_v1_response"
|
|
64
|
-
)
|
|
62
|
+
"application/json": "invenio_app_ils.ill.serializers:json_v1_response"
|
|
65
63
|
},
|
|
66
64
|
search_serializers={
|
|
67
|
-
"application/json":
|
|
68
|
-
|
|
69
|
-
),
|
|
70
|
-
"text/csv": ("invenio_app_ils.ill.serializers:csv_v1_search"),
|
|
65
|
+
"application/json": "invenio_app_ils.ill.serializers:json_v1_search",
|
|
66
|
+
"text/csv": "invenio_app_ils.ill.serializers:csv_v1_search",
|
|
71
67
|
},
|
|
72
68
|
search_serializers_aliases={
|
|
73
69
|
"csv": "text/csv",
|
|
@@ -80,7 +76,7 @@ RECORDS_REST_ENDPOINTS = dict(
|
|
|
80
76
|
default_media_type="application/json",
|
|
81
77
|
max_result_window=RECORDS_REST_MAX_RESULT_WINDOW,
|
|
82
78
|
error_handlers=dict(),
|
|
83
|
-
read_permission_factory_imp=
|
|
79
|
+
read_permission_factory_imp=PatronOwnerReadPermission,
|
|
84
80
|
# auth via search_factory
|
|
85
81
|
list_permission_factory_imp=authenticated_user_permission,
|
|
86
82
|
create_permission_factory_imp=backoffice_permission,
|
|
@@ -122,9 +118,7 @@ RECORDS_REST_FACETS = dict(
|
|
|
122
118
|
aggs=dict(
|
|
123
119
|
status=dict(terms=dict(field="status")),
|
|
124
120
|
provider=dict(
|
|
125
|
-
terms=dict(
|
|
126
|
-
field="provider.name.keyword", size=FACET_PROVIDER_LIMIT
|
|
127
|
-
)
|
|
121
|
+
terms=dict(field="provider.name.keyword", size=FACET_PROVIDER_LIMIT)
|
|
128
122
|
),
|
|
129
123
|
patron_loan_extension=dict(
|
|
130
124
|
terms=dict(field="patron_loan.extension.status")
|
|
@@ -41,6 +41,7 @@ def jsonresolver_loader(url_map):
|
|
|
41
41
|
"pid",
|
|
42
42
|
"publication_year",
|
|
43
43
|
"title",
|
|
44
|
+
"alternative_titles",
|
|
44
45
|
)
|
|
45
46
|
obj["authors"] = flatten_authors(obj["authors"])
|
|
46
47
|
return obj
|
|
@@ -48,9 +49,7 @@ def jsonresolver_loader(url_map):
|
|
|
48
49
|
def borrowing_request_resolver(request_pid):
|
|
49
50
|
"""Return the Document record for the given Brw Request or raise."""
|
|
50
51
|
request_record_cls = current_ils_ill.borrowing_request_record_cls
|
|
51
|
-
document_pid = get_field_value(
|
|
52
|
-
request_record_cls, request_pid, "document_pid"
|
|
53
|
-
)
|
|
52
|
+
document_pid = get_field_value(request_record_cls, request_pid, "document_pid")
|
|
54
53
|
return get_document(document_pid)
|
|
55
54
|
|
|
56
55
|
url_map.add(
|
|
@@ -31,9 +31,7 @@ def jsonresolver_loader(url_map):
|
|
|
31
31
|
def borrowing_request_resolver(request_pid):
|
|
32
32
|
"""Return the Patron record for the given Brw Request or raise."""
|
|
33
33
|
request_record_cls = current_ils_ill.borrowing_request_record_cls
|
|
34
|
-
patron_pid = get_field_value(
|
|
35
|
-
request_record_cls, request_pid, "patron_pid"
|
|
36
|
-
)
|
|
34
|
+
patron_pid = get_field_value(request_record_cls, request_pid, "patron_pid")
|
|
37
35
|
|
|
38
36
|
return get_patron_or_unknown_dump(patron_pid)
|
|
39
37
|
|
|
@@ -31,9 +31,7 @@ def jsonresolver_loader(url_map):
|
|
|
31
31
|
def borrowing_request_resolver(request_pid):
|
|
32
32
|
"""Return the Provider record for the given Brw Request or raise."""
|
|
33
33
|
request_record_cls = current_ils_ill.borrowing_request_record_cls
|
|
34
|
-
provider_pid = get_field_value(
|
|
35
|
-
request_record_cls, request_pid, "provider_pid"
|
|
36
|
-
)
|
|
34
|
+
provider_pid = get_field_value(request_record_cls, request_pid, "provider_pid")
|
|
37
35
|
|
|
38
36
|
provider_record_cls = current_ils_prov.provider_record_cls
|
|
39
37
|
provider = provider_record_cls.get_record_by_pid(provider_pid)
|
|
@@ -19,12 +19,6 @@ from .jsonschemas.patron_loan_extension_actions import (
|
|
|
19
19
|
|
|
20
20
|
borrowing_request_loader = ils_marshmallow_loader(BorrowingRequestSchemaV1)
|
|
21
21
|
patron_loan_create_action_loader = ils_marshmallow_loader(CreateLoanSchemaV1)
|
|
22
|
-
patron_loan_extension_request_loader = ils_marshmallow_loader(
|
|
23
|
-
|
|
24
|
-
)
|
|
25
|
-
patron_loan_extension_accept_loader = ils_marshmallow_loader(
|
|
26
|
-
AcceptExtensionSchemaV1
|
|
27
|
-
)
|
|
28
|
-
patron_loan_extension_decline_loader = ils_marshmallow_loader(
|
|
29
|
-
DeclineExtensionSchemaV1
|
|
30
|
-
)
|
|
22
|
+
patron_loan_extension_request_loader = ils_marshmallow_loader(RequestExtensionSchemaV1)
|
|
23
|
+
patron_loan_extension_accept_loader = ils_marshmallow_loader(AcceptExtensionSchemaV1)
|
|
24
|
+
patron_loan_extension_decline_loader = ils_marshmallow_loader(DeclineExtensionSchemaV1)
|
|
@@ -10,14 +10,7 @@
|
|
|
10
10
|
import arrow
|
|
11
11
|
from invenio_circulation.records.loaders.schemas.json import DateString
|
|
12
12
|
from invenio_rest.serializer import BaseSchema as InvenioBaseSchema
|
|
13
|
-
from marshmallow import
|
|
14
|
-
EXCLUDE,
|
|
15
|
-
ValidationError,
|
|
16
|
-
fields,
|
|
17
|
-
post_load,
|
|
18
|
-
pre_load,
|
|
19
|
-
validates,
|
|
20
|
-
)
|
|
13
|
+
from marshmallow import EXCLUDE, ValidationError, fields, post_load, pre_load, validates
|
|
21
14
|
|
|
22
15
|
from invenio_app_ils.circulation.loaders.schemas.json.base import (
|
|
23
16
|
transaction_location_pid_validator,
|
|
@@ -21,13 +21,9 @@ from invenio_app_ils.ill.api import BorrowingRequest
|
|
|
21
21
|
def validate_statuses(record):
|
|
22
22
|
"""Validate that the extension action can be performed."""
|
|
23
23
|
if record["status"] != "ON_LOAN":
|
|
24
|
-
raise ValidationError(
|
|
25
|
-
"This interlibrary loan is currently not on loan."
|
|
26
|
-
)
|
|
24
|
+
raise ValidationError("This interlibrary loan is currently not on loan.")
|
|
27
25
|
|
|
28
|
-
ext_status = (
|
|
29
|
-
record.get("patron_loan", {}).get("extension", {}).get("status")
|
|
30
|
-
)
|
|
26
|
+
ext_status = record.get("patron_loan", {}).get("extension", {}).get("status")
|
|
31
27
|
# status = None is valid, no extension requested yet
|
|
32
28
|
has_status = ext_status is not None
|
|
33
29
|
is_valid = ext_status in BorrowingRequest.EXTENSION_STATUSES
|
|
@@ -58,8 +54,7 @@ class RequestExtensionSchemaV1(InvenioBaseSchema):
|
|
|
58
54
|
ext_status = validate_statuses(record)
|
|
59
55
|
if ext_status == "PENDING":
|
|
60
56
|
raise ValidationError(
|
|
61
|
-
"An extension for this interlibrary loan has already been "
|
|
62
|
-
"requested."
|
|
57
|
+
"An extension for this interlibrary loan has already been " "requested."
|
|
63
58
|
)
|
|
64
59
|
elif ext_status == "DECLINED":
|
|
65
60
|
raise ValidationError(
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
{
|
|
2
|
+
"settings": {
|
|
3
|
+
"analysis": {
|
|
4
|
+
"analyzer": {
|
|
5
|
+
"email": {
|
|
6
|
+
"type": "custom",
|
|
7
|
+
"tokenizer": "uax_url_email"
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
"mappings": {
|
|
13
|
+
"date_detection": false,
|
|
14
|
+
"numeric_detection": false,
|
|
15
|
+
"properties": {
|
|
16
|
+
"$schema": {
|
|
17
|
+
"type": "keyword"
|
|
18
|
+
},
|
|
19
|
+
"_created": {
|
|
20
|
+
"type": "date"
|
|
21
|
+
},
|
|
22
|
+
"_updated": {
|
|
23
|
+
"type": "date"
|
|
24
|
+
},
|
|
25
|
+
"cancel_reason": {
|
|
26
|
+
"type": "text"
|
|
27
|
+
},
|
|
28
|
+
"created_by": {
|
|
29
|
+
"properties": {
|
|
30
|
+
"type": {
|
|
31
|
+
"type": "keyword"
|
|
32
|
+
},
|
|
33
|
+
"value": {
|
|
34
|
+
"type": "keyword"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"type": "object"
|
|
38
|
+
},
|
|
39
|
+
"document": {
|
|
40
|
+
"properties": {
|
|
41
|
+
"authors": {
|
|
42
|
+
"type": "text"
|
|
43
|
+
},
|
|
44
|
+
"cover_metadata": {
|
|
45
|
+
"properties": {},
|
|
46
|
+
"type": "object"
|
|
47
|
+
},
|
|
48
|
+
"edition": {
|
|
49
|
+
"type": "text"
|
|
50
|
+
},
|
|
51
|
+
"pid": {
|
|
52
|
+
"type": "keyword"
|
|
53
|
+
},
|
|
54
|
+
"publication_year": {
|
|
55
|
+
"type": "keyword"
|
|
56
|
+
},
|
|
57
|
+
"title": {
|
|
58
|
+
"type": "text"
|
|
59
|
+
},
|
|
60
|
+
"alternative_titles": {
|
|
61
|
+
"properties": {
|
|
62
|
+
"language": {
|
|
63
|
+
"type": "keyword"
|
|
64
|
+
},
|
|
65
|
+
"type": {
|
|
66
|
+
"type": "keyword"
|
|
67
|
+
},
|
|
68
|
+
"value": {
|
|
69
|
+
"type": "text"
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"type": "object"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"type": "object"
|
|
76
|
+
},
|
|
77
|
+
"document_pid": {
|
|
78
|
+
"type": "keyword"
|
|
79
|
+
},
|
|
80
|
+
"due_date": {
|
|
81
|
+
"type": "date"
|
|
82
|
+
},
|
|
83
|
+
"expected_delivery_date": {
|
|
84
|
+
"type": "date"
|
|
85
|
+
},
|
|
86
|
+
"legacy_id": {
|
|
87
|
+
"type": "keyword"
|
|
88
|
+
},
|
|
89
|
+
"provider": {
|
|
90
|
+
"properties": {
|
|
91
|
+
"name": {
|
|
92
|
+
"fields": {
|
|
93
|
+
"keyword": {
|
|
94
|
+
"type": "keyword"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"type": "text"
|
|
98
|
+
},
|
|
99
|
+
"pid": {
|
|
100
|
+
"type": "keyword"
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"type": "object"
|
|
104
|
+
},
|
|
105
|
+
"provider_pid": {
|
|
106
|
+
"type": "keyword"
|
|
107
|
+
},
|
|
108
|
+
"notes": {
|
|
109
|
+
"type": "text"
|
|
110
|
+
},
|
|
111
|
+
"patron": {
|
|
112
|
+
"properties": {
|
|
113
|
+
"email": {
|
|
114
|
+
"type": "text",
|
|
115
|
+
"analyzer": "email"
|
|
116
|
+
},
|
|
117
|
+
"id": {
|
|
118
|
+
"type": "keyword"
|
|
119
|
+
},
|
|
120
|
+
"name": {
|
|
121
|
+
"type": "text",
|
|
122
|
+
"fields": {
|
|
123
|
+
"keyword": {
|
|
124
|
+
"type": "keyword"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
},
|
|
128
|
+
"location_pid": {
|
|
129
|
+
"type": "keyword"
|
|
130
|
+
},
|
|
131
|
+
"pid": {
|
|
132
|
+
"type": "keyword"
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"type": "object"
|
|
136
|
+
},
|
|
137
|
+
"patron_pid": {
|
|
138
|
+
"type": "keyword"
|
|
139
|
+
},
|
|
140
|
+
"patron_loan": {
|
|
141
|
+
"properties": {
|
|
142
|
+
"extension": {
|
|
143
|
+
"properties": {
|
|
144
|
+
"notes": {
|
|
145
|
+
"type": "text"
|
|
146
|
+
},
|
|
147
|
+
"request_date": {
|
|
148
|
+
"type": "date"
|
|
149
|
+
},
|
|
150
|
+
"status": {
|
|
151
|
+
"type": "keyword"
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"type": "object"
|
|
155
|
+
},
|
|
156
|
+
"pid": {
|
|
157
|
+
"type": "keyword"
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
"type": "object"
|
|
161
|
+
},
|
|
162
|
+
"payment": {
|
|
163
|
+
"properties": {
|
|
164
|
+
"budget_code": {
|
|
165
|
+
"type": "keyword"
|
|
166
|
+
},
|
|
167
|
+
"debit_cost": {
|
|
168
|
+
"properties": {
|
|
169
|
+
"currency": {
|
|
170
|
+
"type": "keyword"
|
|
171
|
+
},
|
|
172
|
+
"value": {
|
|
173
|
+
"type": "float"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"type": "object"
|
|
177
|
+
},
|
|
178
|
+
"debit_cost_main_currency": {
|
|
179
|
+
"properties": {
|
|
180
|
+
"currency": {
|
|
181
|
+
"type": "keyword"
|
|
182
|
+
},
|
|
183
|
+
"value": {
|
|
184
|
+
"type": "float"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"type": "object"
|
|
188
|
+
},
|
|
189
|
+
"debit_date": {
|
|
190
|
+
"type": "date"
|
|
191
|
+
},
|
|
192
|
+
"debit_note": {
|
|
193
|
+
"type": "text"
|
|
194
|
+
},
|
|
195
|
+
"internal_purchase_requisition_id": {
|
|
196
|
+
"type": "keyword"
|
|
197
|
+
},
|
|
198
|
+
"mode": {
|
|
199
|
+
"type": "keyword"
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
"type": "object"
|
|
203
|
+
},
|
|
204
|
+
"pid": {
|
|
205
|
+
"type": "keyword"
|
|
206
|
+
},
|
|
207
|
+
"received_date": {
|
|
208
|
+
"type": "date"
|
|
209
|
+
},
|
|
210
|
+
"request_date": {
|
|
211
|
+
"type": "date"
|
|
212
|
+
},
|
|
213
|
+
"status": {
|
|
214
|
+
"type": "keyword"
|
|
215
|
+
},
|
|
216
|
+
"total": {
|
|
217
|
+
"properties": {
|
|
218
|
+
"currency": {
|
|
219
|
+
"type": "keyword"
|
|
220
|
+
},
|
|
221
|
+
"value": {
|
|
222
|
+
"type": "float"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"type": "object"
|
|
226
|
+
},
|
|
227
|
+
"total_main_currency": {
|
|
228
|
+
"properties": {
|
|
229
|
+
"currency": {
|
|
230
|
+
"type": "keyword"
|
|
231
|
+
},
|
|
232
|
+
"value": {
|
|
233
|
+
"type": "float"
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
"type": "object"
|
|
237
|
+
},
|
|
238
|
+
"type": {
|
|
239
|
+
"type": "keyword"
|
|
240
|
+
},
|
|
241
|
+
"updated_by": {
|
|
242
|
+
"properties": {
|
|
243
|
+
"type": {
|
|
244
|
+
"type": "keyword"
|
|
245
|
+
},
|
|
246
|
+
"value": {
|
|
247
|
+
"type": "keyword"
|
|
248
|
+
}
|
|
249
|
+
},
|
|
250
|
+
"type": "object"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|