invenio-app-ils 4.1.0__tar.gz → 4.2.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.
Files changed (583) hide show
  1. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/CHANGES.rst +5 -1
  2. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/PKG-INFO +6 -2
  3. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/__init__.py +1 -1
  4. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +2 -1
  5. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/api.py +13 -1
  6. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/serializers/item.py +4 -4
  7. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/permissions.py +43 -35
  8. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/views.py +1 -1
  9. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records_relations/api.py +1 -0
  10. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/relations/api.py +6 -1
  11. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/PKG-INFO +6 -2
  12. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/SOURCES.txt +0 -1
  13. invenio-app-ils-4.2.0/tests/api/ils/items/test_items_crud.py +99 -0
  14. invenio-app-ils-4.1.0/tests/api/ils/items/test_items_crud.py +0 -57
  15. invenio-app-ils-4.1.0/tests/api/ils/items/test_items_update.py +0 -40
  16. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/.editorconfig +0 -0
  17. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/.git-blame-ignore-revs +0 -0
  18. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/AUTHORS.rst +0 -0
  19. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/CONTRIBUTING.rst +0 -0
  20. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/INSTALL.rst +0 -0
  21. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/LICENSE +0 -0
  22. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/MANIFEST.in +0 -0
  23. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/README.rst +0 -0
  24. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/backend/Dockerfile +0 -0
  25. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/frontend/Dockerfile +0 -0
  26. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/frontend/conf.d/default.conf +0 -0
  27. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/frontend/nginx.conf +0 -0
  28. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/frontend/test.crt +0 -0
  29. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/frontend/test.key +0 -0
  30. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/lb/Dockerfile +0 -0
  31. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/lb/haproxy.cfg +0 -0
  32. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker/lb/haproxy_cert.pem +0 -0
  33. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker-compose.full.yml +0 -0
  34. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker-compose.yml +0 -0
  35. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docker-services.yml +0 -0
  36. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/Makefile +0 -0
  37. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/authors.rst +0 -0
  38. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/changes.rst +0 -0
  39. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/conf.py +0 -0
  40. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/configuration.rst +0 -0
  41. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/contributing.rst +0 -0
  42. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/index.rst +0 -0
  43. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/installation.rst +0 -0
  44. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/license.rst +0 -0
  45. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/make.bat +0 -0
  46. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/requirements.txt +0 -0
  47. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/docs/usage.rst +0 -0
  48. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/__init__.py +0 -0
  49. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/api.py +0 -0
  50. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/config.py +0 -0
  51. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/errors.py +0 -0
  52. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/ext.py +0 -0
  53. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/jsonresolvers/__init__.py +0 -0
  54. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +0 -0
  55. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/jsonresolvers/order_provider.py +0 -0
  56. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/loaders/__init__.py +0 -0
  57. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/loaders/jsonschemas/__init__.py +0 -0
  58. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/loaders/jsonschemas/order.py +0 -0
  59. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/__init__.py +0 -0
  60. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
  61. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +0 -0
  62. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
  63. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/os-v2/acq_orders/order-v1.0.0.json +0 -0
  64. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/v7/__init__.py +0 -0
  65. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/mappings/v7/acq_orders/order-v1.0.0.json +0 -0
  66. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/proxies.py +0 -0
  67. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/schemas/__init__.py +0 -0
  68. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/schemas/acq_orders/order-v1.0.0.json +0 -0
  69. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/acquisition/search.py +0 -0
  70. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/__init__.py +0 -0
  71. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/api.py +0 -0
  72. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/config.py +1 -1
  73. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/indexer.py +0 -0
  74. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/jsonresolvers/__init__.py +0 -0
  75. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/jsonresolvers/loan.py +0 -0
  76. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/__init__.py +0 -0
  77. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/__init__.py +0 -0
  78. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/__init__.py +0 -0
  79. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/base.py +0 -0
  80. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/bulk_extend.py +0 -0
  81. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +0 -0
  82. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/loaders/schemas/json/loan_update_dates.py +0 -0
  83. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/notifications/__init__.py +0 -0
  84. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/notifications/api.py +0 -0
  85. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/notifications/messages.py +0 -0
  86. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/notifications/tasks.py +0 -0
  87. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/receivers.py +0 -0
  88. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/search.py +0 -0
  89. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/serializers/__init__.py +0 -0
  90. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/serializers/csv.py +0 -0
  91. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/serializers/custom_fields.py +0 -0
  92. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/serializers/json.py +0 -0
  93. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/serializers/response.py +0 -0
  94. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/stats/__init__.py +0 -0
  95. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/stats/api.py +0 -0
  96. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/stats/views.py +0 -0
  97. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/tasks.py +0 -0
  98. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/bulk_extend.html +0 -0
  99. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/cancel.html +0 -0
  100. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkin.html +0 -0
  101. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkout.html +0 -0
  102. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/extend.html +0 -0
  103. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/overdue_reminder.html +0 -0
  104. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request.html +0 -0
  105. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request_no_items.html +0 -0
  106. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/will_expire_in_reminder.html +0 -0
  107. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/transitions/__init__.py +0 -0
  108. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/transitions/transitions.py +0 -0
  109. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/utils.py +0 -0
  110. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/circulation/views.py +0 -0
  111. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/cli.py +0 -0
  112. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/closures/__init__.py +0 -0
  113. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/closures/api.py +0 -0
  114. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/closures/tasks.py +0 -0
  115. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/config.py +0 -0
  116. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/demo_data/documents.json +0 -0
  117. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/demo_data/items.json +0 -0
  118. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/__init__.py +0 -0
  119. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/api.py +0 -0
  120. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/indexer.py +0 -0
  121. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/jsonresolvers/__init__.py +0 -0
  122. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_document.py +0 -0
  123. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/jsonresolvers/document_request_patron.py +0 -0
  124. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/__init__.py +0 -0
  125. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/jsonschemas/__init__.py +0 -0
  126. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request.py +0 -0
  127. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_decline.py +0 -0
  128. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_document.py +0 -0
  129. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_provider.py +0 -0
  130. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/__init__.py +0 -0
  131. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/os-v1/__init__.py +0 -0
  132. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +0 -0
  133. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/os-v2/__init__.py +0 -0
  134. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/os-v2/document_requests/document_request-v1.0.0.json +0 -0
  135. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/v7/__init__.py +0 -0
  136. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/mappings/v7/document_requests/document_request-v1.0.0.json +0 -0
  137. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/notifications/__init__.py +0 -0
  138. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/notifications/api.py +0 -0
  139. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/notifications/messages.py +0 -0
  140. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/schemas/__init__.py +0 -0
  141. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/schemas/document_requests/document_request-v1.0.0.json +0 -0
  142. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/search.py +0 -0
  143. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_accept.html +0 -0
  144. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_in_catalog.html +0 -0
  145. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_not_found.html +0 -0
  146. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_other.html +0 -0
  147. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_user_cancel.html +0 -0
  148. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/document_requests/views.py +0 -0
  149. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/__init__.py +0 -0
  150. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/api.py +0 -0
  151. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/indexer.py +0 -0
  152. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/__init__.py +0 -0
  153. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/document_circulation.py +0 -0
  154. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/document_eitem.py +0 -0
  155. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/document_item.py +0 -0
  156. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/document_relations.py +0 -0
  157. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/jsonresolvers/document_stock.py +1 -1
  158. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/loaders/__init__.py +0 -0
  159. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/loaders/jsonschemas/__init__.py +0 -0
  160. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/loaders/jsonschemas/document.py +1 -1
  161. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/__init__.py +0 -0
  162. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v1/__init__.py +0 -0
  163. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +0 -0
  164. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +0 -0
  165. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v2/__init__.py +0 -0
  166. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +0 -0
  167. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +0 -0
  168. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/v7/__init__.py +0 -0
  169. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +0 -0
  170. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +0 -0
  171. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/schemas/__init__.py +0 -0
  172. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/schemas/documents/document-v1.0.0.json +0 -0
  173. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +0 -0
  174. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/search.py +0 -0
  175. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/documents/utils.py +0 -0
  176. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/__init__.py +0 -0
  177. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/api.py +0 -0
  178. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/indexer.py +0 -0
  179. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/jsonresolvers/__init__.py +0 -0
  180. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/jsonresolvers/eitem_document.py +0 -0
  181. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/jsonresolvers/eitem_files.py +0 -0
  182. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/loaders/__init__.py +0 -0
  183. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/loaders/jsonschemas/__init__.py +0 -0
  184. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +1 -1
  185. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/__init__.py +0 -0
  186. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v1/__init__.py +0 -0
  187. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +0 -0
  188. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +0 -0
  189. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +0 -0
  190. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v2/__init__.py +0 -0
  191. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +0 -0
  192. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +0 -0
  193. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +0 -0
  194. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/v7/__init__.py +0 -0
  195. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +0 -0
  196. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +0 -0
  197. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +0 -0
  198. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/schemas/__init__.py +0 -0
  199. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v1.0.0.json +0 -0
  200. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +0 -0
  201. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +0 -0
  202. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/eitems/search.py +0 -0
  203. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/errors.py +0 -0
  204. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ext.py +0 -0
  205. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/facets.py +0 -0
  206. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/fetchers.py +0 -0
  207. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/files/__init__.py +0 -0
  208. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/files/receivers.py +0 -0
  209. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/files/views.py +0 -0
  210. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/__init__.py +0 -0
  211. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/api.py +0 -0
  212. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/config.py +0 -0
  213. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/errors.py +0 -0
  214. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/ext.py +0 -0
  215. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/jsonresolvers/__init__.py +0 -0
  216. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +0 -0
  217. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +0 -0
  218. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +0 -0
  219. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/loaders/__init__.py +0 -0
  220. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/loaders/jsonschemas/__init__.py +0 -0
  221. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/loaders/jsonschemas/borrowing_request.py +0 -0
  222. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +0 -0
  223. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +0 -0
  224. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/__init__.py +0 -0
  225. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/os-v1/__init__.py +0 -0
  226. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  227. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/os-v2/__init__.py +0 -0
  228. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  229. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/v7/__init__.py +0 -0
  230. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  231. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/notifications/__init__.py +0 -0
  232. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/notifications/api.py +0 -0
  233. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/notifications/messages.py +0 -0
  234. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/proxies.py +0 -0
  235. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/schemas/__init__.py +0 -0
  236. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/schemas/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  237. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/search.py +0 -0
  238. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/serializers/__init__.py +0 -0
  239. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/serializers/csv.py +0 -0
  240. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/serializers/custom_fields.py +0 -0
  241. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/serializers/json.py +0 -0
  242. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_accept.html +0 -0
  243. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_decline.html +0 -0
  244. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_request.html +0 -0
  245. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/ill/views.py +0 -0
  246. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/indexer.py +0 -0
  247. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/__init__.py +0 -0
  248. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/api.py +0 -0
  249. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/indexer.py +0 -0
  250. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/jsonresolvers/__init__.py +0 -0
  251. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/jsonresolvers/internal_location.py +0 -0
  252. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/loaders/__init__.py +0 -0
  253. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/__init__.py +0 -0
  254. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/loaders/jsonschemas/internal_location.py +0 -0
  255. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/__init__.py +0 -0
  256. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/os-v1/__init__.py +0 -0
  257. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +0 -0
  258. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +0 -0
  259. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +0 -0
  260. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/v7/__init__.py +0 -0
  261. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/mappings/v7/internal_locations/internal_location-v1.0.0.json +0 -0
  262. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/schemas/__init__.py +0 -0
  263. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/schemas/internal_locations/internal_location-v1.0.0.json +0 -0
  264. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/internal_locations/search.py +0 -0
  265. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/__init__.py +0 -0
  266. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/indexer.py +0 -0
  267. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/jsonresolvers/__init__.py +0 -0
  268. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/jsonresolvers/item_document.py +0 -0
  269. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/jsonresolvers/item_internal_location.py +0 -0
  270. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/jsonresolvers/item_loan.py +0 -0
  271. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/loaders/__init__.py +0 -0
  272. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/loaders/jsonschemas/__init__.py +0 -0
  273. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/loaders/jsonschemas/items.py +1 -1
  274. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/__init__.py +0 -0
  275. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v1/__init__.py +0 -0
  276. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +0 -0
  277. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +0 -0
  278. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v2/__init__.py +0 -0
  279. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +0 -0
  280. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +0 -0
  281. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/v7/__init__.py +0 -0
  282. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +0 -0
  283. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +0 -0
  284. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/schemas/__init__.py +0 -0
  285. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/schemas/items/item-v1.0.0.json +0 -0
  286. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/schemas/items/item-v2.0.0.json +0 -0
  287. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/search.py +0 -0
  288. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/items/serializers/__init__.py +0 -0
  289. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/__init__.py +0 -0
  290. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/api.py +0 -0
  291. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/covers_builder.py +0 -0
  292. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/search.py +0 -0
  293. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/serializers/__init__.py +0 -0
  294. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/serializers/csv.py +0 -0
  295. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/serializers/custom_fields.py +0 -0
  296. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/literature/serializers/json.py +0 -0
  297. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/__init__.py +0 -0
  298. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/api.py +0 -0
  299. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/indexer.py +0 -0
  300. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/loaders/__init__.py +0 -0
  301. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/loaders/jsonschemas/__init__.py +0 -0
  302. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/loaders/jsonschemas/location.py +0 -0
  303. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/__init__.py +0 -0
  304. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/os-v1/__init__.py +0 -0
  305. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +0 -0
  306. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/os-v2/__init__.py +0 -0
  307. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +0 -0
  308. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/v7/__init__.py +0 -0
  309. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/mappings/v7/locations/location-v1.0.0.json +0 -0
  310. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/receivers.py +0 -0
  311. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/schemas/__init__.py +0 -0
  312. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/schemas/locations/location-v1.0.0.json +0 -0
  313. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/locations/search.py +0 -0
  314. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/minters.py +0 -0
  315. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/__init__.py +0 -0
  316. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/admin.py +0 -0
  317. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/api.py +0 -0
  318. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/backends/__init__.py +0 -0
  319. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/backends/mail.py +0 -0
  320. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/messages.py +0 -0
  321. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/models.py +0 -0
  322. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/tasks.py +0 -0
  323. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/notifications/views.py +0 -0
  324. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/__init__.py +0 -0
  325. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/anonymization.py +0 -0
  326. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/api.py +0 -0
  327. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/cli.py +0 -0
  328. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/indexer.py +0 -0
  329. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/__init__.py +0 -0
  330. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/os-v1/__init__.py +0 -0
  331. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +0 -0
  332. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/os-v2/__init__.py +0 -0
  333. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +0 -0
  334. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/v7/__init__.py +0 -0
  335. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/mappings/v7/patrons/patron-v1.0.0.json +0 -0
  336. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/search.py +0 -0
  337. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/patrons/views.py +0 -0
  338. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/__init__.py +0 -0
  339. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/api.py +0 -0
  340. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/config.py +0 -0
  341. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/errors.py +0 -0
  342. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/ext.py +0 -0
  343. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/indexer.py +0 -0
  344. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/loaders/__init__.py +0 -0
  345. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/loaders/jsonschemas/__init__.py +0 -0
  346. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/loaders/jsonschemas/provider.py +0 -0
  347. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/__init__.py +0 -0
  348. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/os-v1/__init__.py +0 -0
  349. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +0 -0
  350. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/os-v2/__init__.py +0 -0
  351. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +0 -0
  352. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/v7/__init__.py +0 -0
  353. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/mappings/v7/providers/provider-v1.0.0.json +0 -0
  354. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/proxies.py +0 -0
  355. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/schemas/__init__.py +0 -0
  356. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/schemas/providers/provider-v1.0.0.json +0 -0
  357. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/providers/search.py +0 -0
  358. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/proxies.py +0 -0
  359. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/__init__.py +0 -0
  360. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/api.py +0 -0
  361. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/jsonresolvers/__init__.py +0 -0
  362. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/jsonresolvers/api.py +0 -0
  363. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/listeners.py +0 -0
  364. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/__init__.py +0 -0
  365. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/schemas/__init__.py +0 -0
  366. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/schemas/changed_by.py +0 -0
  367. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/schemas/identifiers.py +0 -0
  368. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/schemas/preserve_cover_metadata.py +0 -0
  369. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/loaders/schemas/price.py +0 -0
  370. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/metadata_extensions.py +0 -0
  371. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/permissions.py +0 -0
  372. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/receivers.py +0 -0
  373. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/schemas/__init__.py +0 -0
  374. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/schemas/json.py +0 -0
  375. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records/serializers/__init__.py +0 -0
  376. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records_relations/__init__.py +0 -0
  377. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records_relations/indexer.py +0 -0
  378. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records_relations/retriever.py +0 -0
  379. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/records_relations/views.py +0 -0
  380. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/relations/__init__.py +0 -0
  381. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/relations/nodes.py +0 -0
  382. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/search_permissions.py +0 -0
  383. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/__init__.py +0 -0
  384. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/api.py +0 -0
  385. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/indexer.py +0 -0
  386. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/jsonresolvers/__init__.py +0 -0
  387. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/jsonresolvers/series_relations.py +0 -0
  388. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/loaders/__init__.py +0 -0
  389. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/loaders/jsonschemas/__init__.py +0 -0
  390. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/loaders/jsonschemas/series.py +1 -1
  391. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/__init__.py +0 -0
  392. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v1/__init__.py +0 -0
  393. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +0 -0
  394. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +0 -0
  395. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v2/__init__.py +0 -0
  396. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +0 -0
  397. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +0 -0
  398. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/v7/__init__.py +0 -0
  399. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +0 -0
  400. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +0 -0
  401. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/schemas/__init__.py +0 -0
  402. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/schemas/series/series-v1.0.0.json +0 -0
  403. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/schemas/series/series-v2.0.0.json +0 -0
  404. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/series/search.py +0 -0
  405. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/signals.py +0 -0
  406. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/static/images/placeholder.png +0 -0
  407. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/static_pages/search_guide.html +0 -0
  408. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/__init__.py +0 -0
  409. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/__init__.py +0 -0
  410. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py +0 -0
  411. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py +0 -0
  412. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +0 -0
  413. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +0 -0
  414. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +0 -0
  415. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/__init__.py +0 -0
  416. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/aggr-file-download-v1.json +0 -0
  417. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/__init__.py +0 -0
  418. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/os-v1/__init__.py +0 -0
  419. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +0 -0
  420. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/os-v2/__init__.py +0 -0
  421. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +0 -0
  422. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/v7/__init__.py +0 -0
  423. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/stats/file_download/v7/file-download-v1.json +0 -0
  424. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/templates/invenio_app_ils/mail/footer.html +0 -0
  425. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/templates/invenio_app_ils/notifications/footer.html +0 -0
  426. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/templates/logged_out.html +0 -0
  427. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/translations/.gitkeep +0 -0
  428. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/views.py +0 -0
  429. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/__init__.py +0 -0
  430. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/api.py +0 -0
  431. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/cli.py +0 -0
  432. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/__init__.py +0 -0
  433. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/acq_mediums.json +0 -0
  434. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +0 -0
  435. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/acq_order_line_purchase_types.json +0 -0
  436. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/acq_payment_modes.json +0 -0
  437. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/acq_recipients.json +0 -0
  438. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/affiliation_identifier_schemes.json +0 -0
  439. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/alternative_identifier_schemes.json +0 -0
  440. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/alternative_title_types.json +0 -0
  441. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/author_identifier_schemes.json +0 -0
  442. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/author_roles.json +0 -0
  443. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/author_types.json +0 -0
  444. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/conference_identifier_schemes.json +0 -0
  445. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/countries.json +0 -0
  446. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/currencies.json +0 -0
  447. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/docreq_payment_method.json +0 -0
  448. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/docreq_request_type.json +0 -0
  449. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/document_identifiers_materials.json +0 -0
  450. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/document_requests_mediums.json +0 -0
  451. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/document_subjects.json +0 -0
  452. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/eitem_sources.json +0 -0
  453. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/identifier_schemes.json +0 -0
  454. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/ill_item_types.json +0 -0
  455. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/ill_payment_modes.json +0 -0
  456. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/item_mediums.json +0 -0
  457. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/provider_types.json +0 -0
  458. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/series_identifier_schemes.json +0 -0
  459. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/series_url_access_restrictions.json +0 -0
  460. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/data/tags.json +0 -0
  461. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/indexer.py +0 -0
  462. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/jsonresolvers/__init__.py +0 -0
  463. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/jsonresolvers/licenses.py +0 -0
  464. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/__init__.py +0 -0
  465. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +0 -0
  466. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
  467. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +0 -0
  468. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
  469. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/v7/__init__.py +0 -0
  470. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
  471. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/schemas/__init__.py +0 -0
  472. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/schemas/vocabularies/vocabulary-v1.0.0.json +0 -0
  473. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/search.py +0 -0
  474. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/sources/__init__.py +0 -0
  475. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/sources/base.py +0 -0
  476. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/sources/json.py +0 -0
  477. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils/vocabularies/sources/opendefinition.py +0 -0
  478. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/dependency_links.txt +0 -0
  479. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/entry_points.txt +0 -0
  480. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/not-zip-safe +0 -0
  481. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/requires.txt +0 -0
  482. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/invenio_app_ils.egg-info/top_level.txt +0 -0
  483. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/pyproject.toml +0 -0
  484. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/run-tests.sh +0 -0
  485. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/bootstrap +0 -0
  486. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/build_assets +0 -0
  487. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/celery +0 -0
  488. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/console +0 -0
  489. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/server +0 -0
  490. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/setup +0 -0
  491. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/scripts/update +0 -0
  492. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/setup.cfg +0 -0
  493. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/setup.py +0 -0
  494. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/__init__.py +0 -0
  495. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/__init__.py +0 -0
  496. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/acquisition/__init__.py +0 -0
  497. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/acquisition/test_acq_orders_crud.py +0 -0
  498. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/acquisition/test_acq_orders_permissions.py +0 -0
  499. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/acquisition/test_acq_providers_permissions.py +0 -0
  500. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/__init__.py +0 -0
  501. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_expired_loans.py +0 -0
  502. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_bulk_extend.py +0 -0
  503. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_checkout.py +0 -0
  504. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_default_durations.py +0 -0
  505. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_document_resolver.py +0 -0
  506. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_extend.py +0 -0
  507. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_item_permissions.py +0 -0
  508. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_item_resolver.py +0 -0
  509. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_list_permissions.py +0 -0
  510. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_patron_resolver.py +0 -0
  511. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_request.py +0 -0
  512. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_loan_update.py +0 -0
  513. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/circulation/test_notifications.py +0 -0
  514. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/conftest.py +0 -0
  515. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/document_requests/__init__.py +0 -0
  516. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/document_requests/test_document_requests.py +0 -0
  517. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/document_requests/test_document_requests_permissions.py +0 -0
  518. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/document_requests/test_notifications_filter.py +0 -0
  519. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/__init__.py +0 -0
  520. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/test_ill_brw_crud.py +0 -0
  521. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/test_ill_brw_reqs_patron_loan_create_action.py +0 -0
  522. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/test_ill_brw_reqs_patron_loan_extension_actions.py +0 -0
  523. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/test_ill_brw_reqs_permissions.py +0 -0
  524. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ill/test_ill_providers_permissions.py +0 -0
  525. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/__init__.py +0 -0
  526. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/documents/__init__.py +0 -0
  527. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/documents/test_document_crud.py +0 -0
  528. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/documents/test_document_permissions.py +0 -0
  529. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/documents/test_document_resolvers.py +0 -0
  530. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/eitems/__init__.py +0 -0
  531. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/eitems/test_eitems_crud.py +0 -0
  532. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/eitems/test_eitems_permissions.py +0 -0
  533. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/eitems/test_files.py +0 -0
  534. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/items/__init__.py +0 -0
  535. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/items/test_apis.py +0 -0
  536. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/items/test_items_permissions.py +0 -0
  537. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/records_relations/__init__.py +0 -0
  538. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/records_relations/helpers.py +0 -0
  539. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/records_relations/test_records_relations_parentchild.py +0 -0
  540. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/records_relations/test_records_relations_sequence.py +0 -0
  541. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/records_relations/test_records_relations_siblings.py +0 -0
  542. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/series/__init__.py +0 -0
  543. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/series/test_series_permissions.py +0 -0
  544. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_anonymization.py +0 -0
  545. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_apis.py +0 -0
  546. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_closures.py +0 -0
  547. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_errors.py +0 -0
  548. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_facets.py +0 -0
  549. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_internal_locations.py +0 -0
  550. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_loaders.py +0 -0
  551. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_metadata_extensions.py +0 -0
  552. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_notifications.py +0 -0
  553. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_notifications_mails.py +0 -0
  554. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_notifications_permissions.py +0 -0
  555. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_patrons.py +0 -0
  556. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_record_delete.py +0 -0
  557. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_record_permissions.py +0 -0
  558. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_resolvers.py +0 -0
  559. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_stats.py +0 -0
  560. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_tasks.py +0 -0
  561. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/api/ils/test_vocabularies.py +0 -0
  562. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/conftest.py +0 -0
  563. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/acq_orders.json +0 -0
  564. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/acq_providers.json +0 -0
  565. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/document_requests.json +0 -0
  566. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/documents.json +0 -0
  567. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/eitems.json +0 -0
  568. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/ill_borrowing_requests.json +0 -0
  569. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/ill_providers.json +0 -0
  570. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/internal_locations.json +0 -0
  571. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/items.json +0 -0
  572. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/loans.json +0 -0
  573. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/loans_most_loaned.json +0 -0
  574. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/locations.json +0 -0
  575. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/data/series.json +0 -0
  576. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/helpers.py +0 -0
  577. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/templates/notifications/blank.html +0 -0
  578. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/templates/notifications/title_body.html +0 -0
  579. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/templates/notifications/title_body_html.html +0 -0
  580. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/templates/notifications/title_body_html_ctx.html +0 -0
  581. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/templates/notifications/title_only.html +0 -0
  582. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/test_post_logout_redirect.py +0 -0
  583. {invenio-app-ils-4.1.0 → invenio-app-ils-4.2.0}/tests/test_version.py +0 -0
