udata 10.8.1.dev36652__py2.py3-none-any.whl → 10.8.2__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.

Potentially problematic release.


This version of udata might be problematic. Click here for more details.

Files changed (79) hide show
  1. udata/__init__.py +1 -1
  2. udata/app.py +0 -2
  3. udata/commands/db.py +22 -9
  4. udata/core/dataset/models.py +5 -3
  5. udata/core/discussions/api.py +2 -2
  6. udata/core/jobs/api.py +3 -3
  7. udata/core/metrics/helpers.py +10 -0
  8. udata/core/metrics/tasks.py +144 -1
  9. udata/core/organization/api.py +2 -2
  10. udata/core/post/api.py +1 -1
  11. udata/core/user/api.py +1 -1
  12. udata/features/identicon/api.py +1 -1
  13. udata/harvest/actions.py +24 -28
  14. udata/harvest/api.py +28 -36
  15. udata/harvest/backends/ckan/__init__.py +3 -0
  16. udata/harvest/backends/ckan/harvesters.py +274 -0
  17. udata/harvest/backends/ckan/schemas/__init__.py +0 -0
  18. udata/harvest/backends/ckan/schemas/ckan.py +86 -0
  19. udata/harvest/backends/ckan/schemas/dkan.py +98 -0
  20. udata/harvest/commands.py +7 -7
  21. udata/harvest/tasks.py +1 -1
  22. udata/harvest/tests/ckan/conftest.py +67 -0
  23. udata/harvest/tests/ckan/data/dkan-french-w-license.json +226 -0
  24. udata/harvest/tests/ckan/test_ckan_backend.py +697 -0
  25. udata/harvest/tests/ckan/test_ckan_backend_errors.py +140 -0
  26. udata/harvest/tests/ckan/test_ckan_backend_filters.py +130 -0
  27. udata/harvest/tests/ckan/test_dkan_backend.py +68 -0
  28. udata/harvest/tests/test_actions.py +27 -32
  29. udata/harvest/tests/test_api.py +23 -18
  30. udata/harvest/tests/test_dcat_backend.py +29 -29
  31. udata/migrations/2025-07-30-purge-old-harvest-dynamic-fields.py +29 -0
  32. udata/mongo/slug_fields.py +25 -8
  33. udata/routing.py +6 -0
  34. udata/static/chunks/{11.b6f741fcc366abfad9c4.js → 11.51d706fb9521c16976bc.js} +3 -3
  35. udata/static/chunks/{11.b6f741fcc366abfad9c4.js.map → 11.51d706fb9521c16976bc.js.map} +1 -1
  36. udata/static/chunks/{13.2d06442dd9a05d9777b5.js → 13.39e106d56f794ebd06a0.js} +2 -2
  37. udata/static/chunks/{13.2d06442dd9a05d9777b5.js.map → 13.39e106d56f794ebd06a0.js.map} +1 -1
  38. udata/static/chunks/{17.e8e4caaad5cb0cc0bacc.js → 17.70cbb4a91b002338007e.js} +2 -2
  39. udata/static/chunks/{17.e8e4caaad5cb0cc0bacc.js.map → 17.70cbb4a91b002338007e.js.map} +1 -1
  40. udata/static/chunks/{19.f03a102365af4315f9db.js → 19.a348a5fff8fe2801e52a.js} +3 -3
  41. udata/static/chunks/{19.f03a102365af4315f9db.js.map → 19.a348a5fff8fe2801e52a.js.map} +1 -1
  42. udata/static/chunks/{5.0fa1408dae4e76b87b2e.js → 5.343ca020a2d38cec1a14.js} +3 -3
  43. udata/static/chunks/{5.0fa1408dae4e76b87b2e.js.map → 5.343ca020a2d38cec1a14.js.map} +1 -1
  44. udata/static/chunks/{6.d663709d877baa44a71e.js → 6.a3b07de9dd2ca2d24e85.js} +3 -3
  45. udata/static/chunks/{6.d663709d877baa44a71e.js.map → 6.a3b07de9dd2ca2d24e85.js.map} +1 -1
  46. udata/static/chunks/{8.778091d55cd8ea39af6b.js → 8.462bb3029de008497675.js} +2 -2
  47. udata/static/chunks/{8.778091d55cd8ea39af6b.js.map → 8.462bb3029de008497675.js.map} +1 -1
  48. udata/static/common.js +1 -1
  49. udata/static/common.js.map +1 -1
  50. udata/tests/api/test_datasets_api.py +0 -46
  51. udata/tests/api/test_organizations_api.py +5 -0
  52. udata/tests/cli/test_db_cli.py +12 -0
  53. udata/tests/dataset/test_dataset_model.py +0 -16
  54. udata/tests/metrics/__init__.py +0 -0
  55. udata/tests/metrics/conftest.py +15 -0
  56. udata/tests/metrics/helpers.py +58 -0
  57. udata/tests/metrics/test_metrics.py +67 -0
  58. udata/tests/metrics/test_tasks.py +171 -0
  59. udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
  60. udata/translations/ar/LC_MESSAGES/udata.po +72 -65
  61. udata/translations/de/LC_MESSAGES/udata.mo +0 -0
  62. udata/translations/de/LC_MESSAGES/udata.po +72 -65
  63. udata/translations/es/LC_MESSAGES/udata.mo +0 -0
  64. udata/translations/es/LC_MESSAGES/udata.po +72 -65
  65. udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
  66. udata/translations/fr/LC_MESSAGES/udata.po +72 -65
  67. udata/translations/it/LC_MESSAGES/udata.mo +0 -0
  68. udata/translations/it/LC_MESSAGES/udata.po +72 -65
  69. udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
  70. udata/translations/pt/LC_MESSAGES/udata.po +72 -65
  71. udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
  72. udata/translations/sr/LC_MESSAGES/udata.po +72 -65
  73. udata/translations/udata.pot +74 -70
  74. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/METADATA +16 -2
  75. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/RECORD +79 -62
  76. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/entry_points.txt +2 -0
  77. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/LICENSE +0 -0
  78. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/WHEEL +0 -0
  79. {udata-10.8.1.dev36652.dist-info → udata-10.8.2.dist-info}/top_level.txt +0 -0
