invenio-app-ils 7.0.0__tar.gz → 7.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/CHANGES.rst +11 -0
  2. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/PKG-INFO +12 -1
  3. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-services.yml +14 -14
  4. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/__init__.py +1 -1
  5. invenio_app_ils-7.1.1/invenio_app_ils/acquisition/indexer.py +72 -0
  6. {invenio_app_ils-7.0.0/invenio_app_ils/acquisition/mappings/v7 → invenio_app_ils-7.1.1/invenio_app_ils/acquisition/mappings/os-v2}/acq_orders/order-v1.0.0.json +5 -0
  7. invenio_app_ils-7.1.1/invenio_app_ils/acquisition/stats/__init__.py +8 -0
  8. invenio_app_ils-7.1.1/invenio_app_ils/acquisition/stats/views.py +82 -0
  9. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/indexer.py +2 -0
  10. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_checkout.py +3 -1
  11. invenio_app_ils-7.1.1/invenio_app_ils/circulation/stats/api.py +51 -0
  12. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/stats/views.py +14 -29
  13. invenio_app_ils-7.1.1/invenio_app_ils/document_requests/indexer.py +121 -0
  14. {invenio_app_ils-7.0.0/invenio_app_ils/document_requests/mappings/v7 → invenio_app_ils-7.1.1/invenio_app_ils/document_requests/mappings/os-v2}/document_requests/document_request-v1.0.0.json +5 -0
  15. invenio_app_ils-7.1.1/invenio_app_ils/document_requests/stats/__init__.py +8 -0
  16. invenio_app_ils-7.1.1/invenio_app_ils/document_requests/stats/views.py +85 -0
  17. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ext.py +49 -0
  18. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/permissions.py +2 -0
  19. invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/__init__.py +18 -0
  20. {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/api.py +8 -50
  21. {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/schemas.py +11 -29
  22. invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/serializers/__init__.py +18 -0
  23. {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/serializers/response.py +3 -4
  24. {invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats → invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram}/serializers/schema.py +1 -1
  25. invenio_app_ils-7.1.1/invenio_app_ils/stats/histogram/views.py +34 -0
  26. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/PKG-INFO +12 -1
  27. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/SOURCES.txt +12 -4
  28. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/entry_points.txt +2 -0
  29. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/setup.cfg +2 -0
  30. invenio_app_ils-7.0.0/invenio_app_ils/circulation/stats/serializers/__init__.py +0 -13
  31. invenio_app_ils-7.0.0/invenio_app_ils/document_requests/indexer.py +0 -47
  32. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/.editorconfig +0 -0
  33. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/.git-blame-ignore-revs +0 -0
  34. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/AUTHORS.rst +0 -0
  35. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/CONTRIBUTING.rst +0 -0
  36. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/INSTALL.rst +0 -0
  37. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/LICENSE +0 -0
  38. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/MANIFEST.in +0 -0
  39. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/README.rst +0 -0
  40. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/backend/Dockerfile +0 -0
  41. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/Dockerfile +0 -0
  42. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/conf.d/default.conf +0 -0
  43. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/nginx.conf +0 -0
  44. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/test.crt +0 -0
  45. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/frontend/test.key +0 -0
  46. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/Dockerfile +0 -0
  47. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/haproxy.cfg +0 -0
  48. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker/lb/haproxy_cert.pem +0 -0
  49. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-compose.full.yml +0 -0
  50. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/docker-compose.yml +0 -0
  51. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/__init__.py +0 -0
  52. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/api.py +0 -0
  53. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/config.py +0 -0
  54. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/errors.py +0 -0
  55. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/ext.py +0 -0
  56. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/__init__.py +0 -0
  57. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/order_order_lines.py +0 -0
  58. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/jsonresolvers/order_provider.py +0 -0
  59. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/__init__.py +0 -0
  60. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/jsonschemas/__init__.py +0 -0
  61. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/loaders/jsonschemas/order.py +0 -0
  62. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/__init__.py +0 -0
  63. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v1/__init__.py +0 -0
  64. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v1/acq_orders/order-v1.0.0.json +0 -0
  65. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/os-v2/__init__.py +0 -0
  66. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/mappings/v7/__init__.py +0 -0
  67. {invenio_app_ils-7.0.0/invenio_app_ils/acquisition/mappings/os-v2 → invenio_app_ils-7.1.1/invenio_app_ils/acquisition/mappings/v7}/acq_orders/order-v1.0.0.json +0 -0
  68. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/proxies.py +0 -0
  69. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/schemas/__init__.py +0 -0
  70. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/schemas/acq_orders/order-v1.0.0.json +0 -0
  71. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/acquisition/search.py +0 -0
  72. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/assets/semantic-ui/less/theme.config +0 -0
  73. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/assets/semantic-ui/templates/.gitkeep +0 -0
  74. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/__init__.py +0 -0
  75. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/api.py +0 -0
  76. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/config.py +0 -0
  77. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/errors.py +0 -0
  78. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/jsonresolvers/__init__.py +0 -0
  79. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/jsonresolvers/loan.py +0 -0
  80. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/__init__.py +0 -0
  81. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/__init__.py +0 -0
  82. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/__init__.py +0 -0
  83. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/base.py +0 -0
  84. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/bulk_extend.py +0 -0
  85. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_request.py +0 -0
  86. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_self_checkout.py +0 -0
  87. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/loaders/schemas/json/loan_update_dates.py +0 -0
  88. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/__init__.py +0 -0
  89. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/api.py +0 -0
  90. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/messages.py +0 -0
  91. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/notifications/tasks.py +0 -0
  92. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/receivers.py +0 -0
  93. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/search.py +0 -0
  94. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/__init__.py +0 -0
  95. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/csv.py +0 -0
  96. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/custom_fields.py +0 -0
  97. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/json.py +0 -0
  98. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/serializers/response.py +0 -0
  99. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/stats/__init__.py +0 -0
  100. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/tasks.py +0 -0
  101. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/bulk_extend.html +0 -0
  102. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/cancel.html +0 -0
  103. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkin.html +0 -0
  104. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/checkout.html +0 -0
  105. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/extend.html +0 -0
  106. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/overdue_reminder.html +0 -0
  107. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request.html +0 -0
  108. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/request_no_items.html +0 -0
  109. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/self_checkout.html +0 -0
  110. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/update_dates.html +0 -0
  111. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/templates/invenio_app_ils_circulation/notifications/will_expire_in_reminder.html +0 -0
  112. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/transitions/__init__.py +0 -0
  113. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/transitions/transitions.py +0 -0
  114. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/utils.py +0 -0
  115. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/circulation/views.py +0 -0
  116. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/cli.py +0 -0
  117. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/__init__.py +0 -0
  118. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/api.py +0 -0
  119. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/__init__.py +0 -0
  120. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/response.py +0 -0
  121. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/serializers/schema.py +0 -0
  122. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/tasks.py +0 -0
  123. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/closures/views.py +0 -0
  124. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/config.py +0 -0
  125. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/demo_data/documents.json +0 -0
  126. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/demo_data/items.json +0 -0
  127. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/__init__.py +0 -0
  128. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/api.py +0 -0
  129. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/__init__.py +0 -0
  130. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/document_request_document.py +0 -0
  131. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/jsonresolvers/document_request_patron.py +0 -0
  132. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/__init__.py +0 -0
  133. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/__init__.py +0 -0
  134. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request.py +0 -0
  135. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_decline.py +0 -0
  136. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_document.py +0 -0
  137. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/loaders/jsonschemas/document_request_provider.py +0 -0
  138. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/__init__.py +0 -0
  139. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v1/__init__.py +0 -0
  140. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v1/document_requests/document_request-v1.0.0.json +0 -0
  141. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/os-v2/__init__.py +0 -0
  142. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/mappings/v7/__init__.py +0 -0
  143. {invenio_app_ils-7.0.0/invenio_app_ils/document_requests/mappings/os-v2 → invenio_app_ils-7.1.1/invenio_app_ils/document_requests/mappings/v7}/document_requests/document_request-v1.0.0.json +0 -0
  144. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/__init__.py +0 -0
  145. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/api.py +0 -0
  146. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/notifications/messages.py +0 -0
  147. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/schemas/__init__.py +0 -0
  148. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/schemas/document_requests/document_request-v1.0.0.json +0 -0
  149. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/search.py +0 -0
  150. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_accept.html +0 -0
  151. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_in_catalog.html +0 -0
  152. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_not_found.html +0 -0
  153. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_other.html +0 -0
  154. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/templates/invenio_app_ils_document_requests/notifications/document_request_decline_user_cancel.html +0 -0
  155. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/document_requests/views.py +0 -0
  156. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/__init__.py +0 -0
  157. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/api.py +0 -0
  158. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/indexer.py +0 -0
  159. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/__init__.py +0 -0
  160. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_circulation.py +0 -0
  161. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_eitem.py +0 -0
  162. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_item.py +0 -0
  163. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_relations.py +0 -0
  164. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/jsonresolvers/document_stock.py +0 -0
  165. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/__init__.py +0 -0
  166. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/jsonschemas/__init__.py +0 -0
  167. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/loaders/jsonschemas/document.py +0 -0
  168. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/__init__.py +0 -0
  169. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/__init__.py +0 -0
  170. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/documents/document-v1.0.0.json +0 -0
  171. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v1/documents/document-v2.0.0.json +0 -0
  172. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/__init__.py +0 -0
  173. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/documents/document-v1.0.0.json +0 -0
  174. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/os-v2/documents/document-v2.0.0.json +0 -0
  175. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/__init__.py +0 -0
  176. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/documents/document-v1.0.0.json +0 -0
  177. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/mappings/v7/documents/document-v2.0.0.json +0 -0
  178. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/__init__.py +0 -0
  179. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/documents/document-v1.0.0.json +0 -0
  180. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/schemas/documents/document-v2.0.0.json +0 -0
  181. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/search.py +0 -0
  182. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/documents/utils.py +0 -0
  183. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/__init__.py +0 -0
  184. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/api.py +0 -0
  185. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/indexer.py +0 -0
  186. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/__init__.py +0 -0
  187. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/eitem_document.py +0 -0
  188. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/jsonresolvers/eitem_files.py +0 -0
  189. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/__init__.py +0 -0
  190. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/jsonschemas/__init__.py +0 -0
  191. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/loaders/jsonschemas/eitems.py +0 -0
  192. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/__init__.py +0 -0
  193. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/__init__.py +0 -0
  194. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v1.0.0.json +0 -0
  195. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v2.0.0.json +0 -0
  196. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v1/eitems/eitem-v3.0.0.json +0 -0
  197. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/__init__.py +0 -0
  198. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v1.0.0.json +0 -0
  199. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v2.0.0.json +0 -0
  200. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/os-v2/eitems/eitem-v3.0.0.json +0 -0
  201. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/__init__.py +0 -0
  202. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v1.0.0.json +0 -0
  203. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v2.0.0.json +0 -0
  204. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/mappings/v7/eitems/eitem-v3.0.0.json +0 -0
  205. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/__init__.py +0 -0
  206. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v1.0.0.json +0 -0
  207. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v2.0.0.json +0 -0
  208. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/schemas/eitems/eitem-v3.0.0.json +0 -0
  209. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/eitems/search.py +0 -0
  210. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/errors.py +0 -0
  211. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/facets.py +0 -0
  212. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/fetchers.py +0 -0
  213. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/__init__.py +0 -0
  214. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/receivers.py +0 -0
  215. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/files/views.py +0 -0
  216. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/__init__.py +0 -0
  217. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/api.py +0 -0
  218. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/config.py +0 -0
  219. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/errors.py +0 -0
  220. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/ext.py +0 -0
  221. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/__init__.py +0 -0
  222. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_document.py +0 -0
  223. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_patron.py +0 -0
  224. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/jsonresolvers/borrowing_request_provider.py +0 -0
  225. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/__init__.py +0 -0
  226. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/__init__.py +0 -0
  227. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/borrowing_request.py +0 -0
  228. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_actions.py +0 -0
  229. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/loaders/jsonschemas/patron_loan_extension_actions.py +0 -0
  230. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/__init__.py +0 -0
  231. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v1/__init__.py +0 -0
  232. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v1/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  233. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v2/__init__.py +0 -0
  234. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/os-v2/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  235. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/v7/__init__.py +0 -0
  236. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/mappings/v7/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  237. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/__init__.py +0 -0
  238. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/api.py +0 -0
  239. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/notifications/messages.py +0 -0
  240. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/proxies.py +0 -0
  241. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/schemas/__init__.py +0 -0
  242. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/schemas/ill_borrowing_requests/borrowing_request-v1.0.0.json +0 -0
  243. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/search.py +0 -0
  244. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/__init__.py +0 -0
  245. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/csv.py +0 -0
  246. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/custom_fields.py +0 -0
  247. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/serializers/json.py +0 -0
  248. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_accept.html +0 -0
  249. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_decline.html +0 -0
  250. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/templates/invenio_app_ils_ill/notifications/patron_loan_extension_request.html +0 -0
  251. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/ill/views.py +0 -0
  252. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/indexer.py +0 -0
  253. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/__init__.py +0 -0
  254. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/api.py +0 -0
  255. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/indexer.py +0 -0
  256. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/jsonresolvers/__init__.py +0 -0
  257. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/jsonresolvers/internal_location.py +0 -0
  258. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/__init__.py +0 -0
  259. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/jsonschemas/__init__.py +0 -0
  260. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/loaders/jsonschemas/internal_location.py +0 -0
  261. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/__init__.py +0 -0
  262. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v1/__init__.py +0 -0
  263. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v1/internal_locations/internal_location-v1.0.0.json +0 -0
  264. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v2/__init__.py +0 -0
  265. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/os-v2/internal_locations/internal_location-v1.0.0.json +0 -0
  266. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/v7/__init__.py +0 -0
  267. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/mappings/v7/internal_locations/internal_location-v1.0.0.json +0 -0
  268. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/schemas/__init__.py +0 -0
  269. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/schemas/internal_locations/internal_location-v1.0.0.json +0 -0
  270. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/internal_locations/search.py +0 -0
  271. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/__init__.py +0 -0
  272. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/api.py +0 -0
  273. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/indexer.py +0 -0
  274. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/__init__.py +0 -0
  275. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_document.py +0 -0
  276. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_internal_location.py +0 -0
  277. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/jsonresolvers/item_loan.py +0 -0
  278. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/__init__.py +0 -0
  279. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/jsonschemas/__init__.py +0 -0
  280. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/loaders/jsonschemas/items.py +0 -0
  281. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/__init__.py +0 -0
  282. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/__init__.py +0 -0
  283. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/items/item-v1.0.0.json +0 -0
  284. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v1/items/item-v2.0.0.json +0 -0
  285. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/__init__.py +0 -0
  286. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/items/item-v1.0.0.json +0 -0
  287. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/os-v2/items/item-v2.0.0.json +0 -0
  288. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/__init__.py +0 -0
  289. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/items/item-v1.0.0.json +0 -0
  290. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/mappings/v7/items/item-v2.0.0.json +0 -0
  291. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/__init__.py +0 -0
  292. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/items/item-v1.0.0.json +0 -0
  293. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/schemas/items/item-v2.0.0.json +0 -0
  294. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/search.py +0 -0
  295. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/serializers/__init__.py +0 -0
  296. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/items/serializers/item.py +0 -0
  297. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/__init__.py +0 -0
  298. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/api.py +0 -0
  299. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/covers_builder.py +0 -0
  300. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/search.py +0 -0
  301. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/__init__.py +0 -0
  302. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/csv.py +0 -0
  303. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/custom_fields.py +0 -0
  304. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/literature/serializers/json.py +0 -0
  305. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/__init__.py +0 -0
  306. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/api.py +0 -0
  307. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/indexer.py +0 -0
  308. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/__init__.py +0 -0
  309. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/jsonschemas/__init__.py +0 -0
  310. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/loaders/jsonschemas/location.py +0 -0
  311. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/__init__.py +0 -0
  312. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v1/__init__.py +0 -0
  313. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v1/locations/location-v1.0.0.json +0 -0
  314. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v2/__init__.py +0 -0
  315. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/os-v2/locations/location-v1.0.0.json +0 -0
  316. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/v7/__init__.py +0 -0
  317. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/mappings/v7/locations/location-v1.0.0.json +0 -0
  318. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/receivers.py +0 -0
  319. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/schemas/__init__.py +0 -0
  320. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/schemas/locations/location-v1.0.0.json +0 -0
  321. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/locations/search.py +0 -0
  322. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/minters.py +0 -0
  323. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/__init__.py +0 -0
  324. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/api.py +0 -0
  325. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/backends/__init__.py +0 -0
  326. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/backends/mail.py +0 -0
  327. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/messages.py +0 -0
  328. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/models.py +0 -0
  329. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/tasks.py +0 -0
  330. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/notifications/views.py +0 -0
  331. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/__init__.py +0 -0
  332. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/anonymization.py +0 -0
  333. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/api.py +0 -0
  334. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/cli.py +0 -0
  335. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/indexer.py +0 -0
  336. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/__init__.py +0 -0
  337. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v1/__init__.py +0 -0
  338. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v1/patrons/patron-v1.0.0.json +0 -0
  339. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v2/__init__.py +0 -0
  340. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/os-v2/patrons/patron-v1.0.0.json +0 -0
  341. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/v7/__init__.py +0 -0
  342. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/mappings/v7/patrons/patron-v1.0.0.json +0 -0
  343. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/search.py +0 -0
  344. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/patrons/views.py +0 -0
  345. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/__init__.py +0 -0
  346. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/api.py +0 -0
  347. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/config.py +0 -0
  348. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/errors.py +0 -0
  349. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/ext.py +0 -0
  350. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/indexer.py +0 -0
  351. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/__init__.py +0 -0
  352. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/jsonschemas/__init__.py +0 -0
  353. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/loaders/jsonschemas/provider.py +0 -0
  354. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/__init__.py +0 -0
  355. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v1/__init__.py +0 -0
  356. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v1/providers/provider-v1.0.0.json +0 -0
  357. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v2/__init__.py +0 -0
  358. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/os-v2/providers/provider-v1.0.0.json +0 -0
  359. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/v7/__init__.py +0 -0
  360. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/mappings/v7/providers/provider-v1.0.0.json +0 -0
  361. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/proxies.py +0 -0
  362. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/schemas/__init__.py +0 -0
  363. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/schemas/providers/provider-v1.0.0.json +0 -0
  364. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/providers/search.py +0 -0
  365. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/proxies.py +0 -0
  366. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/__init__.py +0 -0
  367. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/api.py +0 -0
  368. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/jsonresolvers/__init__.py +0 -0
  369. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/jsonresolvers/api.py +0 -0
  370. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/listeners.py +0 -0
  371. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/__init__.py +0 -0
  372. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/__init__.py +0 -0
  373. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/changed_by.py +0 -0
  374. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/identifiers.py +0 -0
  375. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/preserve_cover_metadata.py +0 -0
  376. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/loaders/schemas/price.py +0 -0
  377. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/metadata_extensions.py +0 -0
  378. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/permissions.py +0 -0
  379. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/receivers.py +0 -0
  380. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/schemas/__init__.py +0 -0
  381. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/schemas/json.py +0 -0
  382. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/serializers/__init__.py +0 -0
  383. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records/views.py +0 -0
  384. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/__init__.py +0 -0
  385. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/api.py +0 -0
  386. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/indexer.py +0 -0
  387. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/retriever.py +0 -0
  388. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/records_relations/views.py +0 -0
  389. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/__init__.py +0 -0
  390. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/api.py +0 -0
  391. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/relations/nodes.py +0 -0
  392. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/search_permissions.py +0 -0
  393. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/__init__.py +0 -0
  394. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/api.py +0 -0
  395. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/indexer.py +0 -0
  396. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/jsonresolvers/__init__.py +0 -0
  397. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/jsonresolvers/series_relations.py +0 -0
  398. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/__init__.py +0 -0
  399. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/jsonschemas/__init__.py +0 -0
  400. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/loaders/jsonschemas/series.py +0 -0
  401. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/__init__.py +0 -0
  402. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/__init__.py +0 -0
  403. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/series/series-v1.0.0.json +0 -0
  404. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v1/series/series-v2.0.0.json +0 -0
  405. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/__init__.py +0 -0
  406. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/series/series-v1.0.0.json +0 -0
  407. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/os-v2/series/series-v2.0.0.json +0 -0
  408. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/__init__.py +0 -0
  409. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/series/series-v1.0.0.json +0 -0
  410. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/mappings/v7/series/series-v2.0.0.json +0 -0
  411. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/__init__.py +0 -0
  412. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/series/series-v1.0.0.json +0 -0
  413. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/schemas/series/series-v2.0.0.json +0 -0
  414. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/series/search.py +0 -0
  415. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/signals.py +0 -0
  416. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/static/images/placeholder.png +0 -0
  417. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/static_pages/search_guide.html +0 -0
  418. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/__init__.py +0 -0
  419. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/__init__.py +0 -0
  420. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/__init__.py +0 -0
  421. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/__init__.py +0 -0
  422. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.json +0 -0
  423. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/__init__.py +0 -0
  424. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.json +0 -0
  425. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/__init__.py +0 -0
  426. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/aggregations/aggr_file_download/v7/aggr-file-download-v1.json +0 -0
  427. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/event_builders.py +0 -0
  428. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/__init__.py +0 -0
  429. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v1/__init__.py +0 -0
  430. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v1/file-download-v1.json +0 -0
  431. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v2/__init__.py +0 -0
  432. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/os-v2/file-download-v1.json +0 -0
  433. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/v7/__init__.py +0 -0
  434. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/file_download/v7/file-download-v1.json +0 -0
  435. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/processors.py +0 -0
  436. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/__init__.py +0 -0
  437. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/__init__.py +0 -0
  438. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/__init__.py +0 -0
  439. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/ils_record_changes/os-v2/aggr-ils-record-changes-v1.json +0 -0
  440. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/__init__.py +0 -0
  441. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/__init__.py +0 -0
  442. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/aggregations/loan_transitions/os-v2/aggr-loan-transitions-v1.json +0 -0
  443. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/__init__.py +0 -0
  444. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/__init__.py +0 -0
  445. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/__init__.py +0 -0
  446. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/ils_record_changes/os-v2/ils-record-changes-v1.json +0 -0
  447. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/__init__.py +0 -0
  448. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/__init__.py +0 -0
  449. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/stats/templates/events/loan_transitions/os-v2/loan-transitions-v1.json +0 -0
  450. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/invenio_app_ils/mail/footer.html +0 -0
  451. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/invenio_app_ils/notifications/footer.html +0 -0
  452. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/templates/logged_out.html +0 -0
  453. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/translations/.gitkeep +0 -0
  454. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/views.py +0 -0
  455. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/__init__.py +0 -0
  456. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/api.py +0 -0
  457. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/cli.py +0 -0
  458. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/__init__.py +0 -0
  459. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_mediums.json +0 -0
  460. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_order_line_payment_modes.json +0 -0
  461. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_order_line_purchase_types.json +0 -0
  462. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_payment_modes.json +0 -0
  463. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/acq_recipients.json +0 -0
  464. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/affiliation_identifier_schemes.json +0 -0
  465. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/alternative_identifier_schemes.json +0 -0
  466. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/alternative_title_types.json +0 -0
  467. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_identifier_schemes.json +0 -0
  468. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_roles.json +0 -0
  469. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/author_types.json +0 -0
  470. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/conference_identifier_schemes.json +0 -0
  471. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/countries.json +0 -0
  472. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/currencies.json +0 -0
  473. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/docreq_payment_method.json +0 -0
  474. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/docreq_request_type.json +0 -0
  475. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_identifiers_materials.json +0 -0
  476. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_requests_mediums.json +0 -0
  477. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/document_subjects.json +0 -0
  478. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/eitem_sources.json +0 -0
  479. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/identifier_schemes.json +0 -0
  480. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/ill_item_types.json +0 -0
  481. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/ill_payment_modes.json +0 -0
  482. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/item_mediums.json +0 -0
  483. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/provider_types.json +0 -0
  484. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/series_identifier_schemes.json +0 -0
  485. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/series_url_access_restrictions.json +0 -0
  486. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/data/tags.json +0 -0
  487. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/indexer.py +0 -0
  488. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/jsonresolvers/__init__.py +0 -0
  489. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/jsonresolvers/licenses.py +0 -0
  490. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/__init__.py +0 -0
  491. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v1/__init__.py +0 -0
  492. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v1/vocabularies/vocabulary-v1.0.0.json +0 -0
  493. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v2/__init__.py +0 -0
  494. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/os-v2/vocabularies/vocabulary-v1.0.0.json +0 -0
  495. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/v7/__init__.py +0 -0
  496. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/mappings/v7/vocabularies/vocabulary-v1.0.0.json +0 -0
  497. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/schemas/__init__.py +0 -0
  498. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/schemas/vocabularies/vocabulary-v1.0.0.json +0 -0
  499. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/search.py +0 -0
  500. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/__init__.py +0 -0
  501. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/base.py +0 -0
  502. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/json.py +0 -0
  503. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/vocabularies/sources/opendefinition.py +0 -0
  504. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils/webpack.py +0 -0
  505. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/dependency_links.txt +0 -0
  506. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/not-zip-safe +0 -0
  507. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/requires.txt +0 -0
  508. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/invenio_app_ils.egg-info/top_level.txt +0 -0
  509. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/pyproject.toml +0 -0
  510. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/run-tests.sh +0 -0
  511. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/bootstrap +0 -0
  512. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/build_assets +0 -0
  513. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/celery +0 -0
  514. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/console +0 -0
  515. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/server +0 -0
  516. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/setup +0 -0
  517. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/scripts/update +0 -0
  518. {invenio_app_ils-7.0.0 → invenio_app_ils-7.1.1}/setup.py +0 -0
@@ -8,6 +8,17 @@
8
8
  Changes
9
9
  =======
10
10
 
11
+ Version 7.1.1 (released 2026-02-02)
12
+
13
+ - fix(checkout): explicitly set transaction date on loan checkout
14
+
15
+ Version 7.1.0 (released 2026-01-22)
16
+
17
+ - stats: add document request stats endpoint and extend document request index
18
+ - stats: fix Schema using deserialize to validate
19
+ - stats: add order stats endpoint and extend orders index
20
+ - stats: turn loan histogram endpoint into reusable component
21
+
11
22
  Version 7.0.0 (released 2026-01-06)
12
23
 
13
24
  - stats: generalize stat tracking loan extensions to track all transitions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: invenio-app-ils
3
- Version: 7.0.0
3
+ Version: 7.1.1
4
4
  Summary: Invenio Integrated Library System.
5
5
  Home-page: https://github.com/inveniosoftware/invenio-app-ils
6
6
  Author: CERN
@@ -103,6 +103,17 @@ https://invenioils.docs.cern.ch
103
103
  Changes
104
104
  =======
105
105
 
106
+ Version 7.1.1 (released 2026-02-02)
107
+
108
+ - fix(checkout): explicitly set transaction date on loan checkout
109
+
110
+ Version 7.1.0 (released 2026-01-22)
111
+
112
+ - stats: add document request stats endpoint and extend document request index
113
+ - stats: fix Schema using deserialize to validate
114
+ - stats: add order stats endpoint and extend orders index
115
+ - stats: turn loan histogram endpoint into reusable component
116
+
106
117
  Version 7.0.0 (released 2026-01-06)
107
118
 
108
119
  - stats: generalize stat tracking loan extensions to track all transitions
@@ -14,7 +14,7 @@ services:
14
14
  - ENVIRONMENT=DEV
15
15
  image: invenio_app_ils-backend
16
16
  ports:
17
- - "5000"
17
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5000:5000"
18
18
  environment:
19
19
  - "INVENIO_ACCOUNTS_SESSION_REDIS_URL=redis://cache:6379/1"
20
20
  - "INVENIO_BROKER_URL=amqp://guest:guest@mq:5672/"
@@ -34,20 +34,20 @@ services:
34
34
  dockerfile: ./docker/frontend/Dockerfile
35
35
  image: invenio_app_ils-frontend
36
36
  ports:
37
- - "80"
38
- - "443"
37
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:80:80"
38
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:443:443"
39
39
  lb:
40
40
  build: ./docker/lb/
41
41
  image: invenio_app_ils-lb
42
42
  ports:
43
- - "80:80"
44
- - "443:443"
45
- - "8080:8080"
43
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:80:80"
44
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:443:443"
45
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:8080:8080"
46
46
  cache:
47
47
  image: redis:6
48
48
  read_only: true
49
49
  ports:
50
- - "6379:6379"
50
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:6379:6379"
51
51
  db:
52
52
  image: postgres:14
53
53
  environment:
@@ -55,12 +55,12 @@ services:
55
55
  - "POSTGRES_PASSWORD=psw"
56
56
  - "POSTGRES_DB=ils"
57
57
  ports:
58
- - "5432:5432"
58
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5432:5432"
59
59
  mq:
60
60
  image: rabbitmq:3-management
61
61
  ports:
62
- - "15672:15672"
63
- - "5672:5672"
62
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:15672:15672"
63
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5672:5672"
64
64
  search:
65
65
  image: opensearchproject/opensearch::3.2.0
66
66
  environment:
@@ -75,12 +75,12 @@ services:
75
75
  hard: -1
76
76
  mem_limit: 1g
77
77
  ports:
78
- - "9200:9200"
79
- - "9300:9300"
78
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:9200:9200"
79
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:9300:9300"
80
80
  opensearch-dashboards:
81
81
  image: opensearchproject/opensearch-dashboards:3.2.0
82
82
  ports:
83
- - "5601:5601"
83
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5601:5601"
84
84
  expose:
85
85
  - "5601"
86
86
  environment:
@@ -91,4 +91,4 @@ services:
91
91
  image: mher/flower:0.9.7
92
92
  command: --broker=amqp://guest:guest@mq:5672/ --broker_api=http://guest:guest@mq:15672/api/
93
93
  ports:
94
- - "5555:5555"
94
+ - "${DOCKER_SERVICES_IP_BIND:-127.0.0.1}:5555:5555"
@@ -7,6 +7,6 @@
7
7
 
8
8
  """invenio-app-ils."""
9
9
 
10
- __version__ = "7.0.0"
10
+ __version__ = "7.1.1"
11
11
 
12
12
  __all__ = ("__version__",)
@@ -0,0 +1,72 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Order indexer APIs."""
9
+
10
+ from datetime import datetime
11
+
12
+ from invenio_search import current_search_client
13
+
14
+ from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
15
+ from invenio_app_ils.proxies import current_app_ils
16
+
17
+
18
+ def index_stats_fields_for_order(order_dict):
19
+ """Indexer hook to modify the order record dict before indexing."""
20
+
21
+ # This is done through the hook and not through an indexer class,
22
+ # as we need access to the `_created` field
23
+
24
+ # Only calculate stats if order is received
25
+ if not order_dict.get("received_date"):
26
+ return
27
+
28
+ stats = {}
29
+
30
+ received_date = datetime.fromisoformat(order_dict["received_date"]).date()
31
+ creation_date = datetime.fromisoformat(order_dict["_created"]).date()
32
+
33
+ # Calculate order_processing_time
34
+ order_processing_time = (received_date - creation_date).days
35
+ stats["order_processing_time"] = order_processing_time if order_processing_time >= 0 else None
36
+
37
+ # Find related document request if any
38
+ order_pid = order_dict.get("pid")
39
+ if order_pid:
40
+ doc_req_search_cls = current_app_ils.document_request_search_cls
41
+ search_body = {
42
+ "query": {
43
+ "bool": {
44
+ "must": [
45
+ {"term": {"physical_item_provider.pid": order_pid}},
46
+ {"term": {"physical_item_provider.pid_type": ORDER_PID_TYPE}},
47
+ ],
48
+ }
49
+ },
50
+ "size": 1,
51
+ }
52
+
53
+ search_result = current_search_client.search(
54
+ index=doc_req_search_cls.Meta.index, body=search_body
55
+ )
56
+
57
+ hits = search_result["hits"]["hits"]
58
+ if len(hits) > 0:
59
+ doc_request = hits[0]["_source"]
60
+ doc_req_creation_date = datetime.fromisoformat(
61
+ doc_request["_created"]
62
+ ).date()
63
+
64
+ order_dict["doc_request"] = {}
65
+
66
+ # Calculate document_request_waiting_time
67
+ waiting_time = (received_date - doc_req_creation_date).days
68
+ stats["document_request_waiting_time"] = (
69
+ waiting_time if waiting_time >= 0 else None
70
+ )
71
+
72
+ order_dict["stats"] = stats
@@ -358,6 +358,11 @@
358
358
  },
359
359
  "provider_pid": {
360
360
  "type": "keyword"
361
+ },
362
+ "stats": {
363
+ "type": "object",
364
+ "dynamic": true,
365
+ "enabled": true
361
366
  }
362
367
  }
363
368
  }
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Invenio App ILS acquisition stats module."""
@@ -0,0 +1,82 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Invenio App ILS acquisition stats views."""
9
+
10
+ from flask import Blueprint, request
11
+ from invenio_records_rest.query import default_search_factory
12
+ from invenio_rest import ContentNegotiatedMethodView
13
+ from marshmallow.exceptions import ValidationError
14
+
15
+ from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
16
+ from invenio_app_ils.acquisition.proxies import current_ils_acq
17
+ from invenio_app_ils.errors import InvalidParameterError
18
+ from invenio_app_ils.permissions import need_permissions
19
+ from invenio_app_ils.stats.histogram import (
20
+ HistogramParamsSchema,
21
+ create_histogram_view,
22
+ get_record_statistics,
23
+ )
24
+
25
+
26
+ def create_acquisition_stats_blueprint(app):
27
+ """Add statistics views to the blueprint."""
28
+ blueprint = Blueprint("invenio_app_ils_acquisition_stats", __name__, url_prefix="")
29
+
30
+ create_histogram_view(
31
+ blueprint, app, ORDER_PID_TYPE, OrderHistogramResource, "/acquisition"
32
+ )
33
+
34
+ return blueprint
35
+
36
+
37
+ class OrderHistogramResource(ContentNegotiatedMethodView):
38
+ """Order stats resource."""
39
+
40
+ view_name = "order_histogram"
41
+
42
+ def __init__(self, serializers, ctx, *args, **kwargs):
43
+ """Constructor."""
44
+ super().__init__(serializers, *args, **kwargs)
45
+ for key, value in ctx.items():
46
+ setattr(self, key, value)
47
+
48
+ @need_permissions("stats-orders")
49
+ def get(self, **kwargs):
50
+ """Get order statistics."""
51
+
52
+ order_date_fields = [
53
+ "order_date",
54
+ "expected_delivery_date",
55
+ "received_date",
56
+ "_created",
57
+ "_updated",
58
+ ]
59
+
60
+ schema = HistogramParamsSchema(order_date_fields)
61
+ try:
62
+ parsed_args = schema.load(request.args.to_dict())
63
+ except ValidationError as e:
64
+ raise InvalidParameterError(description=e.messages) from e
65
+
66
+ # Construct search to allow for filtering with the q parameter
67
+ search_cls = current_ils_acq.order_search_cls
68
+ search = search_cls()
69
+ search, _ = default_search_factory(self, search)
70
+
71
+ aggregation_buckets = get_record_statistics(
72
+ order_date_fields,
73
+ search,
74
+ parsed_args["group_by"],
75
+ parsed_args["metrics"],
76
+ )
77
+
78
+ response = {
79
+ "buckets": aggregation_buckets,
80
+ }
81
+
82
+ return self.make_response(response, 200)
@@ -164,6 +164,8 @@ def index_stats_fields_for_loan(loan_dict):
164
164
  )
165
165
 
166
166
 
167
+ # Make use of the `extra_data` property as loans are part of `invenio-circulation`,
168
+ # which do not expose the `stats` property directly
167
169
  if not "extra_data" in loan_dict:
168
170
  loan_dict["extra_data"] = {}
169
171
  loan_dict["extra_data"]["stats"] = stats
@@ -11,7 +11,7 @@ import arrow
11
11
  from flask import current_app
12
12
  from invenio_circulation.records.loaders.schemas.json import (
13
13
  DateString,
14
- LoanItemPIDSchemaV1,
14
+ LoanItemPIDSchemaV1, DateTimeString, set_missing_transaction_date,
15
15
  )
16
16
  from marshmallow import ValidationError, fields, post_load, validates
17
17
 
@@ -28,6 +28,8 @@ class LoanCheckoutSchemaV1(LoanBaseSchemaV1):
28
28
  end_date = DateString()
29
29
  force = fields.Bool(load_default=False)
30
30
 
31
+ transaction_date = DateTimeString(missing=set_missing_transaction_date)
32
+
31
33
  @validates("force")
32
34
  def validate_force(self, value, **kwargs):
33
35
  """Validate that only librarian can perform a force checkout."""
@@ -0,0 +1,51 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2019-2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """APIs for ILS circulation statistics."""
9
+
10
+ from invenio_app_ils.circulation.search import get_most_loaned_documents
11
+ from invenio_app_ils.proxies import current_app_ils
12
+
13
+
14
+ def fetch_most_loaned_documents(from_date, to_date, bucket_size):
15
+ """Fetch the documents with the most loans within the date interval."""
16
+ # Create loans aggregation
17
+ most_loaned = get_most_loaned_documents(from_date, to_date, bucket_size)
18
+
19
+ # Prepare the loan and extension count
20
+ document_pids = []
21
+ document_metadata = {}
22
+ loan_result = most_loaned.execute()
23
+ for bucket in loan_result.aggregations.most_loaned_documents.buckets:
24
+ document_pid = bucket["key"]
25
+ loan_count = bucket["doc_count"]
26
+ loan_extensions = int(bucket["extensions"]["value"])
27
+ document_pids.append(document_pid)
28
+ document_metadata[document_pid] = dict(
29
+ loans=loan_count, extensions=loan_extensions
30
+ )
31
+
32
+ # Enhance the document serializer
33
+ doc_search = current_app_ils.document_search_cls()
34
+ doc_search = doc_search.with_preference_param().params(version=True)
35
+ doc_search = doc_search.search_by_pid(*document_pids)
36
+ doc_search = doc_search[0:bucket_size]
37
+ result = doc_search.execute()
38
+
39
+ for hit in result.hits:
40
+ pid = hit["pid"]
41
+ hit["loan_count"] = document_metadata[pid]["loans"]
42
+ hit["loan_extensions"] = document_metadata[pid]["extensions"]
43
+
44
+ res = result.to_dict()
45
+ res["hits"]["hits"] = sorted(
46
+ res["hits"]["hits"],
47
+ key=lambda hit: hit["_source"]["loan_count"],
48
+ reverse=True,
49
+ )
50
+
51
+ return res
@@ -18,17 +18,17 @@ from invenio_records_rest.utils import obj_or_import_string
18
18
  from invenio_rest import ContentNegotiatedMethodView
19
19
  from marshmallow.exceptions import ValidationError
20
20
 
21
- from invenio_app_ils.circulation.stats.api import (
22
- fetch_most_loaned_documents,
23
- get_loan_statistics,
24
- )
25
- from invenio_app_ils.circulation.stats.schemas import HistogramParamsSchema
26
- from invenio_app_ils.circulation.stats.serializers import loan_stats_response
21
+ from invenio_app_ils.circulation.stats.api import fetch_most_loaned_documents
27
22
  from invenio_app_ils.circulation.views import IlsCirculationResource
28
23
  from invenio_app_ils.config import RECORDS_REST_MAX_RESULT_WINDOW
29
24
  from invenio_app_ils.documents.api import DOCUMENT_PID_FETCHER, DOCUMENT_PID_TYPE
30
25
  from invenio_app_ils.errors import InvalidParameterError
31
26
  from invenio_app_ils.permissions import need_permissions
27
+ from invenio_app_ils.stats.histogram import (
28
+ HistogramParamsSchema,
29
+ create_histogram_view,
30
+ get_record_statistics,
31
+ )
32
32
 
33
33
 
34
34
  def create_most_loaned_documents_view(blueprint, app):
@@ -56,33 +56,18 @@ def create_most_loaned_documents_view(blueprint, app):
56
56
  )
57
57
 
58
58
 
59
- def create_loan_histogram_view(blueprint, app):
60
- """Add url rule for loan histogram view."""
61
-
62
- endpoints = app.config.get("RECORDS_REST_ENDPOINTS")
63
- document_endpoint = endpoints.get(CIRCULATION_LOAN_PID_TYPE)
64
- default_media_type = document_endpoint.get("default_media_type")
65
- loan_stats_serializers = {"application/json": loan_stats_response}
66
-
67
- loan_stats_view_func = LoanHistogramResource.as_view(
68
- LoanHistogramResource.view_name,
69
- serializers=loan_stats_serializers,
70
- default_media_type=default_media_type,
71
- ctx={},
72
- )
73
- blueprint.add_url_rule(
74
- "/circulation/loans/stats",
75
- view_func=loan_stats_view_func,
76
- methods=["GET"],
77
- )
78
-
79
-
80
59
  def create_circulation_stats_blueprint(app):
81
60
  """Add statistics views to the blueprint."""
82
61
  blueprint = Blueprint("invenio_app_ils_circulation_stats", __name__, url_prefix="")
83
62
 
84
63
  create_most_loaned_documents_view(blueprint, app)
85
- create_loan_histogram_view(blueprint, app)
64
+ create_histogram_view(
65
+ blueprint,
66
+ app,
67
+ CIRCULATION_LOAN_PID_TYPE,
68
+ LoanHistogramResource,
69
+ "/circulation/loans",
70
+ )
86
71
 
87
72
  return blueprint
88
73
 
@@ -190,7 +175,7 @@ class LoanHistogramResource(IlsCirculationResource):
190
175
  search = search_cls()
191
176
  search, _ = default_search_factory(self, search)
192
177
 
193
- aggregation_buckets = get_loan_statistics(
178
+ aggregation_buckets = get_record_statistics(
194
179
  loan_date_fields,
195
180
  search,
196
181
  parsed_args["group_by"],
@@ -0,0 +1,121 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2019-2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """DocumentRequest indexer APIs."""
9
+
10
+ from datetime import datetime
11
+
12
+ from celery import shared_task
13
+ from flask import current_app
14
+ from invenio_indexer.api import RecordIndexer
15
+ from invenio_search import current_search_client
16
+
17
+ from invenio_app_ils.acquisition.api import ORDER_PID_TYPE
18
+ from invenio_app_ils.acquisition.proxies import current_ils_acq
19
+ from invenio_app_ils.documents.api import DOCUMENT_PID_TYPE
20
+ from invenio_app_ils.ill.api import BORROWING_REQUEST_PID_TYPE
21
+ from invenio_app_ils.ill.proxies import current_ils_ill
22
+ from invenio_app_ils.indexer import ReferencedRecordsIndexer
23
+ from invenio_app_ils.proxies import current_app_ils
24
+
25
+ from .api import DOCUMENT_REQUEST_PID_TYPE
26
+
27
+
28
+ def index_stats_fields_for_document_request(doc_request_dict):
29
+ """Indexer hook to modify the document request record dict before indexing."""
30
+
31
+ # This is done through the hook and not through an indexer class,
32
+ # as we need access to the `_created` field.
33
+
34
+ physical_item_provider = doc_request_dict.get("physical_item_provider")
35
+ if not physical_item_provider:
36
+ return
37
+
38
+ provider_pid = physical_item_provider["pid"]
39
+ provider_pid_type = physical_item_provider["pid_type"]
40
+
41
+ doc_request_created = doc_request_dict["_created"]
42
+ doc_request_creation_date = datetime.fromisoformat(doc_request_created).date()
43
+
44
+ provider_creation_date = None
45
+
46
+ if provider_pid_type == ORDER_PID_TYPE:
47
+ order_search_cls = current_ils_acq.order_search_cls
48
+ search_body = {
49
+ "query": {"term": {"pid": provider_pid}},
50
+ "size": 1,
51
+ }
52
+ search_result = current_search_client.search(
53
+ index=order_search_cls.Meta.index, body=search_body
54
+ )
55
+ hits = search_result["hits"]["hits"]
56
+ if len(hits) > 0:
57
+ order = hits[0]["_source"]
58
+ provider_creation_date = datetime.fromisoformat(order["_created"]).date()
59
+
60
+ elif provider_pid_type == BORROWING_REQUEST_PID_TYPE:
61
+ brw_req_search_cls = current_ils_ill.borrowing_request_search_cls
62
+ search_body = {
63
+ "query": {"term": {"pid": provider_pid}},
64
+ "size": 1,
65
+ }
66
+ search_result = current_search_client.search(
67
+ index=brw_req_search_cls.Meta.index, body=search_body
68
+ )
69
+ hits = search_result["hits"]["hits"]
70
+ if len(hits) > 0:
71
+ brw_req = hits[0]["_source"]
72
+ provider_creation_date = datetime.fromisoformat(brw_req["_created"]).date()
73
+ stats = {}
74
+ if provider_creation_date:
75
+ provider_creation_delay = (
76
+ provider_creation_date - doc_request_creation_date
77
+ ).days
78
+ stats["provider_creation_delay"] = (
79
+ provider_creation_delay if provider_creation_delay >= 0 else None
80
+ )
81
+
82
+ if stats:
83
+ doc_request_dict["stats"] = stats
84
+
85
+
86
+ @shared_task(ignore_result=True)
87
+ def index_referenced_records(docreq):
88
+ """Index referenced records."""
89
+ indexer = ReferencedRecordsIndexer()
90
+ indexed = dict(pid_type=DOCUMENT_REQUEST_PID_TYPE, record=docreq)
91
+
92
+ referenced = []
93
+
94
+ # fetch and index the document
95
+ document_pid = docreq.get("document_pid")
96
+ if document_pid:
97
+ document_cls = current_app_ils.document_record_cls
98
+ document = document_cls.get_record_by_pid(document_pid)
99
+ referenced.append(dict(pid_type=DOCUMENT_PID_TYPE, record=document))
100
+
101
+ # fetch and index the related order (physical_item_provider)
102
+ physical_item_provider = docreq.get("physical_item_provider")
103
+ if physical_item_provider:
104
+ provider_pid = physical_item_provider.get("pid")
105
+ provider_pid_type = physical_item_provider.get("pid_type")
106
+ if provider_pid and provider_pid_type == ORDER_PID_TYPE:
107
+ order_cls = current_ils_acq.order_record_cls
108
+ order = order_cls.get_record_by_pid(provider_pid)
109
+ referenced.append(dict(pid_type=ORDER_PID_TYPE, record=order))
110
+
111
+ indexer.index(indexed, referenced)
112
+
113
+
114
+ class DocumentRequestIndexer(RecordIndexer):
115
+ """Indexer class for DocumentRequest record."""
116
+
117
+ def index(self, docreq, arguments=None, **kwargs):
118
+ """Index a DocumentRequest."""
119
+ super().index(docreq)
120
+ eta = datetime.utcnow() + current_app.config["ILS_INDEXER_TASK_DELAY"]
121
+ index_referenced_records.apply_async((docreq,), eta=eta)
@@ -0,0 +1,8 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2025 CERN.
4
+ #
5
+ # invenio-app-ils is free software; you can redistribute it and/or modify it
6
+ # under the terms of the MIT License; see LICENSE file for more details.
7
+
8
+ """Invenio App ILS document requests stats module."""