@@ -8,6 +8,10 @@
8
8
  Changes
9
9
  =======
10
10
 
11
+ Version 4.2.0 (released 2024-11-04)
12
+
13
+ - self-checkout: barcode is now always uppercased to make searches case-insensitive
14
+
11
15
  Version 4.1.0 (released 2024-10-21)
12
16
 
13
17
  - search: apply the same search analyzers to the fields that needs to be searchable.
@@ -55,7 +59,7 @@ Version 2.0.0rc9 (released 2024-04-25)
55
59
  Version 2.0.0rc8 (released 2024-04-04)
56
60
 
57
61
  - records_relation: Simplify sorting
58
- - records_relations: Use sort_by paramemter from configs instead
62
+ - records_relations: Use sort_by parameter from configs instead
59
63
  - relations: Add functionality to sort json refs by relation_type
60
64
  - tests: circulation: Add new location for testing closures
61
65
  - circulation: loan_request: Fix dates comparison in get_offset_duration
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-app-ils
3
- Version: 4.1.0
3
+ Version: 4.2.0
4
4
  Summary: Invenio Integrated Library System.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-ils
6
6
  Author: CERN
@@ -51,6 +51,10 @@ https://invenioils.docs.cern.ch
51
51
  Changes
52
52
  =======
53
53
 