@@ -6,10 +6,10 @@
6
6
  #, fuzzy
7
7
  msgid ""
8
8
  msgstr ""
9
- "Project-Id-Version: udata 10.4.3.dev0\n"
9
+ "Project-Id-Version: udata 10.8.2.dev0\n"
10
10
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
11
- "POT-Creation-Date: 2025-06-23 10:12+0200\n"
12
- "PO-Revision-Date: 2025-06-23 10:12+0200\n"
11
+ "POT-Creation-Date: 2025-07-28 16:59+0200\n"
12
+ "PO-Revision-Date: 2025-07-28 16:59+0200\n"
13
13
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
14
14
  "Language: en\n"
15
15
  "Language-Team: Open Data Team <i18n@opendata.team>\n"
@@ -19,74 +19,74 @@ msgstr ""
19
19
  "Content-Transfer-Encoding: 8bit\n"
20
20
  "Generated-By: Babel 2.17.0\n"
21
21
 
22
- #: udata/settings.py:109
22
+ #: udata/settings.py:111
23
23
  msgid "Welcome"
24
24
  msgstr ""
25
25
 
26
- #: udata/settings.py:110
26
+ #: udata/settings.py:112
27
27
  msgid "Please confirm your email"
28
28
  msgstr ""
29
29
 
30
- #: udata/settings.py:111
30
+ #: udata/settings.py:113
31
31
  msgid "Login instructions"
32
32
  msgstr ""
33
33
 
34
- #: udata/settings.py:112
34
+ #: udata/settings.py:114
35
35
  msgid "Your password has been reset"
36
36
  msgstr ""
37
37
 
38
- #: udata/settings.py:113
38
+ #: udata/settings.py:115
39
39
  msgid "Your password has been changed"
40
40
  msgstr ""
