From 3d4222f2f87d2621b6330037f15a3dd6ab7dbc24 Mon Sep 17 00:00:00 2001 From: Marc Sommerhalder Date: Tue, 11 Mar 2025 12:12:46 +0100 Subject: [PATCH 1/3] Update Django to 5.0.13 --- Pipfile | 2 +- Pipfile.lock | 392 ++++++++++++++++++++++++++------------------------- 2 files changed, 201 insertions(+), 193 deletions(-) diff --git a/Pipfile b/Pipfile index b986436..389c1fa 100644 --- a/Pipfile +++ b/Pipfile @@ -4,7 +4,7 @@ verify_ssl = true name = "pypi" [packages] -django = "~=5.0.11" +django = "~=5.0.13" django-ninja = "~=1.1" psycopg2-binary = "~=2.9.5" django-environ = "~=0.11" diff --git a/Pipfile.lock b/Pipfile.lock index b09910b..7923223 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f1205eb70ad51ba29e24d64d956d985cb316866cb470280267cbb3b555fc5d82" + "sha256": "5b6063085b3762ce95b4667831171130562a0f40498032d3f0ca703a609c503c" }, "pipfile-spec": 6, "requires": { @@ -165,12 +165,12 @@ }, "django": { "hashes": [ - "sha256:05097ea026cceb2db4db0655ecf77cc96b0753ac6a367280e458e603f6556f53", - "sha256:3566604af111f586a1c9d49cb14ba6c607a0ccbbf87f57d98872cd8aae7d48ad" + "sha256:b983238dfa2eb2e6b27ebb815e14f0741cf186606eb7bcd857e740174017c50e", + "sha256:f9d4b7b87a9dae248d5f20cec940cf7290e07d508d6d8432e3c2cabf09b3b0ff" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==5.0.12" + "version": "==5.0.13" }, "django-environ": { "hashes": [ @@ -583,11 +583,11 @@ "validation" ], "hashes": [ - "sha256:7735d217c1c596f916d0a048c7bdd08f6bc6cb97369b628fab9b7eba4092fbdd", - "sha256:eb46fe63b494cfd1ccf5dfafa9256a1893ef9b6d4ee69373e040e3888270357e" + "sha256:13a9926fdc6f5a0c81a6bcf5748d3e46fd8814b888936b94fd6d8ca6caf0c20d", + "sha256:7ab6d3d191013727d789f803869789a26e546543a27da3bf2b8abf96b8264d3f" ], "markers": "python_version >= '3.10'", - "version": "==1.12.1" + "version": "==1.12.2" }, "pystac-client": { "hashes": [ @@ -684,112 +684,112 @@ }, "rpds-py": { "hashes": [ - "sha256:009de23c9c9ee54bf11303a966edf4d9087cd43a6003672e6aa7def643d06518", - "sha256:02fbb9c288ae08bcb34fb41d516d5eeb0455ac35b5512d03181d755d80810059", - "sha256:0a0461200769ab3b9ab7e513f6013b7a97fdeee41c29b9db343f3c5a8e2b9e61", - "sha256:0b09865a9abc0ddff4e50b5ef65467cd94176bf1e0004184eb915cbc10fc05c5", - "sha256:0b8db6b5b2d4491ad5b6bdc2bc7c017eec108acbf4e6785f42a9eb0ba234f4c9", - "sha256:0c150c7a61ed4a4f4955a96626574e9baf1adf772c2fb61ef6a5027e52803543", - "sha256:0f3cec041684de9a4684b1572fe28c7267410e02450f4561700ca5a3bc6695a2", - "sha256:1352ae4f7c717ae8cba93421a63373e582d19d55d2ee2cbb184344c82d2ae55a", - "sha256:177c7c0fce2855833819c98e43c262007f42ce86651ffbb84f37883308cb0e7d", - "sha256:1978d0021e943aae58b9b0b196fb4895a25cc53d3956b8e35e0b7682eefb6d56", - "sha256:1a60bce91f81ddaac922a40bbb571a12c1070cb20ebd6d49c48e0b101d87300d", - "sha256:1aef18820ef3e4587ebe8b3bc9ba6e55892a6d7b93bac6d29d9f631a3b4befbd", - "sha256:1e9663daaf7a63ceccbbb8e3808fe90415b0757e2abddbfc2e06c857bf8c5e2b", - "sha256:20070c65396f7373f5df4005862fa162db5d25d56150bddd0b3e8214e8ef45b4", - "sha256:214b7a953d73b5e87f0ebece4a32a5bd83c60a3ecc9d4ec8f1dca968a2d91e99", - "sha256:22bebe05a9ffc70ebfa127efbc429bc26ec9e9b4ee4d15a740033efda515cf3d", - "sha256:24e8abb5878e250f2eb0d7859a8e561846f98910326d06c0d51381fed59357bd", - "sha256:26fd7cac7dd51011a245f29a2cc6489c4608b5a8ce8d75661bb4a1066c52dfbe", - "sha256:27b1d3b3915a99208fee9ab092b8184c420f2905b7d7feb4aeb5e4a9c509b8a1", - "sha256:27e98004595899949bd7a7b34e91fa7c44d7a97c40fcaf1d874168bb652ec67e", - "sha256:2b8f60e1b739a74bab7e01fcbe3dddd4657ec685caa04681df9d562ef15b625f", - "sha256:2de29005e11637e7a2361fa151f780ff8eb2543a0da1413bb951e9f14b699ef3", - "sha256:2e8b55d8517a2fda8d95cb45d62a5a8bbf9dd0ad39c5b25c8833efea07b880ca", - "sha256:2fa4331c200c2521512595253f5bb70858b90f750d39b8cbfd67465f8d1b596d", - "sha256:3445e07bf2e8ecfeef6ef67ac83de670358abf2996916039b16a218e3d95e97e", - "sha256:3453e8d41fe5f17d1f8e9c383a7473cd46a63661628ec58e07777c2fff7196dc", - "sha256:378753b4a4de2a7b34063d6f95ae81bfa7b15f2c1a04a9518e8644e81807ebea", - "sha256:3af6e48651c4e0d2d166dc1b033b7042ea3f871504b6805ba5f4fe31581d8d38", - "sha256:3dfcbc95bd7992b16f3f7ba05af8a64ca694331bd24f9157b49dadeeb287493b", - "sha256:3f21f0495edea7fdbaaa87e633a8689cd285f8f4af5c869f27bc8074638ad69c", - "sha256:4041711832360a9b75cfb11b25a6a97c8fb49c07b8bd43d0d02b45d0b499a4ff", - "sha256:44d61b4b7d0c2c9ac019c314e52d7cbda0ae31078aabd0f22e583af3e0d79723", - "sha256:4617e1915a539a0d9a9567795023de41a87106522ff83fbfaf1f6baf8e85437e", - "sha256:4b232061ca880db21fa14defe219840ad9b74b6158adb52ddf0e87bead9e8493", - "sha256:5246b14ca64a8675e0a7161f7af68fe3e910e6b90542b4bfb5439ba752191df6", - "sha256:5725dd9cc02068996d4438d397e255dcb1df776b7ceea3b9cb972bdb11260a83", - "sha256:583f6a1993ca3369e0f80ba99d796d8e6b1a3a2a442dd4e1a79e652116413091", - "sha256:59259dc58e57b10e7e18ce02c311804c10c5a793e6568f8af4dead03264584d1", - "sha256:593eba61ba0c3baae5bc9be2f5232430453fb4432048de28399ca7376de9c627", - "sha256:59f4a79c19232a5774aee369a0c296712ad0e77f24e62cad53160312b1c1eaa1", - "sha256:5f0e260eaf54380380ac3808aa4ebe2d8ca28b9087cf411649f96bad6900c728", - "sha256:62d9cfcf4948683a18a9aff0ab7e1474d407b7bab2ca03116109f8464698ab16", - "sha256:64607d4cbf1b7e3c3c8a14948b99345eda0e161b852e122c6bb71aab6d1d798c", - "sha256:655ca44a831ecb238d124e0402d98f6212ac527a0ba6c55ca26f616604e60a45", - "sha256:666ecce376999bf619756a24ce15bb14c5bfaf04bf00abc7e663ce17c3f34fe7", - "sha256:68049202f67380ff9aa52f12e92b1c30115f32e6895cd7198fa2a7961621fc5a", - "sha256:69803198097467ee7282750acb507fba35ca22cc3b85f16cf45fb01cb9097730", - "sha256:6c7b99ca52c2c1752b544e310101b98a659b720b21db00e65edca34483259967", - "sha256:6dd9412824c4ce1aca56c47b0991e65bebb7ac3f4edccfd3f156150c96a7bf25", - "sha256:70eb60b3ae9245ddea20f8a4190bd79c705a22f8028aaf8bbdebe4716c3fab24", - "sha256:70fb28128acbfd264eda9bf47015537ba3fe86e40d046eb2963d75024be4d055", - "sha256:7b2513ba235829860b13faa931f3b6846548021846ac808455301c23a101689d", - "sha256:7ef9d9da710be50ff6809fed8f1963fecdfecc8b86656cadfca3bc24289414b0", - "sha256:81e69b0a0e2537f26d73b4e43ad7bc8c8efb39621639b4434b76a3de50c6966e", - "sha256:8633e471c6207a039eff6aa116e35f69f3156b3989ea3e2d755f7bc41754a4a7", - "sha256:8bd7c8cfc0b8247c8799080fbff54e0b9619e17cdfeb0478ba7295d43f635d7c", - "sha256:9253fc214112405f0afa7db88739294295f0e08466987f1d70e29930262b4c8f", - "sha256:99b37292234e61325e7a5bb9689e55e48c3f5f603af88b1642666277a81f1fbd", - "sha256:9bd7228827ec7bb817089e2eb301d907c0d9827a9e558f22f762bb690b131652", - "sha256:9beeb01d8c190d7581a4d59522cd3d4b6887040dcfc744af99aa59fef3e041a8", - "sha256:a63cbdd98acef6570c62b92a1e43266f9e8b21e699c363c0fef13bd530799c11", - "sha256:a76e42402542b1fae59798fab64432b2d015ab9d0c8c47ba7addddbaf7952333", - "sha256:ac0a03221cdb5058ce0167ecc92a8c89e8d0decdc9e99a2ec23380793c4dcb96", - "sha256:b0b4136a252cadfa1adb705bb81524eee47d9f6aab4f2ee4fa1e9d3cd4581f64", - "sha256:b25bc607423935079e05619d7de556c91fb6adeae9d5f80868dde3468657994b", - "sha256:b3d504047aba448d70cf6fa22e06cb09f7cbd761939fdd47604f5e007675c24e", - "sha256:bb47271f60660803ad11f4c61b42242b8c1312a31c98c578f79ef9387bbde21c", - "sha256:bbb232860e3d03d544bc03ac57855cd82ddf19c7a07651a7c0fdb95e9efea8b9", - "sha256:bc27863442d388870c1809a87507727b799c8460573cfbb6dc0eeaef5a11b5ec", - "sha256:bc51abd01f08117283c5ebf64844a35144a0843ff7b2983e0648e4d3d9f10dbb", - "sha256:be2eb3f2495ba669d2a985f9b426c1797b7d48d6963899276d22f23e33d47e37", - "sha256:bf9db5488121b596dbfc6718c76092fda77b703c1f7533a226a5a9f65248f8ad", - "sha256:c58e2339def52ef6b71b8f36d13c3688ea23fa093353f3a4fee2556e62086ec9", - "sha256:cfbc454a2880389dbb9b5b398e50d439e2e58669160f27b60e5eca11f68ae17c", - "sha256:cff63a0272fcd259dcc3be1657b07c929c466b067ceb1c20060e8d10af56f5bf", - "sha256:d115bffdd417c6d806ea9069237a4ae02f513b778e3789a359bc5856e0404cc4", - "sha256:d20cfb4e099748ea39e6f7b16c91ab057989712d31761d3300d43134e26e165f", - "sha256:d48424e39c2611ee1b84ad0f44fb3b2b53d473e65de061e3f460fc0be5f1939d", - "sha256:e0fa2d4ec53dc51cf7d3bb22e0aa0143966119f42a0c3e4998293a3dd2856b09", - "sha256:e32fee8ab45d3c2db6da19a5323bc3362237c8b653c70194414b892fd06a080d", - "sha256:e35ba67d65d49080e8e5a1dd40101fccdd9798adb9b050ff670b7d74fa41c566", - "sha256:e3fb866d9932a3d7d0c82da76d816996d1667c44891bd861a0f97ba27e84fc74", - "sha256:e61b02c3f7a1e0b75e20c3978f7135fd13cb6cf551bf4a6d29b999a88830a338", - "sha256:e67ba3c290821343c192f7eae1d8fd5999ca2dc99994114643e2f2d3e6138b15", - "sha256:e79dd39f1e8c3504be0607e5fc6e86bb60fe3584bec8b782578c3b0fde8d932c", - "sha256:e89391e6d60251560f0a8f4bd32137b077a80d9b7dbe6d5cab1cd80d2746f648", - "sha256:ea7433ce7e4bfc3a85654aeb6747babe3f66eaf9a1d0c1e7a4435bbdf27fea84", - "sha256:eaf16ae9ae519a0e237a0f528fd9f0197b9bb70f40263ee57ae53c2b8d48aeb3", - "sha256:eb0c341fa71df5a4595f9501df4ac5abfb5a09580081dffbd1ddd4654e6e9123", - "sha256:f276b245347e6e36526cbd4a266a417796fc531ddf391e43574cf6466c492520", - "sha256:f47ad3d5f3258bd7058d2d506852217865afefe6153a36eb4b6928758041d831", - "sha256:f56a6b404f74ab372da986d240e2e002769a7d7102cc73eb238a4f72eec5284e", - "sha256:f5cf2a0c2bdadf3791b5c205d55a37a54025c6e18a71c71f82bb536cf9a454bf", - "sha256:f5d36399a1b96e1a5fdc91e0522544580dbebeb1f77f27b2b0ab25559e103b8b", - "sha256:f60bd8423be1d9d833f230fdbccf8f57af322d96bcad6599e5a771b151398eb2", - "sha256:f612463ac081803f243ff13cccc648578e2279295048f2a8d5eb430af2bae6e3", - "sha256:f73d3fef726b3243a811121de45193c0ca75f6407fe66f3f4e183c983573e130", - "sha256:f82a116a1d03628a8ace4859556fb39fd1424c933341a08ea3ed6de1edb0283b", - "sha256:fb0ba113b4983beac1a2eb16faffd76cb41e176bf58c4afe3e14b9c681f702de", - "sha256:fb4f868f712b2dd4bcc538b0a0c1f63a2b1d584c925e69a224d759e7070a12d5", - "sha256:fb6116dfb8d1925cbdb52595560584db42a7f664617a1f7d7f6e32f138cdf37d", - "sha256:fda7cb070f442bf80b642cd56483b5548e43d366fe3f39b98e67cce780cded00", - "sha256:feea821ee2a9273771bae61194004ee2fc33f8ec7db08117ef9147d4bbcbca8e" + "sha256:09cd7dbcb673eb60518231e02874df66ec1296c01a4fcd733875755c02014b19", + "sha256:0f3288930b947cbebe767f84cf618d2cbe0b13be476e749da0e6a009f986248c", + "sha256:0fced9fd4a07a1ded1bac7e961ddd9753dd5d8b755ba8e05acba54a21f5f1522", + "sha256:112b8774b0b4ee22368fec42749b94366bd9b536f8f74c3d4175d4395f5cbd31", + "sha256:11dd60b2ffddba85715d8a66bb39b95ddbe389ad2cfcf42c833f1bcde0878eaf", + "sha256:178f8a60fc24511c0eb756af741c476b87b610dba83270fce1e5a430204566a4", + "sha256:1b08027489ba8fedde72ddd233a5ea411b85a6ed78175f40285bd401bde7466d", + "sha256:1bf5be5ba34e19be579ae873da515a2836a2166d8d7ee43be6ff909eda42b72b", + "sha256:1ed7de3c86721b4e83ac440751329ec6a1102229aa18163f84c75b06b525ad7e", + "sha256:1eedaaccc9bb66581d4ae7c50e15856e335e57ef2734dbc5fd8ba3e2a4ab3cb6", + "sha256:243241c95174b5fb7204c04595852fe3943cc41f47aa14c3828bc18cd9d3b2d6", + "sha256:26bb3e8de93443d55e2e748e9fd87deb5f8075ca7bc0502cfc8be8687d69a2ec", + "sha256:271fa2184cf28bdded86bb6217c8e08d3a169fe0bbe9be5e8d96e8476b707122", + "sha256:28358c54fffadf0ae893f6c1050e8f8853e45df22483b7fff2f6ab6152f5d8bf", + "sha256:285019078537949cecd0190f3690a0b0125ff743d6a53dfeb7a4e6787af154f5", + "sha256:2893d778d4671ee627bac4037a075168b2673c57186fb1a57e993465dbd79a93", + "sha256:2a54027554ce9b129fc3d633c92fa33b30de9f08bc61b32c053dc9b537266fed", + "sha256:2c6ae11e6e93728d86aafc51ced98b1658a0080a7dd9417d24bfb955bb09c3c2", + "sha256:2cfa07c346a7ad07019c33fb9a63cf3acb1f5363c33bc73014e20d9fe8b01cdd", + "sha256:35d5631ce0af26318dba0ae0ac941c534453e42f569011585cb323b7774502a5", + "sha256:3614d280bf7aab0d3721b5ce0e73434acb90a2c993121b6e81a1c15c665298ac", + "sha256:3902df19540e9af4cc0c3ae75974c65d2c156b9257e91f5101a51f99136d834c", + "sha256:3aaf141d39f45322e44fc2c742e4b8b4098ead5317e5f884770c8df0c332da70", + "sha256:3d8abf7896a91fb97e7977d1aadfcc2c80415d6dc2f1d0fca5b8d0df247248f3", + "sha256:3e77febf227a1dc3220159355dba68faa13f8dca9335d97504abf428469fb18b", + "sha256:3e9212f52074fc9d72cf242a84063787ab8e21e0950d4d6709886fb62bcb91d5", + "sha256:3ee9d6f0b38efb22ad94c3b68ffebe4c47865cdf4b17f6806d6c674e1feb4246", + "sha256:4233df01a250b3984465faed12ad472f035b7cd5240ea3f7c76b7a7016084495", + "sha256:4263320ed887ed843f85beba67f8b2d1483b5947f2dc73a8b068924558bfeace", + "sha256:4ab923167cfd945abb9b51a407407cf19f5bee35001221f2911dc85ffd35ff4f", + "sha256:4caafd1a22e5eaa3732acb7672a497123354bef79a9d7ceed43387d25025e935", + "sha256:50fb62f8d8364978478b12d5f03bf028c6bc2af04082479299139dc26edf4c64", + "sha256:55ff4151cfd4bc635e51cfb1c59ac9f7196b256b12e3a57deb9e5742e65941ad", + "sha256:5b98b6c953e5c2bda51ab4d5b4f172617d462eebc7f4bfdc7c7e6b423f6da957", + "sha256:5c9ff044eb07c8468594d12602291c635da292308c8c619244e30698e7fc455a", + "sha256:5e9c206a1abc27e0588cf8b7c8246e51f1a16a103734f7750830a1ccb63f557a", + "sha256:5fb89edee2fa237584e532fbf78f0ddd1e49a47c7c8cfa153ab4849dc72a35e6", + "sha256:633462ef7e61d839171bf206551d5ab42b30b71cac8f10a64a662536e057fdef", + "sha256:66f8d2a17e5838dd6fb9be6baaba8e75ae2f5fa6b6b755d597184bfcd3cb0eba", + "sha256:6959bb9928c5c999aba4a3f5a6799d571ddc2c59ff49917ecf55be2bbb4e3722", + "sha256:698a79d295626ee292d1730bc2ef6e70a3ab135b1d79ada8fde3ed0047b65a10", + "sha256:721f9c4011b443b6e84505fc00cc7aadc9d1743f1c988e4c89353e19c4a968ee", + "sha256:72e680c1518733b73c994361e4b06441b92e973ef7d9449feec72e8ee4f713da", + "sha256:75307599f0d25bf6937248e5ac4e3bde5ea72ae6618623b86146ccc7845ed00b", + "sha256:754fba3084b70162a6b91efceee8a3f06b19e43dac3f71841662053c0584209a", + "sha256:759462b2d0aa5a04be5b3e37fb8183615f47014ae6b116e17036b131985cb731", + "sha256:7938c7b0599a05246d704b3f5e01be91a93b411d0d6cc62275f025293b8a11ce", + "sha256:7b77e07233925bd33fc0022b8537774423e4c6680b6436316c5075e79b6384f4", + "sha256:7e5413d2e2d86025e73f05510ad23dad5950ab8417b7fc6beaad99be8077138b", + "sha256:7f3240dcfa14d198dba24b8b9cb3b108c06b68d45b7babd9eefc1038fdf7e707", + "sha256:7f9682a8f71acdf59fd554b82b1c12f517118ee72c0f3944eda461606dfe7eb9", + "sha256:8d67beb6002441faef8251c45e24994de32c4c8686f7356a1f601ad7c466f7c3", + "sha256:9441af1d25aed96901f97ad83d5c3e35e6cd21a25ca5e4916c82d7dd0490a4fa", + "sha256:98b257ae1e83f81fb947a363a274c4eb66640212516becaff7bef09a5dceacaa", + "sha256:9e9f3a3ac919406bc0414bbbd76c6af99253c507150191ea79fab42fdb35982a", + "sha256:a1c66e71ecfd2a4acf0e4bd75e7a3605afa8f9b28a3b497e4ba962719df2be57", + "sha256:a1e17d8dc8e57d8e0fd21f8f0f0a5211b3fa258b2e444c2053471ef93fe25a00", + "sha256:a20cb698c4a59c534c6701b1c24a968ff2768b18ea2991f886bd8985ce17a89f", + "sha256:a970bfaf130c29a679b1d0a6e0f867483cea455ab1535fb427566a475078f27f", + "sha256:a98f510d86f689fcb486dc59e6e363af04151e5260ad1bdddb5625c10f1e95f8", + "sha256:a9d3b728f5a5873d84cba997b9d617c6090ca5721caaa691f3b1a78c60adc057", + "sha256:ad76f44f70aac3a54ceb1813ca630c53415da3a24fd93c570b2dfb4856591017", + "sha256:ae28144c1daa61366205d32abd8c90372790ff79fc60c1a8ad7fd3c8553a600e", + "sha256:b03a8d50b137ee758e4c73638b10747b7c39988eb8e6cd11abb7084266455165", + "sha256:b5a96fcac2f18e5a0a23a75cd27ce2656c66c11c127b0318e508aab436b77428", + "sha256:b5ef909a37e9738d146519657a1aab4584018746a18f71c692f2f22168ece40c", + "sha256:b79f5ced71efd70414a9a80bbbfaa7160da307723166f09b69773153bf17c590", + "sha256:b91cceb5add79ee563bd1f70b30896bd63bc5f78a11c1f00a1e931729ca4f1f4", + "sha256:b92f5654157de1379c509b15acec9d12ecf6e3bc1996571b6cb82a4302060447", + "sha256:c04ca91dda8a61584165825907f5c967ca09e9c65fe8966ee753a3f2b019fe1e", + "sha256:c1f8afa346ccd59e4e5630d5abb67aba6a9812fddf764fd7eb11f382a345f8cc", + "sha256:c5334a71f7dc1160382d45997e29f2637c02f8a26af41073189d79b95d3321f1", + "sha256:c617d7453a80e29d9973b926983b1e700a9377dbe021faa36041c78537d7b08c", + "sha256:c632419c3870507ca20a37c8f8f5352317aca097639e524ad129f58c125c61c6", + "sha256:c6760211eee3a76316cf328f5a8bd695b47b1626d21c8a27fb3b2473a884d597", + "sha256:c698d123ce5d8f2d0cd17f73336615f6a2e3bdcedac07a1291bb4d8e7d82a05a", + "sha256:c76b32eb2ab650a29e423525e84eb197c45504b1c1e6e17b6cc91fcfeb1a4b1d", + "sha256:c8f7e90b948dc9dcfff8003f1ea3af08b29c062f681c05fd798e36daa3f7e3e8", + "sha256:c9e799dac1ffbe7b10c1fd42fe4cd51371a549c6e108249bde9cd1200e8f59b4", + "sha256:cafa48f2133d4daa028473ede7d81cd1b9f9e6925e9e4003ebdf77010ee02f35", + "sha256:ce473a2351c018b06dd8d30d5da8ab5a0831056cc53b2006e2a8028172c37ce5", + "sha256:d31ed4987d72aabdf521eddfb6a72988703c091cfc0064330b9e5f8d6a042ff5", + "sha256:d550d7e9e7d8676b183b37d65b5cd8de13676a738973d330b59dc8312df9c5dc", + "sha256:d6adb81564af0cd428910f83fa7da46ce9ad47c56c0b22b50872bc4515d91966", + "sha256:d6f6512a90bd5cd9030a6237f5346f046c6f0e40af98657568fa45695d4de59d", + "sha256:d7031d493c4465dbc8d40bd6cafefef4bd472b17db0ab94c53e7909ee781b9ef", + "sha256:d9f75a06ecc68f159d5d7603b734e1ff6daa9497a929150f794013aa9f6e3f12", + "sha256:db7707dde9143a67b8812c7e66aeb2d843fe33cc8e374170f4d2c50bd8f2472d", + "sha256:e0397dd0b3955c61ef9b22838144aa4bef6f0796ba5cc8edfc64d468b93798b4", + "sha256:e0df046f2266e8586cf09d00588302a32923eb6386ced0ca5c9deade6af9a149", + "sha256:e14f86b871ea74c3fddc9a40e947d6a5d09def5adc2076ee61fb910a9014fb35", + "sha256:e5963ea87f88bddf7edd59644a35a0feecf75f8985430124c253612d4f7d27ae", + "sha256:e768267cbe051dd8d1c5305ba690bb153204a09bf2e3de3ae530de955f5b5580", + "sha256:e9cb79ecedfc156c0692257ac7ed415243b6c35dd969baa461a6888fc79f2f07", + "sha256:ed6f011bedca8585787e5082cce081bac3d30f54520097b2411351b3574e1219", + "sha256:f3429fb8e15b20961efca8c8b21432623d85db2228cc73fe22756c6637aa39e7", + "sha256:f35eff113ad430b5272bbfc18ba111c66ff525828f24898b4e146eb479a2cdda", + "sha256:f3a6cb95074777f1ecda2ca4fa7717caa9ee6e534f42b7575a8f0d4cb0c24013", + "sha256:f7356a6da0562190558c4fcc14f0281db191cdf4cb96e7604c06acfcee96df15", + "sha256:f88626e3f5e57432e6191cd0c5d6d6b319b635e70b40be2ffba713053e5147dd", + "sha256:fad784a31869747df4ac968a351e070c06ca377549e4ace94775aaa3ab33ee06", + "sha256:fc869af5cba24d45fb0399b0cfdbcefcf6910bf4dee5d74036a57cf5264b3ff4", + "sha256:fee513135b5a58f3bb6d89e48326cd5aa308e4bcdf2f7d59f67c861ada482bf8" ], "markers": "python_version >= '3.9'", - "version": "==0.22.3" + "version": "==0.23.1" }, "s3transfer": { "hashes": [ @@ -801,11 +801,11 @@ }, "setuptools": { "hashes": [ - "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6", - "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3" + "sha256:199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6", + "sha256:43b4ee60e10b0d0ee98ad11918e114c70701bc6051662a9a675a0496c1a158f4" ], "markers": "python_version >= '3.9'", - "version": "==75.8.0" + "version": "==76.0.0" }, "six": { "hashes": [ @@ -911,11 +911,11 @@ }, "astroid": { "hashes": [ - "sha256:187ccc0c248bfbba564826c26f070494f7bc964fd286b6d9fff4420e55de828c", - "sha256:a88c7994f914a4ea8572fac479459f4955eeccc877be3f2d959a33273b0cf40b" + "sha256:622cc8e3048684aa42c820d9d218978021c3c3d174fb03a9f0d615921744f550", + "sha256:d05bfd0acba96a7bd43e222828b7d9bc1e138aaeb0649707908d3702a9831248" ], "markers": "python_full_version >= '3.9.0'", - "version": "==3.3.8" + "version": "==3.3.9" }, "asttokens": { "hashes": [ @@ -939,19 +939,19 @@ "cognito-idp" ], "hashes": [ - "sha256:55cee1e9d7b181f07b8ffc7d71eb0fc681b1b2eb1601d19373f33008d4070826", - "sha256:d17acae4b6fc6fd67b0b0c2b9b897a501e2451d883e9e9f4264448a6089541df" + "sha256:7636997894d217cd4ffe62367ad09df10e5f250e6dc5fc2ceb70ff1584be4100", + "sha256:da592a38fb66ddae0cae0a5842ce6ae25b4f206d268247350c15580febf32b26" ], "markers": "python_version >= '3.8'", - "version": "==1.36.22" + "version": "==1.37.10" }, "botocore-stubs": { "hashes": [ - "sha256:20d46e9639edd2eef37197bba0f9dbee77410ac00a9c4de627711c949c543454", - "sha256:4d76940ade5dca987bb66a5d9844a862fd09acfccf3fcb79d761e185e56145e5" + "sha256:a7e9acc0085cb42332f55a5e99b7e06ee7b18b8be6ac9ef7ad8dbac2a5c44145", + "sha256:e6183ca37b7b3b5c36daae38d44040858cf7ce69d02797d4d3d4d800985c10b4" ], "markers": "python_version >= '3.8'", - "version": "==1.36.22" + "version": "==1.37.10" }, "coverage": { "extras": [ @@ -1027,44 +1027,44 @@ }, "debugpy": { "hashes": [ - "sha256:086b32e233e89a2740c1615c2f775c34ae951508b28b308681dbbb87bba97d06", - "sha256:22a11c493c70413a01ed03f01c3c3a2fc4478fc6ee186e340487b2edcd6f4180", - "sha256:274b6a2040349b5c9864e475284bce5bb062e63dce368a394b8cc865ae3b00c6", - "sha256:2ae5df899732a6051b49ea2632a9ea67f929604fd2b036613a9f12bc3163b92d", - "sha256:36f4829839ef0afdfdd208bb54f4c3d0eea86106d719811681a8627ae2e53dd5", - "sha256:39dfbb6fa09f12fae32639e3286112fc35ae976114f1f3d37375f3130a820969", - "sha256:4703575b78dd697b294f8c65588dc86874ed787b7348c65da70cfc885efdf1e1", - "sha256:4ad9a94d8f5c9b954e0e3b137cc64ef3f579d0df3c3698fe9c3734ee397e4abb", - "sha256:557cc55b51ab2f3371e238804ffc8510b6ef087673303890f57a24195d096e61", - "sha256:5cc45235fefac57f52680902b7d197fb2f3650112379a6fa9aa1b1c1d3ed3f02", - "sha256:646530b04f45c830ceae8e491ca1c9320a2d2f0efea3141487c82130aba70dce", - "sha256:696d8ae4dff4cbd06bf6b10d671e088b66669f110c7c4e18a44c43cf75ce966f", - "sha256:7e94b643b19e8feb5215fa508aee531387494bf668b2eca27fa769ea11d9f498", - "sha256:88a77f422f31f170c4b7e9ca58eae2a6c8e04da54121900651dfa8e66c29901a", - "sha256:898fba72b81a654e74412a67c7e0a81e89723cfe2a3ea6fcd3feaa3395138ca9", - "sha256:9649eced17a98ce816756ce50433b2dd85dfa7bc92ceb60579d68c053f98dff9", - "sha256:9af40506a59450f1315168d47a970db1a65aaab5df3833ac389d2899a5d63b3f", - "sha256:a28ed481d530e3138553be60991d2d61103ce6da254e51547b79549675f539b7", - "sha256:a2ba7ffe58efeae5b8fad1165357edfe01464f9aef25e814e891ec690e7dd82a", - "sha256:a4042edef80364239f5b7b5764e55fd3ffd40c32cf6753da9bda4ff0ac466018", - "sha256:b0232cd42506d0c94f9328aaf0d1d0785f90f87ae72d9759df7e5051be039738", - "sha256:b202f591204023b3ce62ff9a47baa555dc00bb092219abf5caf0e3718ac20e7c", - "sha256:b5c6c967d02fee30e157ab5227706f965d5c37679c687b1e7bbc5d9e7128bd41", - "sha256:cbbd4149c4fc5e7d508ece083e78c17442ee13b0e69bfa6bd63003e486770f45", - "sha256:f30b03b0f27608a0b26c75f0bb8a880c752c0e0b01090551b9d87c7d783e2069", - "sha256:fdb3c6d342825ea10b90e43d7f20f01535a72b3a1997850c0c3cefa5c27a4a2c" + "sha256:06859f68e817966723ffe046b896b1bd75c665996a77313370336ee9e1de3e90", + "sha256:2b8de94c5c78aa0d0ed79023eb27c7c56a64c68217d881bee2ffbcb13951d0c1", + "sha256:31abc9618be4edad0b3e3a85277bc9ab51a2d9f708ead0d99ffb5bb750e18503", + "sha256:32b6857f8263a969ce2ca098f228e5cc0604d277447ec05911a8c46cf3e7e307", + "sha256:3872ce5453b17837ef47fb9f3edc25085ff998ce63543f45ba7af41e7f7d370f", + "sha256:3dae443739c6b604802da9f3e09b0f45ddf1cf23c99161f3a1a8039f61a8bb89", + "sha256:46abe0b821cad751fc1fb9f860fb2e68d75e2c5d360986d0136cd1db8cad4428", + "sha256:4caca674206e97c85c034c1efab4483f33971d4e02e73081265ecb612af65377", + "sha256:5268ae7fdca75f526d04465931cb0bd24577477ff50e8bb03dab90983f4ebd02", + "sha256:62f9b4a861c256f37e163ada8cf5a81f4c8d5148fc17ee31fb46813bd658cdcc", + "sha256:63ca7670563c320503fea26ac688988d9d6b9c6a12abc8a8cf2e7dd8e5f6b6ea", + "sha256:6fab771639332bd8ceb769aacf454a30d14d7a964f2012bf9c4e04c60f16e85b", + "sha256:79ce4ed40966c4c1631d0131606b055a5a2f8e430e3f7bf8fd3744b09943e8e8", + "sha256:7d9a05efc6973b5aaf076d779cf3a6bbb1199e059a17738a2aa9d27a53bcc888", + "sha256:837e7bef95bdefba426ae38b9a94821ebdc5bea55627879cd48165c90b9e50ce", + "sha256:887d54276cefbe7290a754424b077e41efa405a3e07122d8897de54709dbe522", + "sha256:924464d87e7d905eb0d79fb70846558910e906d9ee309b60c4fe597a2e802590", + "sha256:a0bd87557f97bced5513a74088af0b84982b6ccb2e254b9312e29e8a5c4270eb", + "sha256:acf39a6e98630959763f9669feddee540745dfc45ad28dbc9bd1f9cd60639391", + "sha256:cb56c2db69fb8df3168bc857d7b7d2494fed295dfdbde9a45f27b4b152f37520", + "sha256:d4ba115cdd0e3a70942bd562adba9ec8c651fe69ddde2298a1be296fc331906f", + "sha256:dc7b77f5d32674686a5f06955e4b18c0e41fb5a605f5b33cf225790f114cfeec", + "sha256:ea869fe405880327497e6945c09365922c79d2a1eed4c3ae04d77ac7ae34b2b5", + "sha256:ed93c3155fc1f888ab2b43626182174e457fc31b7781cd1845629303790b8ad1", + "sha256:eee02b2ed52a563126c97bf04194af48f2fe1f68bb522a312b05935798e922ff", + "sha256:f14d2c4efa1809da125ca62df41050d9c7cd9cb9e380a2685d1e453c4d450ccb" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==1.8.12" + "version": "==1.8.13" }, "decorator": { "hashes": [ - "sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330", - "sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186" + "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", + "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a" ], - "markers": "python_version >= '3.5'", - "version": "==5.1.1" + "markers": "python_version >= '3.8'", + "version": "==5.2.1" }, "dill": { "hashes": [ @@ -1077,12 +1077,12 @@ }, "django": { "hashes": [ - "sha256:05097ea026cceb2db4db0655ecf77cc96b0753ac6a367280e458e603f6556f53", - "sha256:3566604af111f586a1c9d49cb14ba6c607a0ccbbf87f57d98872cd8aae7d48ad" + "sha256:b983238dfa2eb2e6b27ebb815e14f0741cf186606eb7bcd857e740174017c50e", + "sha256:f9d4b7b87a9dae248d5f20cec940cf7290e07d508d6d8432e3c2cabf09b3b0ff" ], "index": "pypi", "markers": "python_version >= '3.10'", - "version": "==5.0.12" + "version": "==5.0.13" }, "django-debug-toolbar": { "hashes": [ @@ -1146,12 +1146,12 @@ }, "faker": { "hashes": [ - "sha256:7cb2bbd4c8f040e4a340ae4019e9a48b6cf1db6a71bda4e5a61d8d13b7bef28d", - "sha256:ad1f1be7fd692ec0256517404a9d7f007ab36ac5d4674082fa72404049725eaa" + "sha256:2598f78b76710a4ed05e197dda5235be409b4c291ba5c9c7514989cfbc7a5144", + "sha256:d2e4e2a30d459a8ec0ae52a552aa51c48973cb32cf51107dee90f58a8322a880" ], "index": "pypi", "markers": "python_version >= '3.9'", - "version": "==36.1.1" + "version": "==37.0.0" }, "iniconfig": { "hashes": [ @@ -1172,20 +1172,28 @@ }, "ipython": { "hashes": [ - "sha256:be2c91895b0b9ea7ba49d33b23e2040c352b33eb6a519cca7ce6e0c743444251", - "sha256:cae85b0c61eff1fc48b0a8002de5958b6528fa9c8defb1894da63f42613708aa" + "sha256:143ef3ea6fb1e1bffb4c74b114051de653ffb7737a3f7ab1670e657ca6ae8c44", + "sha256:ec7b479e3e5656bf4f58c652c120494df1820f4f28f522fb7ca09e213c2aab52" ], - "markers": "python_version >= '3.10'", - "version": "==8.32.0" + "markers": "python_version >= '3.11'", + "version": "==9.0.2" + }, + "ipython-pygments-lexers": { + "hashes": [ + "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", + "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c" + ], + "markers": "python_version >= '3.8'", + "version": "==1.1.1" }, "isort": { "hashes": [ - "sha256:567954102bb47bb12e0fae62606570faacddd441e45683968c8d1734fb1af892", - "sha256:75d9d8a1438a9432a7d7b54f2d3b45cad9a4a0fdba43617d9873379704a8bdf1" + "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", + "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615" ], "index": "pypi", "markers": "python_full_version >= '3.9.0'", - "version": "==6.0.0" + "version": "==6.0.1" }, "jedi": { "hashes": [ @@ -1268,11 +1276,11 @@ }, "mypy-boto3-cognito-idp": { "hashes": [ - "sha256:304936e0f01e8af2a604099a80126f98e12fa010d48828e537b6cbaa31f762a7", - "sha256:70f5a2c00468fcdd7b4cd2fad5b5f9f034fa5d9f1d16369d45c44b1d328068ba" + "sha256:140305ec710cf92b47eef9213e8988c61d8645222137141a099c74a3afc4a187", + "sha256:24ab9229e8e55562f6e6dcef3db724b4db82b0eca534c79618ec27486806ef0b" ], "markers": "python_version >= '3.8'", - "version": "==1.36.3" + "version": "==1.37.5" }, "mypy-extensions": { "hashes": [ @@ -1362,12 +1370,12 @@ }, "pylint": { "hashes": [ - "sha256:289e6a1eb27b453b08436478391a48cd53bb0efb824873f949e709350f3de018", - "sha256:74ae7a38b177e69a9b525d0794bd8183820bfa7eb68cc1bee6e8ed22a42be4ce" + "sha256:38d0f784644ed493d91f76b5333a0e370a1c1bc97c22068a77523b4bf1e82c31", + "sha256:7cb170929a371238530b2eeea09f5f28236d106b70308c3d46a9c0cf11634633" ], "index": "pypi", "markers": "python_full_version >= '3.9.0'", - "version": "==3.3.4" + "version": "==3.3.5" }, "pylint-django": { "hashes": [ @@ -1388,12 +1396,12 @@ }, "pytest": { "hashes": [ - "sha256:50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6", - "sha256:965370d062bce11e73868e0335abac31b4d3de0e82f4007408d242b4f8610761" + "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", + "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845" ], "index": "pypi", "markers": "python_version >= '3.8'", - "version": "==8.3.4" + "version": "==8.3.5" }, "pytest-cov": { "hashes": [ @@ -1492,11 +1500,11 @@ }, "setuptools": { "hashes": [ - "sha256:c5afc8f407c626b8313a86e10311dd3f661c6cd9c09d4bf8c15c0e11f9f2b0e6", - "sha256:e3982f444617239225d675215d51f6ba05f845d4eec313da4418fdbb56fb27e3" + "sha256:199466a166ff664970d0ee145839f5582cb9bca7a0a3a2e795b6a9cb2308e9c6", + "sha256:43b4ee60e10b0d0ee98ad11918e114c70701bc6051662a9a675a0496c1a158f4" ], "markers": "python_version >= '3.9'", - "version": "==75.8.0" + "version": "==76.0.0" }, "sqlparse": { "hashes": [ @@ -1515,11 +1523,11 @@ }, "stevedore": { "hashes": [ - "sha256:79e92235ecb828fe952b6b8b0c6c87863248631922c8e8e0fa5b17b232c4514d", - "sha256:b0be3c4748b3ea7b854b265dcb4caa891015e442416422be16f8b31756107857" + "sha256:3135b5ae50fe12816ef291baff420acb727fcd356106e3e9cbfa9e5985cd6f4b", + "sha256:d10a31c7b86cba16c1f6e8d15416955fc797052351a56af15e608ad20811fcfe" ], "markers": "python_version >= '3.9'", - "version": "==5.4.0" + "version": "==5.4.1" }, "tomlkit": { "hashes": [ @@ -1539,20 +1547,20 @@ }, "types-awscrt": { "hashes": [ - "sha256:7391bf502f6093221e68da8fb6a2af7ec67a98d376c58d5b76cc3938f449d121", - "sha256:965659260599b421564204b895467684104a2c0311bbacfd3c2423b8b0d3f3e9" + "sha256:f3f2578ff74a254a79882b95961fb493ba217cebc350b3eb239d1cd948d4d7fa", + "sha256:fc6eae56f8dc5a3f8cc93cc2c7c332fa82909f8284fbe25e014c575757af397d" ], "markers": "python_version >= '3.8'", - "version": "==0.23.10" + "version": "==0.24.1" }, "types-gevent": { "hashes": [ - "sha256:3a4666759247fc0a56f9e13dc4149b2500e9f71fd3beb22cb878ab8187dbda9f", - "sha256:b002c0e5ffe65de21bb0a7d13ffdf4a3405cfdbdd87bc126dacb0fddc9d9322d" + "sha256:63eab6b2b823ccbb5ffc865c4fc97f45b1d0ab46af7b559eefbaa68b239b4bc3", + "sha256:dd19d524f1ebd1c8bb2136abd622d7200ca73bd14f6e8d6a56ab4051e5f8778f" ], "index": "pypi", - "markers": "python_version >= '3.8'", - "version": "==24.11.0.20241230" + "markers": "python_version >= '3.9'", + "version": "==24.11.0.20250305" }, "types-greenlet": { "hashes": [ @@ -1589,11 +1597,11 @@ }, "types-s3transfer": { "hashes": [ - "sha256:09c31cff8c79a433fcf703b840b66d1f694a6c70c410ef52015dd4fe07ee0ae2", - "sha256:3ccb8b90b14434af2fb0d6c08500596d93f3a83fb804a2bb843d9bf4f7c2ca60" + "sha256:05fde593c84270f19fd053f0b1e08f5a057d7c5f036b9884e68fb8cd3041ac30", + "sha256:2a76d92c07d4a3cb469e5343b2e7560e0b8078b2e03696a65407b8c44c861b61" ], "markers": "python_version >= '3.8'", - "version": "==0.11.2" + "version": "==0.11.4" }, "typing-extensions": { "hashes": [ From fc243dc17100d77bf8a2bab7e5d1c5a358d4dd07 Mon Sep 17 00:00:00 2001 From: Marc Sommerhalder Date: Wed, 5 Mar 2025 07:55:57 +0100 Subject: [PATCH 2/3] PB-1489: Test some more bod_sync edge cases --- app/bod/management/commands/bod_sync.py | 23 ++------ app/tests/bod/test_bod_sync_command.py | 74 +++++++++++++++++-------- 2 files changed, 57 insertions(+), 40 deletions(-) diff --git a/app/bod/management/commands/bod_sync.py b/app/bod/management/commands/bod_sync.py index f308a1a..b5b1169 100644 --- a/app/bod/management/commands/bod_sync.py +++ b/app/bod/management/commands/bod_sync.py @@ -79,9 +79,7 @@ def import_providers(self) -> None: processed = set() for organization in BodContactOrganisation.objects.all(): - if organization.attribution is not None and len( - organization.attribution.split('.') - ) != 2: + if not organization.attribution or len(organization.attribution.split('.')) != 2: # Skip entries that are not a provider. # BodContactOrganisation (table 'contactorganisation') contains providers and # attributions. Providers are of the format "ch." and only include a @@ -99,7 +97,7 @@ def import_providers(self) -> None: is_new_model = True provider = Provider.objects.create( _legacy_id=legacy_id, - provider_id=organization.attribution, # type:ignore[misc] + provider_id=organization.attribution, acronym_de="undefined", acronym_fr="undefined", acronym_en="undefined", @@ -171,8 +169,8 @@ def import_attribution(self) -> None: processed.add(legacy_id) # Get related provider - provider: Provider | None - if organization.attribution is not None: + provider = None + if organization.attribution: provider_of_attribution = ".".join(organization.attribution.split(".", 2)[:2]) provider = Provider.objects.filter(provider_id=provider_of_attribution).first() if not provider: @@ -273,24 +271,15 @@ def import_datasets(self) -> None: ) continue - # Get related provider - provider = Provider.objects.filter(id=attribution.provider_id).first() - if not provider: - # Skip as no matching provider - self.print( - f"skipping dataset '{bod_dataset.id_dataset}' as no matching provider was found" - ) - continue - # Get or create dataset is_new_model = False dataset = Dataset.objects.filter( - provider=provider, attribution=attribution, _legacy_id=legacy_id + provider=attribution.provider, attribution=attribution, _legacy_id=legacy_id ).first() if not dataset: is_new_model = True dataset = Dataset.objects.create( - provider=provider, + provider=attribution.provider, attribution=attribution, _legacy_id=legacy_id, dataset_id='undefined' diff --git a/app/tests/bod/test_bod_sync_command.py b/app/tests/bod/test_bod_sync_command.py index 73e32ba..c301071 100644 --- a/app/tests/bod/test_bod_sync_command.py +++ b/app/tests/bod/test_bod_sync_command.py @@ -131,17 +131,22 @@ def test_command_imports_providers(bod_dataset): assert provider.acronym_rm == "UFAM" -def test_command_imports_attributions(bod_contact_organisation, bod_dataset): - out = StringIO() - call_command( - "bod_sync", providers=False, attributions=True, datasets=False, verbosity=2, stdout=out - ) - assert "skipping attribution 'ch.bafu' as no matching provider was found" in out.getvalue() - assert 'nothing to be done, already in sync' in out.getvalue() - assert Provider.objects.count() == 0 - assert Attribution.objects.count() == 0 - assert Dataset.objects.count() == 0 +def test_command_skips_invalid_providers(bod_contact_organisation, bod_dataset): + for attribution in ("somethingelse", "", None): + bod_contact_organisation.attribution = attribution + bod_contact_organisation.save() + out = StringIO() + call_command( + "bod_sync", providers=True, attributions=False, datasets=False, verbosity=2, stdout=out + ) + assert "nothing to be done" in out.getvalue() + assert Provider.objects.count() == 0 + assert Attribution.objects.count() == 0 + assert Dataset.objects.count() == 0 + + +def test_command_imports_attributions(bod_contact_organisation, bod_dataset): provider = Provider.objects.create( provider_id="ch.bafu", name_de="XXX", @@ -152,6 +157,8 @@ def test_command_imports_attributions(bod_contact_organisation, bod_dataset): acronym_en="XXX", _legacy_id=bod_contact_organisation.pk_contactorganisation_id ) + + out = StringIO() call_command( "bod_sync", providers=False, attributions=True, datasets=False, verbosity=2, stdout=out ) @@ -175,20 +182,24 @@ def test_command_imports_attributions(bod_contact_organisation, bod_dataset): assert attribution.description_rm == "UFAM" -def test_command_imports_datasets(bod_contact_organisation, bod_dataset): - out = StringIO() - call_command( - "bod_sync", providers=False, attributions=False, datasets=True, verbosity=2, stdout=out - ) - assert ( - "skipping dataset 'ch.bafu.auen-vegetationskarten' " + - "as no matching attribution was found" - ) in out.getvalue() - assert 'nothing to be done, already in sync' in out.getvalue() - assert Provider.objects.count() == 0 - assert Attribution.objects.count() == 0 - assert Dataset.objects.count() == 0 +def test_command_skips_invalid_attributions(bod_contact_organisation, bod_dataset): + for attribution in (bod_contact_organisation.attribution, "", None): + bod_contact_organisation.attribution = attribution + bod_contact_organisation.save() + + out = StringIO() + call_command( + "bod_sync", providers=False, attributions=True, datasets=False, verbosity=2, stdout=out + ) + assert (f"skipping attribution '{attribution}' as no matching provider was found" + ) in out.getvalue() + assert 'nothing to be done, already in sync' in out.getvalue() + assert Provider.objects.count() == 0 + assert Attribution.objects.count() == 0 + assert Dataset.objects.count() == 0 + +def test_command_imports_datasets(bod_contact_organisation, bod_dataset): provider = Provider.objects.create( provider_id="ch.bafu", name_de="XXX", @@ -210,6 +221,8 @@ def test_command_imports_datasets(bod_contact_organisation, bod_dataset): provider=provider, _legacy_id=bod_contact_organisation.pk_contactorganisation_id ) + + out = StringIO() call_command( "bod_sync", providers=False, attributions=False, datasets=True, verbosity=2, stdout=out ) @@ -224,6 +237,21 @@ def test_command_imports_datasets(bod_contact_organisation, bod_dataset): assert dataset.dataset_id == "ch.bafu.auen-vegetationskarten" +def test_command_skips_invalid_datasets(bod_contact_organisation, bod_dataset): + out = StringIO() + call_command( + "bod_sync", providers=False, attributions=False, datasets=True, verbosity=2, stdout=out + ) + assert ( + "skipping dataset 'ch.bafu.auen-vegetationskarten' " + + "as no matching attribution was found" + ) in out.getvalue() + assert 'nothing to be done, already in sync' in out.getvalue() + assert Provider.objects.count() == 0 + assert Attribution.objects.count() == 0 + assert Dataset.objects.count() == 0 + + def test_command_updates(bod_contact_organisation, bod_dataset): # Add objects that will be updated provider = Provider.objects.create( From 265ff4588a01ca05d4b58ae968106a1d42157127 Mon Sep 17 00:00:00 2001 From: Marc Sommerhalder Date: Tue, 11 Mar 2025 13:12:40 +0100 Subject: [PATCH 3/3] PB-1489: Skip non-prod datasets in bod_sync --- app/bod/management/commands/bod_sync.py | 2 +- app/bod/migrations/0001_initial.py | 3 ++- app/bod/models.py | 1 + app/tests/bod/test_bod_sync_command.py | 18 ++++++++++++++++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/app/bod/management/commands/bod_sync.py b/app/bod/management/commands/bod_sync.py index b5b1169..19443fd 100644 --- a/app/bod/management/commands/bod_sync.py +++ b/app/bod/management/commands/bod_sync.py @@ -254,7 +254,7 @@ def import_datasets(self) -> None: """ processed = set() - for bod_dataset in BodDataset.objects.all(): + for bod_dataset in BodDataset.objects.filter(staging='prod').all(): # Keep track of processed BOD datasets for orphan removal legacy_id = bod_dataset.id processed.add(legacy_id) diff --git a/app/bod/migrations/0001_initial.py b/app/bod/migrations/0001_initial.py index f68447b..dbf81b9 100644 --- a/app/bod/migrations/0001_initial.py +++ b/app/bod/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.0.9 on 2024-10-03 13:55 +# Generated by Django 5.0.12 on 2025-03-11 11:57 from django.conf import settings from django.db import migrations @@ -39,6 +39,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(primary_key=True, serialize=False, unique=True)), ('id_dataset', models.TextField()), ('fk_contactorganisation_id', models.IntegerField(blank=True, null=True)), + ('staging', models.TextField(blank=True, null=True)), ], options={ 'db_table': 'dataset', diff --git a/app/bod/models.py b/app/bod/models.py index cb63778..905873f 100644 --- a/app/bod/models.py +++ b/app/bod/models.py @@ -28,6 +28,7 @@ class BodDataset(models.Model): id = models.AutoField(unique=True, primary_key=True) id_dataset = models.TextField() fk_contactorganisation_id = models.IntegerField(blank=True, null=True) + staging = models.TextField(blank=True, null=True) class Meta: managed = settings.TESTING diff --git a/app/tests/bod/test_bod_sync_command.py b/app/tests/bod/test_bod_sync_command.py index c301071..527ff6d 100644 --- a/app/tests/bod/test_bod_sync_command.py +++ b/app/tests/bod/test_bod_sync_command.py @@ -41,7 +41,8 @@ def fixture_bod_dataset(bod_contact_organisation): yield BodDataset.objects.create( id=170, id_dataset="ch.bafu.auen-vegetationskarten", - fk_contactorganisation_id=bod_contact_organisation.pk_contactorganisation_id + fk_contactorganisation_id=bod_contact_organisation.pk_contactorganisation_id, + staging="prod" ) @@ -237,7 +238,7 @@ def test_command_imports_datasets(bod_contact_organisation, bod_dataset): assert dataset.dataset_id == "ch.bafu.auen-vegetationskarten" -def test_command_skips_invalid_datasets(bod_contact_organisation, bod_dataset): +def test_command_skips_invalid_datasets(bod_dataset): out = StringIO() call_command( "bod_sync", providers=False, attributions=False, datasets=True, verbosity=2, stdout=out @@ -252,6 +253,19 @@ def test_command_skips_invalid_datasets(bod_contact_organisation, bod_dataset): assert Dataset.objects.count() == 0 +def test_command_skips_non_prod_datasets(bod_dataset): + bod_dataset.staging = 'test' + + out = StringIO() + call_command( + "bod_sync", providers=False, attributions=False, datasets=True, verbosity=2, stdout=out + ) + assert 'nothing to be done, already in sync' in out.getvalue() + assert Provider.objects.count() == 0 + assert Attribution.objects.count() == 0 + assert Dataset.objects.count() == 0 + + def test_command_updates(bod_contact_organisation, bod_dataset): # Add objects that will be updated provider = Provider.objects.create(