54
+ Version 4.2.0 (released 2024-11-04)
55
+
56
+ - self-checkout: barcode is now always uppercased to make searches case-insensitive
57
+
54
58
  Version 4.1.0 (released 2024-10-21)
55
59
 
56
60
  - search: apply the same search analyzers to the fields that needs to be searchable.
@@ -98,7 +102,7 @@ Version 2.0.0rc9 (released 2024-04-25)
98
102
  Version 2.0.0rc8 (released 2024-04-04)
99
103
 
100
104
  - records_relation: Simplify sorting
101
- - records_relations: Use sort_by paramemter from configs instead
105
+ - records_relations: Use sort_by parameter from configs instead
102
106
  - relations: Add functionality to sort json refs by relation_type
103
107
  - tests: circulation: Add new location for testing closures
104
108
  - circulation: loan_request: Fix dates comparison in get_offset_duration
@@ -7,6 +7,6 @@
7
7
 
8
8
  """invenio-app-ils."""
9
9
 
10
- __version__ = "4.1.0"
10
+ __version__ = "4.2.0"
11
11
 
12
12
  __all__ = ("__version__",)
@@ -12,7 +12,6 @@ from datetime import timedelta
12
12
  import arrow
13
13
  from flask import current_app
14
14
  from invenio_circulation.records.loaders.schemas.json import DateString