41
41
 
42
- #: udata/settings.py:114
42
+ #: udata/settings.py:116
43
43
  msgid "Password reset instructions"
44
44
  msgstr ""
45
45
 
46
- #: udata/settings.py:509
46
+ #: udata/settings.py:513
47
47
  msgid "This dataset has been archived"
48
48
  msgstr ""
49
49
 
50
- #: udata/uris.py:53
50
+ #: udata/uris.py:55
51
51
  #, python-brace-format
52
52
  msgid "Invalid URL \"{url}\": {reason}"
53
53
  msgstr ""
54
54
 
55
- #: udata/tests/api/test_datasets_api.py:1113 udata/tests/test_model.py:403
56
- #: udata/uris.py:55
55
+ #: udata/tests/api/test_datasets_api.py:1129 udata/tests/test_model.py:403
56
+ #: udata/uris.py:57
57
57
  #, python-brace-format
58
58
  msgid "Invalid URL \"{url}\""
59
59
  msgstr ""
60
60
 
61
- #: udata/uris.py:104
61
+ #: udata/uris.py:125
62
62
  #, python-brace-format
63
63
  msgid "Invalid scheme {0}, allowed schemes: {1}"
64
64
  msgstr ""
65
65
 
66
- #: udata/uris.py:107
66
+ #: udata/uris.py:128
67
67
  msgid "Credentials in URL are not allowed"
68
68
  msgstr ""
69
69
 
70
- #: udata/uris.py:111
70
+ #: udata/uris.py:132
71
71
  #, python-brace-format
72
72
  msgid "Invalid TLD {0}"
73
73
  msgstr ""
74
74
 
75
- #: udata/uris.py:120
75
+ #: udata/uris.py:141
76
76
  #, python-brace-format
77
77
  msgid "{0} is a multicast IP"
78
78
  msgstr ""
79
79
 
80
- #: udata/uris.py:122
80
+ #: udata/uris.py:143
81
81
  #, python-brace-format
82
82
  msgid "{0} is a mask IP"
83
83
  msgstr ""
84
84
 
85
- #: udata/uris.py:126
85
+ #: udata/uris.py:147
86
86
  msgid "is a local URL"
87
87
  msgstr ""
88
88
 
89
- #: udata/tests/test_model.py:421 udata/uris.py:133
89
+ #: udata/tests/test_model.py:421 udata/uris.py:154
90
90
  msgid "is a private URL"
91
91
  msgstr ""
92
92
 
@@ -172,28 +172,10 @@ msgstr ""
172
172
  msgid "Password must contain symbols"
173
173
  msgstr ""
174
174
 
175
- #: udata/auth/views.py:51
175
+ #: udata/auth/views.py:49
176
176
  msgid "Confirm change of email instructions"
177
177
  msgstr ""
178
178
 
179
- #: udata/auth/views.py:85
180
- #, python-brace-format
181
- msgid ""
182
- "You did not confirm your change of email within {email_within}. New "
183
- "instructions to confirm your change of email have been sent to {new_email}."
184
- msgstr ""
185
-
186
- #: udata/auth/views.py:98
187
- msgid "Thank you. Your change of email has been confirmed."
188
- msgstr ""
189
-
190
- #: udata/auth/views.py:115
191
- #, python-brace-format
192
- msgid ""
193
- "Thank you. Confirmation instructions for changing your email have been sent "
194
- "to {new_email}."
195
- msgstr ""
196
-
197
179
  #: udata/commands/init.py:32
198
180
  msgid "Do you want to create a superadmin user?"
199
181
  msgstr ""
@@ -236,6 +218,10 @@ msgstr ""
236
218
  msgid "Kind of badge (certified, etc)"
237
219
  msgstr ""
238
220
 
221
+ #: udata/core/contact_point/api.py:62
222
+ msgid "An existing contact point already exists with these informations."
223
+ msgstr ""
224
+
239
225
  #: udata/core/contact_point/forms.py:12 udata/core/jobs/forms.py:27
