diff --git a/Pipfile b/Pipfile index f60483ce..49dca939 100644 --- a/Pipfile +++ b/Pipfile @@ -10,14 +10,14 @@ sphinx = ">=4.5" isort = "<6.0" # Unpin when isort==6.0.0 is released [packages] -invenio-app-rdm = {version = "~=13.0.0b1.dev17", extras = ["opensearch2"]} +invenio-app-rdm = {version = "~=13.0.0b1.dev18", extras = ["opensearch2"]} invenio-logging = {extras = ["sentry_sdk"], version = "~=2.0"} sentry-sdk = ">=1.45,<2.0.0" zenodo_rdm = {editable="True", path="./site"} zenodo_legacy = {editable="True", path="./legacy"} # TODO: Remove once we fix PyPI package issues -invenio-swh = {git = "https://github.com/inveniosoftware/invenio-swh", ref = "v0.10.2"} +invenio-swh = {git = "https://github.com/inveniosoftware/invenio-swh", ref = "v0.10.3"} jsonschema = ">=4.17.0,<4.18.0" # due to compatibility issues with alpha ipython = "!=8.1.0" uwsgi = ">=2.0" diff --git a/Pipfile.lock b/Pipfile.lock index 88b6e9f6..8285f3a9 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "624b582a21b5d836ec50cf631a0f572c49c26f256e8ee1af6ea5d40eddbda9f2" + "sha256": "c8773ce002ca56066b6c228f14d3d591c206f55a51b61f51cf6f327b5f228240" }, "pipfile-spec": 6, "requires": { @@ -34,11 +34,11 @@ }, "amqp": { "hashes": [ - "sha256:827cb12fb0baa892aad844fd95258143bce4027fdac4fccddbc43330fd281637", - "sha256:a1ecff425ad063ad42a486c902807d1482311481c8ad95a72694b2975e75f7fd" + "sha256:43b3319e1b4e7d1251833a93d672b4af1e40f3d632d479b98661a95f117880a2", + "sha256:cddc00c725449522023bad949f70fff7b48f0b1ade74d170a6f10ab044739432" ], "markers": "python_version >= '3.6'", - "version": "==5.2.0" + "version": "==5.3.1" }, "aniso8601": { "hashes": [ @@ -526,11 +526,11 @@ }, "deprecated": { "hashes": [ - "sha256:6fac8b097794a90302bdbb17b9b815e732d3c4720583ff1b198499d78470466c", - "sha256:e5323eb936458dccc2582dc6f9c322c852a775a27065ff2b0c4970b9d53d01b3" + "sha256:353bc4a8ac4bfc96800ddab349d89c25dec1079f65fd53acdcc1e0b975b21320", + "sha256:683e561a90de76239796e6b6feac66b99030d2dd3fcf61ef996330f14bbb9b0d" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==1.2.14" + "version": "==1.2.15" }, "dictdiffer": { "hashes": [ @@ -602,11 +602,11 @@ }, "faker": { "hashes": [ - "sha256:4a82b2908cd19f3bba1a4da2060cc4eb18a40410ccdf9350d071d79dc92fe3ce", - "sha256:aa31b52cdae3673d6a78b4857c7bcdc0e98f201a5cb77d7827fa9e6b5876da94" + "sha256:68e5580cb6b4226710886e595eabc13127149d6e71e9d1db65506a7fbe2c7fce", + "sha256:9b01019c1ddaf2253ca2308c0472116e993f4ad8fc9905f82fa965e0c6f932e9" ], "markers": "python_version >= '3.8'", - "version": "==30.8.2" + "version": "==33.0.0" }, "fastjsonschema": { "hashes": [ @@ -1038,11 +1038,11 @@ "opensearch2" ], "hashes": [ - "sha256:44550b0e54278c5c0774d4cce698ea761ef68fc8dd96e08172764d2b43824f7f", - "sha256:e83fef9357bce8b85998295a8f52a5518b29b6f625442b2c2f026f48e32ae9ed" + "sha256:3b60256d509e823c2f0deead938725b064f9537e543a314278cd4266ea161682", + "sha256:6c0ebecf7473a72ff2348467708aa79f48c8a628f4080837c80aaa56373734ff" ], "index": "pypi", - "version": "==13.0.0b1.dev17" + "version": "==13.0.0b1.dev18" }, "invenio-assets": { "hashes": [ @@ -1102,11 +1102,11 @@ }, "invenio-db": { "hashes": [ - "sha256:2257f4af82da6f282df11a9cd49f48d4e6a9fc30bd94d448308cf952f45d56bd", - "sha256:503a95d644ec986c80d86625242adf59502b613ac7f158d31d8f3b5e5f9fb26a" + "sha256:275307e6a6980140f05ce765f54e0efc5f91a09cf206bdeecea874251f3aafbb", + "sha256:9f07739b8854185b594ea7917dfb8443ffb309981c60d2f660da3e2c12fe7a2d" ], "markers": "python_version >= '3.7'", - "version": "==1.3.0" + "version": "==1.3.1" }, "invenio-drafts-resources": { "hashes": [ @@ -1216,11 +1216,11 @@ }, "invenio-oauthclient": { "hashes": [ - "sha256:0aacac0e721f07ec578b0b0ca3cadb46853da0f7bb48127865d5e7ee4a3f0c84", - "sha256:8ea0420b2f965cbbdbc95bb36c73ed1a78c18094f3425df5d1880bb3e1533ac6" + "sha256:14d68ef4c3e5f4a5697a319050208c8a89f731eeab66389d10bd5332bbc06b19", + "sha256:356f6ee3331503bfb09a406fc6e4ee588a3c8820b24620255ee5617ccf8d4bac" ], "markers": "python_version >= '3.7'", - "version": "==4.1.0" + "version": "==4.1.1" }, "invenio-pages": { "hashes": [ @@ -1256,11 +1256,11 @@ }, "invenio-rdm-records": { "hashes": [ - "sha256:79cc2f5ef7cf86fd4432069ccd48f1139fd03e103420c90149e6d0e48f0097fa", - "sha256:c7ad7d5d81989c618b4d7c8773b9e0dd83d49d007282b3dee2a5dcdcfede3ea3" + "sha256:9c162b3398481ca3e3a50dd1c9dd96db1cc8ff4cfe3eb181231b3a9c68be5114", + "sha256:dca619327c7fa2f2383ddef5529ff596ad7ae1a1d84eccfed9b93e6489c9bd37" ], "markers": "python_version >= '3.7'", - "version": "==16.0.1" + "version": "==16.2.0" }, "invenio-records": { "hashes": [ @@ -1311,19 +1311,19 @@ }, "invenio-requests": { "hashes": [ - "sha256:65d007c98dc19b6d750ffd456e0031d081084bdda7d50fec2c0bc47a324760b4", - "sha256:795f81545f0051ef3595676d8d9ca0587247b5bff37f234a4fd4ba0ad6abf3ab" + "sha256:a37aa4aa8313f27f4eab285e21034b451e628bbf3b445ba31b840a14a70faa1b", + "sha256:bc326ff11a22e5f3938cdcaf441a6be069e944b389b1106cb1b35be33345743b" ], "markers": "python_version >= '3.7'", - "version": "==5.2.0" + "version": "==5.3.0" }, "invenio-rest": { "hashes": [ - "sha256:7c8ff04d6e2460bbf1867e9f8f8220c326a10280b7039f853c7dfaa12b73bf8c", - "sha256:a7e45e36fda31b66067013c1f69b014e65e39cde58636f0499e01fcaf2618799" + "sha256:b7b9b9811695f4b754ba128c9be8a98afecb4d9b94c7911411aa1b34a3e99546", + "sha256:ce4182c1cdda6e2336399f43b792a2946d930ced80343552775b58b5b1318370" ], "markers": "python_version >= '3.7'", - "version": "==1.3.1" + "version": "==1.4.0" }, "invenio-search": { "extras": [ @@ -1353,15 +1353,15 @@ }, "invenio-swh": { "git": "https://github.com/inveniosoftware/invenio-swh", - "ref": "107a0ad166b0ed1f0fe37fe103593093976e4abe" + "ref": "511a88046c15fc6986ce85183ac7d842b8157eb1" }, "invenio-theme": { "hashes": [ - "sha256:5816bafa0d5c16384a9fb040928c9a1f95bca3834b2b45a332db8cb5a50a3264", - "sha256:87c047e03e3547798838efde4fcd3ede5d76c421618b22443745bb9ba82567e1" + "sha256:2b8c65a4ef07f41065ce39b9cec4c0de99e1d1fed1fcd970ec688f94f452863c", + "sha256:2ff54e74b74b2ac9ae2c8e56e6012b8c199c58fff250c379792465c8ba6e3a5f" ], "markers": "python_version >= '3.7'", - "version": "==3.4.3" + "version": "==3.5.0" }, "invenio-userprofiles": { "hashes": [ @@ -1381,11 +1381,11 @@ }, "invenio-vocabularies": { "hashes": [ - "sha256:82e465459dfd59f2c0f0627ba8257f2c00e54aea6269b0908f7a27ad91d26b84", - "sha256:f85405f33b82183c300ed0470a70e9d6b1909483fd3b7e6ee283a42b24390e4d" + "sha256:31e13d8d4d7bc7c32372acf1a7f962d0258c17dc68359b0dd42ed22709d5ad92", + "sha256:f46f513c36d1b60fb58c2251ddcd1c1c7df380f2f6486bd26523733c484360b2" ], "markers": "python_version >= '3.7'", - "version": "==6.5.0" + "version": "==6.6.0" }, "invenio-webhooks": { "hashes": [ @@ -1636,10 +1636,10 @@ }, "lxml-html-clean": { "hashes": [ - "sha256:081e6378c68ebb4113940ed82a3534c99e24ba1ca5ad5ce8868c7c4d264618f1", - "sha256:d9f7d8ae36092f4ed5079cfbf95ff06d3c6fd04f4a861422ce251ece72d3c4b5" + "sha256:40c838bbcf1fc72ba4ce811fbb3135913017b27820d7c16e8bc412ae1d8bc00b", + "sha256:b704f2757e61d793b1c08bf5ad69e4c0b68d6696f4c3c1429982caf90050bcaf" ], - "version": "==0.3.1" + "version": "==0.4.1" }, "mako": { "hashes": [ @@ -2378,11 +2378,11 @@ "crypto" ], "hashes": [ - "sha256:3b02fb0f44517787776cf48f2ae25d8e14f300e6d7545a4315cee571a415e850", - "sha256:7e1e5b56cc735432a7369cbfa0efe50fa113ebecdc04ae6922deba8b84582d0c" + "sha256:543b77207db656de204372350926bed5a86201c4cbff159f623f79c7bb487a15", + "sha256:7628a7eb7938959ac1b26e819a1df0fd3259505627b575e4bad6d08f76db695c" ], - "markers": "python_version >= '3.8'", - "version": "==2.9.0" + "markers": "python_version >= '3.9'", + "version": "==2.10.0" }, "pymdown-extensions": { "hashes": [ @@ -2830,11 +2830,11 @@ }, "setuptools": { "hashes": [ - "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd", - "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686" + "sha256:5c4ccb41111392671f02bb5f8436dfc5a9a7185e80500531b133f5775c4163ef", + "sha256:87cb777c3b96d638ca02031192d40390e0ad97737e27b6b4fa831bea86f2f829" ], - "markers": "python_version >= '3.8'", - "version": "==75.3.0" + "markers": "python_version >= '3.9'", + "version": "==75.5.0" }, "simplejson": { "hashes": [ @@ -3129,11 +3129,11 @@ }, "sqlparse": { "hashes": [ - "sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4", - "sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e" + "sha256:9e37b35e16d1cc652a2545f0997c1deb23ea28fa1f3eefe609eee3063c3b105f", + "sha256:e99bc85c78160918c3e1d9230834ab8d80fc06c59d03f8db2618f65f65dda55e" ], "markers": "python_version >= '3.8'", - "version": "==0.5.1" + "version": "==0.5.2" }, "sqltap": { "hashes": [ @@ -3173,11 +3173,11 @@ }, "tomli": { "hashes": [ - "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", - "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed" + "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8", + "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391" ], "markers": "python_version < '3.11'", - "version": "==2.0.2" + "version": "==2.1.0" }, "tornado": { "hashes": [ @@ -3781,71 +3781,71 @@ }, "coverage": { "hashes": [ - "sha256:00a1d69c112ff5149cabe60d2e2ee948752c975d95f1e1096742e6077affd376", - "sha256:023bf8ee3ec6d35af9c1c6ccc1d18fa69afa1cb29eaac57cb064dbb262a517f9", - "sha256:0294ca37f1ba500667b1aef631e48d875ced93ad5e06fa665a3295bdd1d95111", - "sha256:06babbb8f4e74b063dbaeb74ad68dfce9186c595a15f11f5d5683f748fa1d172", - "sha256:0809082ee480bb8f7416507538243c8863ac74fd8a5d2485c46f0f7499f2b491", - "sha256:0b3fb02fe73bed561fa12d279a417b432e5b50fe03e8d663d61b3d5990f29546", - "sha256:0b58c672d14f16ed92a48db984612f5ce3836ae7d72cdd161001cc54512571f2", - "sha256:0bcd1069e710600e8e4cf27f65c90c7843fa8edfb4520fb0ccb88894cad08b11", - "sha256:1032e178b76a4e2b5b32e19d0fd0abbce4b58e77a1ca695820d10e491fa32b08", - "sha256:11a223a14e91a4693d2d0755c7a043db43d96a7450b4f356d506c2562c48642c", - "sha256:12394842a3a8affa3ba62b0d4ab7e9e210c5e366fbac3e8b2a68636fb19892c2", - "sha256:182e6cd5c040cec0a1c8d415a87b67ed01193ed9ad458ee427741c7d8513d963", - "sha256:1d5b8007f81b88696d06f7df0cb9af0d3b835fe0c8dbf489bad70b45f0e45613", - "sha256:1f76846299ba5c54d12c91d776d9605ae33f8ae2b9d1d3c3703cf2db1a67f2c0", - "sha256:27fb4a050aaf18772db513091c9c13f6cb94ed40eacdef8dad8411d92d9992db", - "sha256:29155cd511ee058e260db648b6182c419422a0d2e9a4fa44501898cf918866cf", - "sha256:29fc0f17b1d3fea332f8001d4558f8214af7f1d87a345f3a133c901d60347c73", - "sha256:2b6b4c83d8e8ea79f27ab80778c19bc037759aea298da4b56621f4474ffeb117", - "sha256:2fdef0d83a2d08d69b1f2210a93c416d54e14d9eb398f6ab2f0a209433db19e1", - "sha256:3c65d37f3a9ebb703e710befdc489a38683a5b152242664b973a7b7b22348a4e", - "sha256:4f704f0998911abf728a7783799444fcbbe8261c4a6c166f667937ae6a8aa522", - "sha256:51b44306032045b383a7a8a2c13878de375117946d68dcb54308111f39775a25", - "sha256:53d202fd109416ce011578f321460795abfe10bb901b883cafd9b3ef851bacfc", - "sha256:58809e238a8a12a625c70450b48e8767cff9eb67c62e6154a642b21ddf79baea", - "sha256:5915fcdec0e54ee229926868e9b08586376cae1f5faa9bbaf8faf3561b393d52", - "sha256:5beb1ee382ad32afe424097de57134175fea3faf847b9af002cc7895be4e2a5a", - "sha256:5f8ae553cba74085db385d489c7a792ad66f7f9ba2ee85bfa508aeb84cf0ba07", - "sha256:5fbd612f8a091954a0c8dd4c0b571b973487277d26476f8480bfa4b2a65b5d06", - "sha256:6bd818b7ea14bc6e1f06e241e8234508b21edf1b242d49831831a9450e2f35fa", - "sha256:6f01ba56b1c0e9d149f9ac85a2f999724895229eb36bd997b61e62999e9b0901", - "sha256:73d2b73584446e66ee633eaad1a56aad577c077f46c35ca3283cd687b7715b0b", - "sha256:7bb92c539a624cf86296dd0c68cd5cc286c9eef2d0c3b8b192b604ce9de20a17", - "sha256:8165b796df0bd42e10527a3f493c592ba494f16ef3c8b531288e3d0d72c1f6f0", - "sha256:862264b12ebb65ad8d863d51f17758b1684560b66ab02770d4f0baf2ff75da21", - "sha256:8902dd6a30173d4ef09954bfcb24b5d7b5190cf14a43170e386979651e09ba19", - "sha256:8cf717ee42012be8c0cb205dbbf18ffa9003c4cbf4ad078db47b95e10748eec5", - "sha256:8ed9281d1b52628e81393f5eaee24a45cbd64965f41857559c2b7ff19385df51", - "sha256:99b41d18e6b2a48ba949418db48159d7a2e81c5cc290fc934b7d2380515bd0e3", - "sha256:9cb7fa111d21a6b55cbf633039f7bc2749e74932e3aa7cb7333f675a58a58bf3", - "sha256:a181e99301a0ae128493a24cfe5cfb5b488c4e0bf2f8702091473d033494d04f", - "sha256:a413a096c4cbac202433c850ee43fa326d2e871b24554da8327b01632673a076", - "sha256:a6b1e54712ba3474f34b7ef7a41e65bd9037ad47916ccb1cc78769bae324c01a", - "sha256:ade3ca1e5f0ff46b678b66201f7ff477e8fa11fb537f3b55c3f0568fbfe6e718", - "sha256:b0ac3d42cb51c4b12df9c5f0dd2f13a4f24f01943627120ec4d293c9181219ba", - "sha256:b369ead6527d025a0fe7bd3864e46dbee3aa8f652d48df6174f8d0bac9e26e0e", - "sha256:b57b768feb866f44eeed9f46975f3d6406380275c5ddfe22f531a2bf187eda27", - "sha256:b8d3a03d9bfcaf5b0141d07a88456bb6a4c3ce55c080712fec8418ef3610230e", - "sha256:bc66f0bf1d7730a17430a50163bb264ba9ded56739112368ba985ddaa9c3bd09", - "sha256:bf20494da9653f6410213424f5f8ad0ed885e01f7e8e59811f572bdb20b8972e", - "sha256:c48167910a8f644671de9f2083a23630fbf7a1cb70ce939440cd3328e0919f70", - "sha256:c481b47f6b5845064c65a7bc78bc0860e635a9b055af0df46fdf1c58cebf8e8f", - "sha256:c7c8b95bf47db6d19096a5e052ffca0a05f335bc63cef281a6e8fe864d450a72", - "sha256:c9b8e184898ed014884ca84c70562b4a82cbc63b044d366fedc68bc2b2f3394a", - "sha256:cc8ff50b50ce532de2fa7a7daae9dd12f0a699bfcd47f20945364e5c31799fef", - "sha256:d541423cdd416b78626b55f123412fcf979d22a2c39fce251b350de38c15c15b", - "sha256:dab4d16dfef34b185032580e2f2f89253d302facba093d5fa9dbe04f569c4f4b", - "sha256:dacbc52de979f2823a819571f2e3a350a7e36b8cb7484cdb1e289bceaf35305f", - "sha256:df57bdbeffe694e7842092c5e2e0bc80fff7f43379d465f932ef36f027179806", - "sha256:ed8fe9189d2beb6edc14d3ad19800626e1d9f2d975e436f84e19efb7fa19469b", - "sha256:f3ddf056d3ebcf6ce47bdaf56142af51bb7fad09e4af310241e9db7a3a8022e1", - "sha256:f8fe4984b431f8621ca53d9380901f62bfb54ff759a1348cd140490ada7b693c", - "sha256:fe439416eb6380de434886b00c859304338f8b19f6f54811984f3420a2e03858" + "sha256:0266b62cbea568bd5e93a4da364d05de422110cbed5056d69339bd5af5685433", + "sha256:0573f5cbf39114270842d01872952d301027d2d6e2d84013f30966313cadb529", + "sha256:0ddcb70b3a3a57581b450571b31cb774f23eb9519c2aaa6176d3a84c9fc57671", + "sha256:108bb458827765d538abcbf8288599fee07d2743357bdd9b9dad456c287e121e", + "sha256:14045b8bfd5909196a90da145a37f9d335a5d988a83db34e80f41e965fb7cb42", + "sha256:1a5407a75ca4abc20d6252efeb238377a71ce7bda849c26c7a9bece8680a5d99", + "sha256:2bc3e45c16564cc72de09e37413262b9f99167803e5e48c6156bccdfb22c8327", + "sha256:2d608a7808793e3615e54e9267519351c3ae204a6d85764d8337bd95993581a8", + "sha256:34d23e28ccb26236718a3a78ba72744212aa383141961dd6825f6595005c8b06", + "sha256:37a15573f988b67f7348916077c6d8ad43adb75e478d0910957394df397d2874", + "sha256:3c0317288f032221d35fa4cbc35d9f4923ff0dfd176c79c9b356e8ef8ef2dff4", + "sha256:3c42ec2c522e3ddd683dec5cdce8e62817afb648caedad9da725001fa530d354", + "sha256:3c6b24007c4bcd0b19fac25763a7cac5035c735ae017e9a349b927cfc88f31c1", + "sha256:40cca284c7c310d622a1677f105e8507441d1bb7c226f41978ba7c86979609ab", + "sha256:46f21663e358beae6b368429ffadf14ed0a329996248a847a4322fb2e35d64d3", + "sha256:49ed5ee4109258973630c1f9d099c7e72c5c36605029f3a91fe9982c6076c82b", + "sha256:5c95e0fa3d1547cb6f021ab72f5c23402da2358beec0a8e6d19a368bd7b0fb37", + "sha256:5dd4e4a49d9c72a38d18d641135d2fb0bdf7b726ca60a103836b3d00a1182acd", + "sha256:5e444b8e88339a2a67ce07d41faabb1d60d1004820cee5a2c2b54e2d8e429a0f", + "sha256:60dcf7605c50ea72a14490d0756daffef77a5be15ed1b9fea468b1c7bda1bc3b", + "sha256:623e6965dcf4e28a3debaa6fcf4b99ee06d27218f46d43befe4db1c70841551c", + "sha256:673184b3156cba06154825f25af33baa2671ddae6343f23175764e65a8c4c30b", + "sha256:6cf96ceaa275f071f1bea3067f8fd43bec184a25a962c754024c973af871e1b7", + "sha256:70a56a2ec1869e6e9fa69ef6b76b1a8a7ef709972b9cc473f9ce9d26b5997ce3", + "sha256:77256ad2345c29fe59ae861aa11cfc74579c88d4e8dbf121cbe46b8e32aec808", + "sha256:796c9b107d11d2d69e1849b2dfe41730134b526a49d3acb98ca02f4985eeff7a", + "sha256:7c07de0d2a110f02af30883cd7dddbe704887617d5c27cf373362667445a4c76", + "sha256:7e61b0e77ff4dddebb35a0e8bb5a68bf0f8b872407d8d9f0c726b65dfabe2469", + "sha256:82c809a62e953867cf57e0548c2b8464207f5f3a6ff0e1e961683e79b89f2c55", + "sha256:850cfd2d6fc26f8346f422920ac204e1d28814e32e3a58c19c91980fa74d8289", + "sha256:87ea64b9fa52bf395272e54020537990a28078478167ade6c61da7ac04dc14bc", + "sha256:90746521206c88bdb305a4bf3342b1b7316ab80f804d40c536fc7d329301ee13", + "sha256:951aade8297358f3618a6e0660dc74f6b52233c42089d28525749fc8267dccd2", + "sha256:963e4a08cbb0af6623e61492c0ec4c0ec5c5cf74db5f6564f98248d27ee57d30", + "sha256:987a8e3da7da4eed10a20491cf790589a8e5e07656b6dc22d3814c4d88faf163", + "sha256:9c2eb378bebb2c8f65befcb5147877fc1c9fbc640fc0aad3add759b5df79d55d", + "sha256:a1ab9763d291a17b527ac6fd11d1a9a9c358280adb320e9c2672a97af346ac2c", + "sha256:a3b925300484a3294d1c70f6b2b810d6526f2929de954e5b6be2bf8caa1f12c1", + "sha256:acbb8af78f8f91b3b51f58f288c0994ba63c646bc1a8a22ad072e4e7e0a49f1c", + "sha256:ad32a981bcdedb8d2ace03b05e4fd8dace8901eec64a532b00b15217d3677dd2", + "sha256:aee9cf6b0134d6f932d219ce253ef0e624f4fa588ee64830fcba193269e4daa3", + "sha256:af05bbba896c4472a29408455fe31b3797b4d8648ed0a2ccac03e074a77e2314", + "sha256:b6cce5c76985f81da3769c52203ee94722cd5d5889731cd70d31fee939b74bf0", + "sha256:bb684694e99d0b791a43e9fc0fa58efc15ec357ac48d25b619f207c41f2fd384", + "sha256:c132b5a22821f9b143f87446805e13580b67c670a548b96da945a8f6b4f2efbb", + "sha256:c296263093f099da4f51b3dff1eff5d4959b527d4f2f419e16508c5da9e15e8c", + "sha256:c973b2fe4dc445cb865ab369df7521df9c27bf40715c837a113edaa2aa9faf45", + "sha256:cdd94501d65adc5c24f8a1a0eda110452ba62b3f4aeaba01e021c1ed9cb8f34a", + "sha256:d79d4826e41441c9a118ff045e4bccb9fdbdcb1d02413e7ea6eb5c87b5439d24", + "sha256:dbba8210f5067398b2c4d96b4e64d8fb943644d5eb70be0d989067c8ca40c0f8", + "sha256:df002e59f2d29e889c37abd0b9ee0d0e6e38c24f5f55d71ff0e09e3412a340ec", + "sha256:dfd14bcae0c94004baba5184d1c935ae0d1231b8409eb6c103a5fd75e8ecdc56", + "sha256:e25bacb53a8c7325e34d45dddd2f2fbae0dbc230d0e2642e264a64e17322a777", + "sha256:e2c8e3384c12dfa19fa9a52f23eb091a8fad93b5b81a41b14c17c78e23dd1d8b", + "sha256:e5f2a0f161d126ccc7038f1f3029184dbdf8f018230af17ef6fd6a707a5b881f", + "sha256:e69ad502f1a2243f739f5bd60565d14a278be58be4c137d90799f2c263e7049a", + "sha256:ead9b9605c54d15be228687552916c89c9683c215370c4a44f1f217d2adcc34d", + "sha256:f07ff574986bc3edb80e2c36391678a271d555f91fd1d332a1e0f4b5ea4b6ea9", + "sha256:f2c7a045eef561e9544359a0bf5784b44e55cefc7261a20e730baa9220c83413", + "sha256:f3e8796434a8106b3ac025fd15417315d7a58ee3e600ad4dbcfddc3f4b14342c", + "sha256:f63e21ed474edd23f7501f89b53280014436e383a14b9bd77a648366c81dce7b", + "sha256:fd49c01e5057a451c30c9b892948976f5d38f2cbd04dc556a82743ba8e27ed8c" ], "markers": "python_version >= '3.9'", - "version": "==7.6.4" + "version": "==7.6.7" }, "docker-services-cli": { "hashes": [ @@ -4168,11 +4168,11 @@ }, "setuptools": { "hashes": [ - "sha256:f2504966861356aa38616760c0f66568e535562374995367b4e69c7143cf6bcd", - "sha256:fba5dd4d766e97be1b1681d98712680ae8f2f26d7881245f2ce9e40714f1a686" + "sha256:5c4ccb41111392671f02bb5f8436dfc5a9a7185e80500531b133f5775c4163ef", + "sha256:87cb777c3b96d638ca02031192d40390e0ad97737e27b6b4fa831bea86f2f829" ], - "markers": "python_version >= '3.8'", - "version": "==75.3.0" + "markers": "python_version >= '3.9'", + "version": "==75.5.0" }, "snowballstemmer": { "hashes": [ @@ -4247,11 +4247,11 @@ }, "tomli": { "hashes": [ - "sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38", - "sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed" + "sha256:3f646cae2aec94e17d04973e4249548320197cfabdf130015d023de4b74d8ab8", + "sha256:a5c57c3d1c56f5ccdf89f6523458f60ef716e210fc47c4cfb188c5ba473e0391" ], "markers": "python_version < '3.11'", - "version": "==2.0.2" + "version": "==2.1.0" }, "typing-extensions": { "hashes": [ diff --git a/assets/js/components/react_invenio_forms/CustomAffiliationsSuggestions.js b/assets/js/components/react_invenio_forms/CustomAffiliationsSuggestions.js new file mode 100644 index 00000000..eb92cfe9 --- /dev/null +++ b/assets/js/components/react_invenio_forms/CustomAffiliationsSuggestions.js @@ -0,0 +1,59 @@ +import React from "react"; +import { Header, Grid } from "semantic-ui-react"; +import { makeIdEntry, makeSubheader } from "react-invenio-forms"; + + +export const CustomAffiliationsSuggestions = (creatibutors) => { + // Ensure creatibutors is always an array + const creatibutorsArray = Array.isArray(creatibutors) ? creatibutors : [creatibutors]; + + return creatibutorsArray.map((creatibutor) => { + const { creatibutor: creatibutorData } = creatibutor; + const { name, acronym, identifiers = [], id } = creatibutorData; + + const subheader = makeSubheader(creatibutorData, creatibutor.isOrganization); + const displayName = acronym ? `${name} (${acronym})` : name; + + const sources = []; + const idStrings = []; + + identifiers.forEach((identifier) => { + const { scheme, identifier: value } = identifier; + + if (scheme === "ror") { + sources.push( + + Source: {scheme.toUpperCase()} (Preferred) + + ); + } else if (scheme === "edmo") { + sources.push( + Source: {scheme.toUpperCase()} + ); + } else { + const idEntry = makeIdEntry(identifier); + if (idEntry) idStrings.push(idEntry); + } + }); + + return ( + + + +
+ {displayName} {idStrings.length > 0 && <>({idStrings})} + {subheader && {subheader}} +
+
+ + {sources.length > 0 && ( +
+ {sources} +
+ )} +
+
+
+ ); + }); +}; diff --git a/assets/js/invenio_app_rdm/overridableRegistry/mapping.js b/assets/js/invenio_app_rdm/overridableRegistry/mapping.js index 594c4f22..dc541dda 100644 --- a/assets/js/invenio_app_rdm/overridableRegistry/mapping.js +++ b/assets/js/invenio_app_rdm/overridableRegistry/mapping.js @@ -7,10 +7,12 @@ import { UpgradeLegacyRecordButton } from "../../components/landing_page/overrides/UpgradeLegacyRecordButton"; import { FileUploaderNewVersion } from "../../components/landing_page/overrides/FileUploaderNewVersion"; import SubcommunityCreateForm from "../../components/community/overrides/SubcommunityCreateForm"; +import { CustomAffiliationsSuggestions } from "../../components/react_invenio_forms/CustomAffiliationsSuggestions"; export const overriddenComponents = { "InvenioAppRdm.RecordLandingPage.RecordManagement.container": UpgradeLegacyRecordButton, "ReactInvenioDeposit.FileUploader.NewVersionButton.container": FileUploaderNewVersion, + "ReactInvenioForms.AffiliationsSuggestions.content": CustomAffiliationsSuggestions, "InvenioCommunities.CommunityCreateForm.layout": SubcommunityCreateForm }; diff --git a/docker-compose.full.yml b/docker-compose.full.yml index 1f07c2d0..fe30b975 100644 --- a/docker-compose.full.yml +++ b/docker-compose.full.yml @@ -1,4 +1,3 @@ -version: '2.2' services: cache: extends: diff --git a/docker-compose.yml b/docker-compose.yml index e660e2a6..7ab226fa 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,3 @@ -version: '2.2' services: cache: extends: diff --git a/docker-services.yml b/docker-services.yml index b4ad9566..d9185eb7 100644 --- a/docker-services.yml +++ b/docker-services.yml @@ -1,4 +1,3 @@ -version: "2.2" services: app: build: diff --git a/invenio.cfg b/invenio.cfg index ddfeed9b..b1b685e9 100644 --- a/invenio.cfg +++ b/invenio.cfg @@ -20,68 +20,48 @@ from datetime import timedelta from celery.schedules import crontab from flask_resources import create_error_handler from invenio_administration.permissions import administration_permission -from invenio_app_rdm.config import ( - APP_RDM_DEPOSIT_FORM_DEFAULTS as DEPOSIT_FORM_DEFAULTS, -) -from invenio_app_rdm.config import ( - APP_RDM_ROUTES, - CELERY_BEAT_SCHEDULE, -) -from invenio_app_rdm.config import ( - COMMUNITIES_ERROR_HANDLERS as BASE_COMMUNITIES_ERROR_HANDLERS, -) +from invenio_app_rdm.config import \ + APP_RDM_DEPOSIT_FORM_DEFAULTS as DEPOSIT_FORM_DEFAULTS +from invenio_app_rdm.config import APP_RDM_ROUTES, CELERY_BEAT_SCHEDULE, APP_RDM_IDENTIFIER_SCHEMES_UI +from invenio_app_rdm.config import \ + COMMUNITIES_ERROR_HANDLERS as BASE_COMMUNITIES_ERROR_HANDLERS from invenio_communities.communities.services import facets as community_facets from invenio_github.oauth.remote_app import github_app as github_remote_app from invenio_i18n import lazy_gettext as _ from invenio_oauthclient.contrib.keycloak import KeycloakSettingsHelper -from invenio_oauthclient.contrib.orcid import ( - REMOTE_MEMBER_APP, - REMOTE_SANDBOX_MEMBER_APP, -) +from invenio_oauthclient.contrib.orcid import (REMOTE_MEMBER_APP, + REMOTE_SANDBOX_MEMBER_APP) from invenio_oauthclient.views.client import auto_redirect_login -from invenio_rdm_records.config import ( - RDM_FACETS, -) -from invenio_rdm_records.config import ( - RDM_SORT_OPTIONS as BASE_SORT_OPTIONS, -) +from invenio_rdm_records.config import (RDM_FACETS, + RDM_RECORDS_PERSONORG_SCHEMES) +from invenio_rdm_records.config import RDM_SORT_OPTIONS as BASE_SORT_OPTIONS from invenio_rdm_records.contrib.journal import JOURNAL_SORT_OPTIONS from invenio_rdm_records.contrib.meeting import MEETING_SORT_OPTIONS -from invenio_rdm_records.resources.config import ( - error_handlers as base_records_error_handlers, -) +from invenio_rdm_records.resources.config import \ + error_handlers as base_records_error_handlers from invenio_rdm_records.resources.errors import HTTPJSONException from invenio_rdm_records.services.components import DefaultRecordsComponents from invenio_rdm_records.services.components.signal import SignalComponent from invenio_records_resources.services.records.queryparser import ( - FieldValueMapper, - QueryParser, - SearchFieldTransformer, -) -from invenio_vocabularies.services.custom_fields import ( - SUBJECT_FIELDS, - SUBJECT_FIELDS_UI, -) + FieldValueMapper, QueryParser, SearchFieldTransformer) +from invenio_vocabularies.services.custom_fields import (SUBJECT_FIELDS, + SUBJECT_FIELDS_UI) from zenodo_rdm import facets as zenodo_community_facets from zenodo_rdm import providers as zenodo_providers from zenodo_rdm.api import ZenodoRDMDraft, ZenodoRDMRecord -from zenodo_rdm.custom_fields import ( - CUSTOM_FIELDS, - CUSTOM_FIELDS_FACETS, - CUSTOM_FIELDS_UI, - NAMESPACES, -) +from zenodo_rdm.custom_fields import (CUSTOM_FIELDS, CUSTOM_FIELDS_FACETS, + CUSTOM_FIELDS_UI, NAMESPACES) +from zenodo_rdm.custom_schemes import is_edmo from zenodo_rdm.files import storage_factory from zenodo_rdm.github.schemas import CitationMetadataSchema from zenodo_rdm.legacy.resources import record_serializers from zenodo_rdm.metrics.config import METRICS_CACHE_UPDATE_INTERVAL from zenodo_rdm.moderation.errors import UserBlockedException -from zenodo_rdm.moderation.handlers import CommunityScoreHandler, RecordScoreHandler +from zenodo_rdm.moderation.handlers import (CommunityScoreHandler, + RecordScoreHandler) from zenodo_rdm.openaire.records.components import OpenAIREComponent -from zenodo_rdm.permissions import ( - ZenodoCommunityPermissionPolicy, - ZenodoRDMRecordPermissionPolicy, -) +from zenodo_rdm.permissions import (ZenodoCommunityPermissionPolicy, + ZenodoRDMRecordPermissionPolicy) from zenodo_rdm.queryparser import word_communities, word_doi from zenodo_rdm.subcommunities import ( ZenodoSubCommunityRequest, @@ -740,16 +720,10 @@ USERPROFILES_READ_ONLY = ( THEME_SHOW_FRONTPAGE_INTRO_SECTION = False APP_RDM_RECORD_LANDING_PAGE_TEMPLATE = "zenodo_rdm/records/detail.html" -from zenodo_rdm.utils import ( - annostor_link_render, - blr_link_render, - briefideas_link_render, - f1000_link_render, - github_link_render, - openaire_link_render, - reana_link_render, - swh_link_render, -) +from zenodo_rdm.utils import (annostor_link_render, blr_link_render, + briefideas_link_render, f1000_link_render, + github_link_render, openaire_link_render, + reana_link_render, swh_link_render) APP_RDM_RECORD_LANDING_PAGE_EXTERNAL_LINKS = [ {"id": "f1000", "render": f1000_link_render}, @@ -926,6 +900,22 @@ OAISERVER_XSL_URL = "/static/oai2.xsl" RDM_DATACITE_FUNDER_IDENTIFIERS_PRIORITY = ("doi", "ror", "grid", "isni", "gnd") """Priority of funder identifiers types for Datacite serialization, prioritize DOI.""" +RDM_RECORDS_PERSONORG_SCHEMES = { +**RDM_RECORDS_PERSONORG_SCHEMES, + "edmo": {"label": _("EDMO"), "validator": is_edmo, "datacite": "URL"}, +} +"""Person and Organization Schemes.""" + +APP_RDM_IDENTIFIER_SCHEMES_UI = { + **APP_RDM_IDENTIFIER_SCHEMES_UI, + "edmo": { + "url_prefix": "https://edmo.seadatanet.org/report/", + "icon": "images/edmo-icon.svg", + "label": "EDMO", + } +} +"""Identifier Schemes UI config.""" + RECORDS_RESOURCES_ALLOW_EMPTY_FILES = False """Disable empty files for Zenodo.""" diff --git a/scripts/run_script.py b/scripts/run_script.py old mode 100644 new mode 100755 index 9d0eb868..78a2db0e --- a/scripts/run_script.py +++ b/scripts/run_script.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- # # Copyright (C) 2024 CERN. @@ -5,7 +6,7 @@ # Invenio-RDM is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Script to run a Python script in a job on OpenShift.""" -#!/usr/bin/env python + import json import subprocess import sys @@ -22,9 +23,9 @@ def _abort(message): if len(sys.argv) < 1: print(f"Usage: {PROGRAM} \n") - print(f" file: the path to the script to run") + print(" file: the path to the script to run") print( - f" image: the image version to be used by the job. If not provided, the script will try to infer it from the deployed image." + " image: the image version to be used by the job. If not provided, the script will try to infer it from the deployed image." ) print(f" Example: {PROGRAM} /home/script.py 7.3.0") sys.exit(1) @@ -60,7 +61,9 @@ def infer_deployed_version(): script_path = sys.argv[1] -image_version = sys.argv[2].removeprefix("v") if len(sys.argv) > 2 else infer_deployed_version() +image_version = ( + sys.argv[2].removeprefix("v") if len(sys.argv) > 2 else infer_deployed_version() +) # verify the file exists in local filesystem if not Path(script_path).is_file(): @@ -103,7 +106,7 @@ def infer_deployed_version(): - copy the script {script_path} to {terminal_pod_name} - run a pod with Zenodo {image_version} - execute the script inside the created pod -Proceed? (y/n): +Proceed? (y/n): """ if input(str_) != "y": _abort("Aborted.") diff --git a/site/setup.cfg b/site/setup.cfg index 7bd0290c..58bfa192 100644 --- a/site/setup.cfg +++ b/site/setup.cfg @@ -88,6 +88,8 @@ invenio_previewer.previewers = image_previewer = zenodo_rdm.previewer.image_previewer invenio_search.index_templates = zenodo_rdm = zenodo_rdm.index_templates +idutils.custom_schemes = + edmo = zenodo_rdm.custom_schemes:get_scheme_config_func [bdist_wheel] universal = 1 diff --git a/site/zenodo_rdm/custom_schemes.py b/site/zenodo_rdm/custom_schemes.py new file mode 100644 index 00000000..ce643f35 --- /dev/null +++ b/site/zenodo_rdm/custom_schemes.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# ZenodoRDM is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Custom scheme config.""" + +import re + +# Regular expression to validate EDMO identifiers in the format "edmo:" +edmo_regexp = re.compile(r"^edmo:(\d+)$") + +# Regular expression to match the EDMO URL format +edmo_url_regexp = re.compile( + r"(?:https?://)?(?:edmo\.seadatanet\.org/report/)?(\d+)$", re.IGNORECASE +) + + +def is_edmo(val): + """ + Validate and normalize an EDMO identifier or URL. + + Returns the normalized 'edmo:' format if valid, otherwise None. + """ + # Match against the URL or the edmo: format + match = edmo_url_regexp.match(val) or edmo_regexp.match(val) + if match: + # Extract the numeric ID from the matched group + return f"edmo:{match.group(1)}" + return None + + +def normalize_edmo(val): + """Normalize an EDMO identifier or URL to the 'edmo:' format.""" + return is_edmo(val) + + +def generate_edmo_url(_, normalized_pid): + """ + Generate a URL for a given normalized EDMO identifier. + + Assumes the input is in the form 'edmo:'. + """ + edmo_id = normalized_pid.split(":")[1] + return f"https://edmo.seadatanet.org/report/{edmo_id}" + + +def get_scheme_config_func(): + """Return the configuration for the EDMO custom scheme.""" + return { + "validator": is_edmo, + "normalizer": normalize_edmo, + "filter": [], + "url_generator": generate_edmo_url, + } diff --git a/site/zenodo_rdm/legacy/services.py b/site/zenodo_rdm/legacy/services.py index 7eb2c57e..8656356d 100644 --- a/site/zenodo_rdm/legacy/services.py +++ b/site/zenodo_rdm/legacy/services.py @@ -152,7 +152,7 @@ class LegacyRecordServiceConfig(RDMRecordServiceConfig): ), "doi": RecordPIDLink("https://doi.org/{+pid_doi}", when=has_doi), "parent_doi": RecordParentPIDLink( - "{+ui}/doi/{+pid_doi}", + "https://doi.org/{+pid_doi}", when=is_record_and_has_parent_doi, ), "badge": RecordPIDLink("{+ui}/badge/doi/{pid_doi}.svg"), diff --git a/static/images/edmo-icon.svg b/static/images/edmo-icon.svg new file mode 100644 index 00000000..a602f24a --- /dev/null +++ b/static/images/edmo-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/templates/semantic-ui/zenodo_rdm/macros/creators.html b/templates/semantic-ui/zenodo_rdm/macros/creators.html index 24f94a26..caf3d1b1 100644 --- a/templates/semantic-ui/zenodo_rdm/macros/creators.html +++ b/templates/semantic-ui/zenodo_rdm/macros/creators.html @@ -53,6 +53,11 @@ {% set link = "https://ror.org/{identifier}".format(identifier=id.identifier) %} {% set link_title = _("ROR profile") %} {% set icon = "/static/images/ror-icon.svg" %} + + {% elif id.scheme == "edmo" %} + {% set link = "https://edmo.seadatanet.org/report/{identifier}".format(identifier=id.identifier) %} + {% set link_title = _("EDMO profile") %} + {% set icon = "/static/images/edmo-icon.svg" %} {% elif id.scheme == "gnd" %} {% set link = "https://d-nb.info/gnd/{identifier}".format(identifier=id.identifier) %}