15
- from invenio_app_ils.proxies import current_app_ils
16
15
  from marshmallow import (
17
16
  Schema,
18
17
  ValidationError,
@@ -22,6 +21,8 @@ from marshmallow import (
22
21
  validates_schema,
23
22
  )
24
23
 
24
+ from invenio_app_ils.proxies import current_app_ils
25
+
25
26
  from .base import LoanBaseSchemaV1
26
27
 
27
28
 
@@ -160,15 +160,27 @@ class Item(IlsRecord):
160
160
  )
161
161
  }
162
162
 
163
+ @classmethod
164
+ def enforce_constraints(cls, data, **kwargs):
165
+ """Enforce constraints.
166
+
167
+ :param data (dict): dict that can be mutated to enforce constraints.
168
+ """
169
+ # barcode is a required field and it should be always uppercase
170
+ data["barcode"] = data["barcode"].upper()
171
+
163
172
  @classmethod
164
173
  def create(cls, data, id_=None, **kwargs):
165
174
  """Create Item record."""
166
175
  cls.build_resolver_fields(data)
167
- return super().create(data, id_=id_, **kwargs)
176
+ cls.enforce_constraints(data, **kwargs)
177
+ created = super().create(data, id_=id_, **kwargs)
178
+ return created
168
179
 