240
226
  #: udata/core/organization/forms.py:46 udata/core/post/forms.py:15
241
227
  #: udata/core/topic/forms.py:16 udata/harvest/forms.py:78
@@ -278,7 +264,7 @@ msgstr ""
278
264
  msgid "Publisher"
279
265
  msgstr ""
280
266
 
281
- #: udata/core/contact_point/models.py:26 udata/tests/api/test_contact_points.py:59
267
+ #: udata/core/contact_point/models.py:26 udata/tests/api/test_contact_points.py:142
282
268
  msgid "At least an email or a contact form is required for a contact point"
283
269
  msgstr ""
284
270
 
@@ -298,20 +284,20 @@ msgstr ""
298
284
  msgid "Latest APIs"
299
285
  msgstr ""
300
286
 
301
- #: udata/core/dataservices/models.py:128
287
+ #: udata/core/dataservices/models.py:129
302
288
  msgid "You can only set one condition for a given access audience role"
303
289
  msgstr ""
304
290
 
305
- #: udata/core/dataservices/models.py:158
291
+ #: udata/core/dataservices/models.py:159
306
292
  msgid "dataservice"
307
293
  msgstr ""
308
294
 
309
- #: udata/core/dataservices/models.py:240 udata/core/dataset/models.py:585
295
+ #: udata/core/dataservices/models.py:241 udata/core/dataset/models.py:589
310
296
  #: udata/mongo/datetime_fields.py:60
311
297
  msgid "Creation date"
312
298
  msgstr ""
313
299
 
314
- #: udata/core/dataservices/models.py:246 udata/core/dataset/models.py:590
300
+ #: udata/core/dataservices/models.py:247 udata/core/dataset/models.py:594
315
301
  #: udata/mongo/datetime_fields.py:66
316
302
  msgid "Last modification date"
317
303
  msgstr ""
@@ -550,7 +536,7 @@ msgstr ""
550
536
  msgid "Related dataset"
551
537
  msgstr ""
552
538
 
553
- #: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:1025
539
+ #: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:1041
554
540
  msgid "Wrong contact point id or contact point ownership mismatch"
555
541
  msgstr ""
556
542
 
@@ -624,34 +610,39 @@ msgstr ""
624
610
  msgid "A schema must contains a name or an URL when a version is provided."
625
611
  msgstr ""
626
612
 
627
- #: udata/core/dataset/models.py:171 udata/tests/api/test_datasets_api.py:1121
628
- #: udata/tests/api/test_datasets_api.py:1132
613
+ #: udata/core/dataset/models.py:171 udata/tests/api/test_datasets_api.py:1137
614
+ #: udata/tests/api/test_datasets_api.py:1148
629
615
  #, python-brace-format
630
616
  msgid "Schema name \"{schema}\" is not an allowed value. Allowed values: {values}"
631
617
  msgstr ""
632
618
 
633
- #: udata/core/dataset/models.py:190 udata/tests/api/test_datasets_api.py:1144
619
+ #: udata/core/dataset/models.py:190 udata/tests/api/test_datasets_api.py:1160
634
620
  #, python-brace-format
635
621
  msgid ""
636
622
  "Version \"{version}\" is not an allowed value for the schema \"{name}\". "
637
623
  "Allowed versions: {values}"
638
624
  msgstr ""
639
625
 
640
- #: udata/core/dataset/models.py:469 udata/core/dataset/rdf.py:603
641
- #: udata/tests/dataset/test_dataset_rdf.py:687
642
- #: udata/tests/dataset/test_dataset_rdf.py:700
626
+ #: udata/core/dataset/models.py:467 udata/core/dataset/rdf.py:567
627
+ #: udata/tests/dataset/test_dataset_rdf.py:709
628
+ #: udata/tests/dataset/test_dataset_rdf.py:722
643
629
  msgid "Nameless resource"
644
630
  msgstr ""
645
631
 
646
- #: udata/core/dataset/models.py:564
632
+ #: udata/core/dataset/models.py:568
647
633
  msgid "Future date of update"
648
634
  msgstr ""
