invenio-app-ils 1.0.0a54__py2.py3-none-any.whl → 6.1.0__py2.py3-none-any.whl

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