169
180
  def update(self, *args, **kwargs):
170
181
  """Update Item record."""
171
182
  super().update(*args, **kwargs)
183
+ self.enforce_constraints(self)
172
184
  self.build_resolver_fields(self)
173
185
 
174
186
  def delete(self, **kwargs):
@@ -49,7 +49,7 @@ class ItemCSVSerializer(CSVSerializer):
49
49
  pid, record, links_factory=links_factory, **kwargs
50
50
  )
51
51
  filter_circulation(item)
52
- field_cover_metadata(item.get('metadata', {}).get("document", {}))
52
+ field_cover_metadata(item.get("metadata", {}).get("document", {}))
53
53
  return item
54
54
 
55
55
  def transform_search_hit(self, pid, record_hit, links_factory=None, **kwargs):
@@ -58,7 +58,7 @@ class ItemCSVSerializer(CSVSerializer):
58
58
  pid, record_hit, links_factory=links_factory, **kwargs
59
59
  )
60
60
  filter_circulation(hit)
61
- field_cover_metadata(hit.get('metadata', {}).get("document", {}))
61
+ field_cover_metadata(hit.get("metadata", {}).get("document", {}))
62
62
  return hit
63
63
 
64
64
 
@@ -71,7 +71,7 @@ class ItemJSONSerializer(JSONSerializer):
71
71
  pid, record, links_factory=links_factory, **kwargs