649
635
 
650
- #: udata/core/dataset/models.py:640
636
+ #: udata/core/dataset/models.py:600
637
+ msgid "Last update of the dataset resources"
638
+ msgstr ""
639
+
640
+ #: udata/core/dataset/models.py:653
651
641
  msgid "dataset"
652
642
  msgstr ""
653
643
 
654
- #: udata/core/dataset/rdf.py:601 udata/tests/dataset/test_dataset_rdf.py:674
644
+ #: udata/core/dataset/rdf.py:565 udata/tests/dataset/test_dataset_rdf.py:679
645
+ #: udata/tests/dataset/test_dataset_rdf.py:696
655
646
  #, python-brace-format
656
647
  msgid "{format} resource"
657
648
  msgstr ""
@@ -734,17 +725,17 @@ msgid "Refused"
734
725
  msgstr ""
735
726
 
736
727
  #: udata/core/organization/forms.py:25
737
- #: udata/tests/api/test_organizations_api.py:137
728
+ #: udata/tests/api/test_organizations_api.py:159
738
729
  msgid "A siret number is made of 14 digits"
739
730
  msgstr ""
740
731
 
741
732
  #: udata/core/organization/forms.py:36
742
- #: udata/tests/api/test_organizations_api.py:149
733
+ #: udata/tests/api/test_organizations_api.py:171
743
734
  msgid "A siret number is only made of digits"
744
735
  msgstr ""
745
736
 
746
737
  #: udata/core/organization/forms.py:39
747
- #: udata/tests/api/test_organizations_api.py:143
738
+ #: udata/tests/api/test_organizations_api.py:165
748
739
  msgid "Invalid Siret number"
749
740
  msgstr ""
750
741
 
@@ -776,23 +767,23 @@ msgstr ""
776
767
  msgid "Business identification number"
777
768
  msgstr ""
778
769
 
779
- #: udata/core/organization/models.py:37
770
+ #: udata/core/organization/models.py:38
780
771
  msgid "Public Service"
781
772
  msgstr ""
782
773
 
783
- #: udata/core/organization/models.py:38
774
+ #: udata/core/organization/models.py:39
784
775
  msgid "Certified"
785
776
  msgstr ""
786
777
 
787
- #: udata/core/organization/models.py:39
778
+ #: udata/core/organization/models.py:40
788
779
  msgid "Association"
789
780
  msgstr ""
790
781
 
791
- #: udata/core/organization/models.py:40
782
+ #: udata/core/organization/models.py:41
792
783
  msgid "Company"
793
784
  msgstr ""
794
785
 
795
- #: udata/core/organization/models.py:41
786
+ #: udata/core/organization/models.py:42
796
787
  msgid "Local authority"
797
788
  msgstr ""
798
789
 
@@ -882,7 +873,7 @@ msgstr ""
882
873
  msgid "Specify your body type (HTML or markdown)"
883
874
  msgstr ""
884
875
 
885
- #: udata/core/post/models.py:54
876
+ #: udata/core/post/models.py:55
886
877
  msgid "post"
887
878
  msgstr ""
888
879
 
@@ -1010,11 +1001,11 @@ msgstr ""
1010
1001
  msgid "Open data tools"
1011
1002
  msgstr ""
1012
1003
 
1013
- #: udata/core/reuse/models.py:38
1004
+ #: udata/core/reuse/models.py:39
1014
1005
  msgid "This URL is already registered"
1015
1006
  msgstr ""
1016
1007
 
1017
- #: udata/core/reuse/models.py:183
1008
+ #: udata/core/reuse/models.py:185
1018
1009
  msgid "reuse"
1019
1010
  msgstr ""
1020
1011
 
@@ -1179,7 +1170,7 @@ msgstr ""
1179
1170
  msgid "Roles"
1180
1171
  msgstr ""
1181
1172
 
1182
- #: udata/core/user/models.py:304 udata/tests/api/test_me_api.py:297
1173
+ #: udata/core/user/models.py:298 udata/tests/api/test_me_api.py:297
1183
1174
  msgid "Account deletion"