72
72
  )
73
73
  filter_circulation(item)
74
- field_cover_metadata(item.get('metadata', {}).get("document", {}))
74
+ field_cover_metadata(item.get("metadata", {}).get("document", {}))
75
75
  return item
76
76
 
77
77
  def transform_search_hit(self, pid, record_hit, links_factory=None, **kwargs):
@@ -80,5 +80,5 @@ class ItemJSONSerializer(JSONSerializer):
80
80
  pid, record_hit, links_factory=links_factory, **kwargs
81
81
  )
82
82
  filter_circulation(hit)
83
- field_cover_metadata(hit.get('metadata', {}).get("document", {}))
83
+ field_cover_metadata(hit.get("metadata", {}).get("document", {}))
84
84
  return hit
@@ -134,25 +134,27 @@ def patron_owner_permission(record):
134
134
  def loan_checkout_permission(*args, **kwargs):
135
135
  """Return permission to allow admins and librarians to checkout and patrons to self-checkout if enabled."""
136
136
  if not has_request_context():
137
- # If from CLI, don't allow self-checkout
137
+ # CLI or Celery task
138
138
  return backoffice_permission()
139
+
139
140
  if current_user.is_anonymous:
140
141
  abort(401)
141
142
 
142
143
  is_admin_or_librarian = backoffice_permission().allows(g.identity)
143
144
  if is_admin_or_librarian:
144
145
  return backoffice_permission()
146
+
147
+ # ensure that only the loan's patron can do operations on this loan
145
148
  if len(args):
146
149
  loan = args[0]
147
150
  else:
148
- loan = kwargs.get("record", {})
149
- is_patron_current_user = current_user.id == int(loan.get("patron_pid"))
150
- if (
151
- current_app.config.get("ILS_SELF_CHECKOUT_ENABLED", False)
152
- and is_patron_current_user
153
- ):
151
+ loan = kwargs["record"]
152
+ is_patron_current_user = current_user.id == int(loan["patron_pid"])
153
+
154
+ if current_app.config["ILS_SELF_CHECKOUT_ENABLED"] and is_patron_current_user:
154
155
  return authenticated_user_permission()
155
- raise LoanCheckoutByPatronForbidden(int(loan.get("patron_pid")), current_user.id)
156
+
157
+ raise LoanCheckoutByPatronForbidden(int(loan["patron_pid"]), current_user.id)
156
158
 
157
159
 
158
160
  class PatronOwnerPermission(Permission):
@@ -163,36 +165,42 @@ class PatronOwnerPermission(Permission):
163
165
  super().__init__(UserNeed(int(record["patron_pid"])), backoffice_access_action)
164
166
 
165
167
 
168
+ _is_authenticated_user = [
169
+ "circulation-loan-request",
170
+ "patron-loans",
171
+ "bulk-loan-extension",
172
+ ]
173
+ _is_backoffice_permission = [
174
+ "circulation-loan-force-checkout",
175
+ "circulation-overdue-loan-notification",
176
+ "circulation-loan-update-dates",
177
+ "relations-create",
178
+ "relations-delete",
179
+ "stats-most-loaned",
180
+ "document-request-actions",
181
+ "bucket-create",
182
+ "ill-brwreq-patron-loan-create",
183
+ "ill-brwreq-patron-loan-extension-accept",
184
+ "ill-brwreq-patron-loan-extension-decline",
185
+ "send-notification-to-patron",
186
+ ]
187
+ _is_patron_owner_permission = [
188
+ "document-request-decline",
189
+ "ill-brwreq-patron-loan-extension-request",
190
+ ]
191
+
192
+
166
193
  def views_permissions_factory(action):
167
194
  """Return ILS views permissions factory."""
168
- is_authenticated_user = [
169
- "circulation-loan-request",
170
- "patron-loans",
171
- "bulk-loan-extension",
172
- ]
173
- is_backoffice_permission = [
174
- "circulation-loan-checkout",
175
- "circulation-loan-force-checkout",
176
- "circulation-overdue-loan-notification",
177
- "circulation-loan-update-dates",
178
- "relations-create",
179
- "relations-delete",
180
- "stats-most-loaned",
181
- "document-request-actions",
182
- "bucket-create",
183
- "ill-brwreq-patron-loan-create",
184
- "ill-brwreq-patron-loan-extension-accept",
185
- "ill-brwreq-patron-loan-extension-decline",
186
- "send-notification-to-patron",
187
- ]
188
- is_patron_owner_permission = [
189
- "document-request-decline",
190
- "ill-brwreq-patron-loan-extension-request",
191
- ]
192
- if action in is_authenticated_user:
195
+ if action in _is_authenticated_user:
193
196
  return authenticated_user_permission()
194
- elif action in is_backoffice_permission:
197
+ elif action in _is_backoffice_permission:
195
198
  return backoffice_permission()
196
- elif action in is_patron_owner_permission:
199
+ elif action in _is_patron_owner_permission:
197
200
  return PatronOwnerPermission
201
+ elif action == "circulation-loan-checkout":
202
+ if current_app.config["ILS_SELF_CHECKOUT_ENABLED"]:
203
+ return authenticated_user_permission()
204
+ else:
205
+ return backoffice_permission()
198
206
  return deny_all()
@@ -20,7 +20,7 @@ from invenio_app_ils.errors import StatsError
20
20
  from invenio_app_ils.permissions import backoffice_permission
21
21
  from invenio_app_ils.records.permissions import RecordPermission
22
22
  from invenio_app_ils.series.api import SERIES_PID_TYPE
23
- from invenio_app_ils.signals import record_viewed, file_downloaded
23
+ from invenio_app_ils.signals import file_downloaded, record_viewed
24
24
 
25
25
 
26
26
  def create_document_stats_blueprint(app):
@@ -425,6 +425,7 @@ class IlsRecordWithRelations(IlsRecord):
425
425
  def relations(self):
426
426
  """Get record relations."""
427
427
  from .retriever import get_relations
428
+
428
429
  return get_relations(self)
429
430
 
430
431
  def clear(self):
@@ -17,7 +17,12 @@ from sqlalchemy import and_, or_
17
17
  from invenio_app_ils.errors import RecordRelationsError
18
18
 
19
19
  ILS_RELATION_TYPE = namedtuple(
20
- "IlsRelationType", RelationType._fields + ("relation_class", "sort_by",)
20
+ "IlsRelationType",
21
+ RelationType._fields
22
+ + (
23
+ "relation_class",
24
+ "sort_by",
25
+ ),
21
26
  )
22
27
 