1184
1175
  msgstr ""
1185
1176
 
@@ -1339,6 +1330,22 @@ msgstr ""
1339
1330
  msgid "A prefix used to build the remote URL of the harvested items."
1340
1331
  msgstr ""
1341
1332
 
1333
+ #: udata/harvest/backends/ckan/harvesters.py:35
1334
+ msgid "Organization"
1335
+ msgstr ""
1336
+
1337
+ #: udata/harvest/backends/ckan/harvesters.py:35
1338
+ msgid "A CKAN Organization name"
1339
+ msgstr ""
1340
+
1341
+ #: udata/harvest/backends/ckan/harvesters.py:36
1342
+ msgid "Tag"
1343
+ msgstr ""
1344
+
1345
+ #: udata/harvest/backends/ckan/harvesters.py:36
1346
+ msgid "A CKAN tag name"
1347
+ msgstr ""
1348
+
1342
1349
  #: udata/templates/admin.html:7
1343
1350
  msgid "Admin"
1344
1351
  msgstr ""
@@ -1598,10 +1605,6 @@ msgstr ""
1598
1605
  msgid "See the reuse"
1599
1606
  msgstr ""
1600
1607
 
1601
- #: udata/templates/mail/new_reuse.html:37
1602
- msgid "See on the dataset page"
1603
- msgstr ""
1604
-
1605
1608
  #: udata/templates/mail/test.html:4
1606
1609
  msgid "This is a test mail"
1607
1610
  msgstr ""
@@ -1781,3 +1784,4 @@ msgstr ""
1781
1784
  #: udata/tests/search/test_adapter.py:33
1782
1785
  msgid "Heavily reused"
1783
1786
  msgstr ""
1787
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 10.8.1.dev36652
3
+ Version: 10.8.2
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -68,6 +68,7 @@ Requires-Dist: flask-wtf==1.2.2
68
68
  Requires-Dist: geojson==3.2.0
69
69
  Requires-Dist: geomet==1.1.0
70
70
  Requires-Dist: html2text==2024.2.26
71
+ Requires-Dist: humanfriendly==10.0
71
72
  Requires-Dist: idna==3.10
72
73
  Requires-Dist: importlib-resources==6.5.2
73
74
  Requires-Dist: itsdangerous==2.2.0
@@ -140,8 +141,21 @@ It is collectively taken care of by members of the
140
141
 
141
142
  # Changelog
142
143
 
143
- ## Current (in progress)
144
+ ## 10.8.2 (2025-07-31)
144
145
 
146
+ - Add integrity checks on non existent list field instead of empty [#3242](https://github.com/opendatateam/udata/pull/3242)
147
+ - Migrate udata-metrics [#3386](https://github.com/opendatateam/udata/pull/3386/)
148
+ - Migrate udata-ckan [#3385](https://github.com/opendatateam/udata/pull/3385)
149
+ - Deactivate sitemap extension [#3389](https://github.com/opendatateam/udata/pull/3389)
150
+ - Deactivate cache to check for existing slugs [#3390](https://github.com/opendatateam/udata/pull/3390)
151
+ - Fix not returning 404 for harvest sources [#3382](https://github.com/opendatateam/udata/pull/3382/)
152
+ - Add missing trailing slashes on some endpoints [#3392](https://github.com/opendatateam/udata/pull/3392/)
153
+ - Make organization name filter case insensitive [#3392](https://github.com/opendatateam/udata/pull/3395)
154
+ - Harvest metadata documents are no longer dynamic [#3396](https://github.com/opendatateam/udata/pull/3396)
155
+
156
+ ## 10.8.1 (2025-07-25)
157
+
158
+ - Fix user deletion performances issues [#3388](https://github.com/opendatateam/udata/pull/3388)
145
159
  - Add search to discussions [#3384](https://github.com/opendatateam/udata/pull/3384)
146
160
  - Separate metrics for opened discussions [#3370](https://github.com/opendatateam/udata/pull/3370)
147
161