23
28
  LANGUAGE_RELATION = ILS_RELATION_TYPE(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: invenio-app-ils
3
- Version: 4.1.0
3
+ Version: 4.2.0
4
4
  Summary: Invenio Integrated Library System.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-ils
6
6
  Author: CERN
@@ -51,6 +51,10 @@ https://invenioils.docs.cern.ch
51
51
  Changes
52
52
  =======
53
53
 
54
+ Version 4.2.0 (released 2024-11-04)
55
+
56
+ - self-checkout: barcode is now always uppercased to make searches case-insensitive
57
+
54
58
  Version 4.1.0 (released 2024-10-21)
55
59
 
56
60
  - search: apply the same search analyzers to the fields that needs to be searchable.
@@ -98,7 +102,7 @@ Version 2.0.0rc9 (released 2024-04-25)
98
102
  Version 2.0.0rc8 (released 2024-04-04)
99
103
 
100
104
  - records_relation: Simplify sorting
101
- - records_relations: Use sort_by paramemter from configs instead
105
+ - records_relations: Use sort_by parameter from configs instead
102
106
  - relations: Add functionality to sort json refs by relation_type
103
107
  - tests: circulation: Add new location for testing closures
104
108
  - circulation: loan_request: Fix dates comparison in get_offset_duration
@@ -553,7 +553,6 @@ tests/api/ils/items/__init__.py
553
553
  tests/api/ils/items/test_apis.py
554
554
  tests/api/ils/items/test_items_crud.py
555
555
  tests/api/ils/items/test_items_permissions.py
556
- tests/api/ils/items/test_items_update.py
557
556
  tests/api/ils/records_relations/__init__.py
558
557
  tests/api/ils/records_relations/helpers.py
559
558
  tests/api/ils/records_relations/test_records_relations_parentchild.py
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2021 CERN.
4
+ #
5
+ # Invenio-Circulation is free software; you can redistribute it and/or modify
6
+ # it under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Tests items CRUD."""
9
+
10
+ from copy import deepcopy
11
+
12
+ import pytest
13
+
14
+ from invenio_app_ils.circulation.search import get_active_loan_by_item_pid
15
+ from invenio_app_ils.errors import (
16
+ DocumentNotFoundError,
17
+ InternalLocationNotFoundError,
18
+ ItemHasPastLoansError,
19
+ )
20
+ from invenio_app_ils.items.api import ITEM_PID_TYPE, Item
21
+
22
+
23
+ def test_item_create(app, testdata):
24
+ """Test creation of an item."""
25
+ item = Item.create(
26
+ dict(
27
+ pid="itemid-99",
28
+ document_pid="docid-1",
29
+ internal_location_pid="ilocid-4",
30
+ created_by=dict(type="script", value="demo"),
31
+ barcode="cm-348048",
32
+ status="CAN_CIRCULATE",
33
+ circulation_restriction="NO_RESTRICTION",
34
+ medium="PAPER",
35
+ )
36
+ )
37
+ assert "$schema" in item
38
+ assert "document" in item and "$ref" in item["document"]
39
+ assert item["barcode"] == "CM-348048"
40
+ assert "internal_location" in item and "$ref" in item["internal_location"]
41
+
42
+ item = Item.get_record_by_pid("itemid-1")
43
+ item = item.replace_refs()
44
+ assert "document" in item and item["document"]["title"]
45
+ assert "internal_location" in item and item["internal_location"]["name"]
46
+
47
+
48
+ def test_item_update(app, db, testdata):
49
+ """Test update of an item."""
50
+ item = Item.get_record_by_pid("itemid-1")
51
+ item.update(dict(barcode="cm-348048"))
52
+ item.commit()
53
+ db.session.commit()
54
+
55
+ assert Item.get_record_by_pid("itemid-1")["barcode"] == "CM-348048"
56
+
57
+
58
+ def test_item_validation(db, testdata):
59
+ """Test validation when updating an item."""
60
+ item_pid = testdata["items"][0]["pid"]
61
+ orginal_item = Item.get_record_by_pid(item_pid)
62
+
63
+ # change document pid
64
+ item = deepcopy(orginal_item)
65
+ item["document_pid"] = "not_found_doc"
66
+ with pytest.raises(DocumentNotFoundError):
67
+ item.commit()
68
+
69
+ # change internal location pid
70
+ item = deepcopy(orginal_item)
71
+ item["internal_location_pid"] = "not_found_pid"
72
+ with pytest.raises(InternalLocationNotFoundError):
73
+ item.commit()
74
+
75
+
76
+ def test_item_references(db, testdata):
77
+ """Test references when updating an item."""
78
+
79
+ def get_active_loan_pid_and_item_pid():
80
+ for t in testdata["items"]:
81
+ if t["status"] == "CAN_CIRCULATE":
82
+ item_pid = dict(type=ITEM_PID_TYPE, value=t["pid"])
83
+ active_loan = get_active_loan_by_item_pid(item_pid).execute().hits
84
+ total = active_loan.total.value
85
+ if total > 0:
86
+ return t["pid"], active_loan[0]["pid"]
87
+
88
+ # change document pid while is on loan
89
+ item_pid, loan_pid = get_active_loan_pid_and_item_pid()
90
+ item = Item.get_record_by_pid(item_pid)
91
+ item["document_pid"] = "docid-1"
92
+ with pytest.raises(ItemHasPastLoansError):
93
+ item.commit()
94
+
95
+ # change document to one that does not exist
96
+ item = Item.get_record_by_pid("itemid-1")
97
+ item["document_pid"] = "not_found_doc"
98
+ with pytest.raises(DocumentNotFoundError):
99
+ item.commit()
@@ -1,57 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2021 CERN.
4
- #
5
- # Invenio-Circulation is free software; you can redistribute it and/or modify
6
- # it under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Tests items CRUD."""
9
-
10
- from copy import deepcopy
11
-
12
- import pytest
13
-
14
- from invenio_app_ils.errors import DocumentNotFoundError, InternalLocationNotFoundError
15
- from invenio_app_ils.items.api import Item
16
-
17
-
18
- def test_item_refs(app, testdata):
19
- """Test creation of an item."""
20
- item = Item.create(
21
- dict(
22
- pid="itemid-99",
23
- document_pid="docid-1",
24
- internal_location_pid="ilocid-4",
25
- created_by=dict(type="script", value="demo"),
26
- barcode="348048",
27
- status="CAN_CIRCULATE",
28
- circulation_restriction="NO_RESTRICTION",
29
- medium="PAPER",
30
- )
31
- )
32
- assert "$schema" in item
33
- assert "document" in item and "$ref" in item["document"]
34
- assert "internal_location" in item and "$ref" in item["internal_location"]
35
-
36
- item = Item.get_record_by_pid("itemid-1")
37
- item = item.replace_refs()
38
- assert "document" in item and item["document"]["title"]
39
- assert "internal_location" in item and item["internal_location"]["name"]
40
-
41
-
42
- def test_item_validation(db, testdata):
43
- """Test validation when updating an item."""
44
- item_pid = testdata["items"][0]["pid"]
45
- orginal_item = Item.get_record_by_pid(item_pid)
46
-
47
- # change document pid
48
- item = deepcopy(orginal_item)
49
- item["document_pid"] = "not_found_doc"
50
- with pytest.raises(DocumentNotFoundError):
51
- item.commit()
52
-
53
- # change internal location pid
54
- item = deepcopy(orginal_item)
55
- item["internal_location_pid"] = "not_found_pid"
56
- with pytest.raises(InternalLocationNotFoundError):
57
- item.commit()
@@ -1,40 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2018-2020 CERN.
4
- #
5
- # invenio-app-ils is free software; you can redistribute it and/or modify it
6
- # under the terms of the MIT License; see LICENSE file for more details.
7
-
8
- """Test record delete."""
9
-
10
- import pytest
11
-
12
- from invenio_app_ils.circulation.search import get_active_loan_by_item_pid
13
- from invenio_app_ils.errors import DocumentNotFoundError, ItemHasPastLoansError
14
- from invenio_app_ils.items.api import ITEM_PID_TYPE, Item
15
-
16
-
17
- def test_update_item(db, testdata):
18
- """Test update item status."""
19
-
20
- def get_active_loan_pid_and_item_pid():
21
- for t in testdata["items"]:
22
- if t["status"] == "CAN_CIRCULATE":
23
- item_pid = dict(type=ITEM_PID_TYPE, value=t["pid"])
24
- active_loan = get_active_loan_by_item_pid(item_pid).execute().hits
25
- total = active_loan.total.value
26
- if total > 0:
27
- return t["pid"], active_loan[0]["pid"]
28
-
29
- # change document pid while is on loan
30
- item_pid, loan_pid = get_active_loan_pid_and_item_pid()
31
- item = Item.get_record_by_pid(item_pid)
32
- item["document_pid"] = "docid-1"
33
- with pytest.raises(ItemHasPastLoansError):
34
- item.commit()
35
-
36
- # change document to one that does not exist
37
- item = Item.get_record_by_pid("itemid-1")
38
- item["document_pid"] = "not_found_doc"
39
- with pytest.raises(DocumentNotFoundError):
40
- item.commit()
File without changes