udata 8.0.2.dev29304__py2.py3-none-any.whl → 9.1.0__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (86) hide show
  1. udata/__init__.py +1 -1
  2. udata/api/__init__.py +2 -0
  3. udata/api/commands.py +0 -2
  4. udata/api_fields.py +41 -3
  5. udata/commands/db.py +88 -48
  6. udata/core/dataservices/factories.py +33 -0
  7. udata/core/dataservices/models.py +42 -4
  8. udata/core/dataservices/rdf.py +106 -0
  9. udata/core/dataset/csv.py +8 -1
  10. udata/core/dataset/models.py +1 -2
  11. udata/core/dataset/rdf.py +37 -128
  12. udata/core/discussions/models.py +20 -0
  13. udata/core/organization/csv.py +5 -3
  14. udata/core/reports/__init__.py +0 -0
  15. udata/core/reports/api.py +44 -0
  16. udata/core/reports/constants.py +30 -0
  17. udata/core/reports/models.py +58 -0
  18. udata/core/reuse/csv.py +3 -0
  19. udata/core/site/api.py +33 -2
  20. udata/core/site/rdf.py +6 -1
  21. udata/core/spam/models.py +6 -0
  22. udata/core/topic/models.py +3 -2
  23. udata/core/topic/parsers.py +3 -2
  24. udata/core/user/apiv2.py +28 -0
  25. udata/db/__init__.py +0 -0
  26. udata/db/tasks.py +6 -0
  27. udata/features/notifications/__init__.py +0 -1
  28. udata/forms/fields.py +2 -2
  29. udata/harvest/api.py +19 -1
  30. udata/harvest/backends/base.py +118 -10
  31. udata/harvest/backends/dcat.py +28 -7
  32. udata/harvest/models.py +6 -0
  33. udata/harvest/tests/dcat/bnodes.xml +13 -2
  34. udata/harvest/tests/test_dcat_backend.py +21 -0
  35. udata/migrations/2024-06-11-fix-reuse-datasets-references.py +35 -0
  36. udata/models/__init__.py +1 -0
  37. udata/rdf.py +113 -2
  38. udata/routing.py +1 -1
  39. udata/settings.py +3 -1
  40. udata/static/admin.js +17 -17
  41. udata/static/admin.js.map +1 -1
  42. udata/static/chunks/{18.ad41fb75ac4226e1f3ce.js → 18.1922fd0b2b7fad122991.js} +3 -3
  43. udata/static/chunks/18.1922fd0b2b7fad122991.js.map +1 -0
  44. udata/static/chunks/{7.11ac4de064ae59691d49.js → 7.e2106342e94ee09393b1.js} +2 -2
  45. udata/static/chunks/7.e2106342e94ee09393b1.js.map +1 -0
  46. udata/static/common.js +1 -1
  47. udata/static/common.js.map +1 -1
  48. udata/storage/s3.py +3 -3
  49. udata/tasks.py +1 -0
  50. udata/tests/api/test_dataservices_api.py +26 -2
  51. udata/tests/api/test_datasets_api.py +1 -1
  52. udata/tests/api/test_reports_api.py +87 -0
  53. udata/tests/apiv2/test_me_api.py +40 -0
  54. udata/tests/dataset/test_dataset_rdf.py +19 -1
  55. udata/tests/frontend/test_auth.py +1 -4
  56. udata/tests/organization/test_csv_adapter.py +0 -1
  57. udata/tests/plugin.py +2 -0
  58. udata/tests/site/test_site_api.py +0 -1
  59. udata/tests/site/test_site_rdf.py +66 -0
  60. udata/tests/test_discussions.py +24 -34
  61. udata/tests/test_model.py +3 -2
  62. udata/tests/test_utils.py +1 -1
  63. udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
  64. udata/translations/ar/LC_MESSAGES/udata.po +128 -64
  65. udata/translations/de/LC_MESSAGES/udata.mo +0 -0
  66. udata/translations/de/LC_MESSAGES/udata.po +128 -64
  67. udata/translations/es/LC_MESSAGES/udata.mo +0 -0
  68. udata/translations/es/LC_MESSAGES/udata.po +128 -64
  69. udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
  70. udata/translations/fr/LC_MESSAGES/udata.po +128 -64
  71. udata/translations/it/LC_MESSAGES/udata.mo +0 -0
  72. udata/translations/it/LC_MESSAGES/udata.po +128 -64
  73. udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
  74. udata/translations/pt/LC_MESSAGES/udata.po +128 -64
  75. udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
  76. udata/translations/sr/LC_MESSAGES/udata.po +128 -64
  77. udata/translations/udata.pot +129 -65
  78. udata/uris.py +14 -13
  79. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/METADATA +26 -7
  80. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/RECORD +84 -72
  81. udata/static/chunks/18.ad41fb75ac4226e1f3ce.js.map +0 -1
  82. udata/static/chunks/7.11ac4de064ae59691d49.js.map +0 -1
  83. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/LICENSE +0 -0
  84. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/WHEEL +0 -0
  85. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/entry_points.txt +0 -0
  86. {udata-8.0.2.dev29304.dist-info → udata-9.1.0.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 7.0.7.dev0\n"
9
+ "Project-Id-Version: udata 9.0.1.dev0\n"
10
10
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
11
- "POT-Creation-Date: 2024-04-15 12:06+0200\n"
12
- "PO-Revision-Date: 2024-04-15 12:06+0200\n"
11
+ "POT-Creation-Date: 2024-07-10 14:52+0200\n"
12
+ "PO-Revision-Date: 2024-07-10 14:52+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"
@@ -43,25 +43,61 @@ msgstr ""
43
43
  msgid "Password reset instructions"
44
44
  msgstr ""
45
45
 
46
- #: udata/settings.py:430
46
+ #: udata/settings.py:435
47
47
  msgid "This dataset has been archived"
48
48
  msgstr ""
49
49
 
50
+ #: udata/uris.py:52
51
+ msgid "Invalid URL \"{url}\": {reason}"
52
+ msgstr ""
53
+
54
+ #: udata/tests/test_model.py:370 udata/uris.py:54
55
+ msgid "Invalid URL \"{url}\""
56
+ msgstr ""
57
+
58
+ #: udata/uris.py:105
59
+ msgid "Invalid scheme {0}, allowed schemes: {1}"
60
+ msgstr ""
61
+
62
+ #: udata/uris.py:108
63
+ msgid "Credentials in URL are not allowed"
64
+ msgstr ""
65
+
66
+ #: udata/uris.py:112
67
+ msgid "Invalid TLD {0}"
68
+ msgstr ""
69
+
70
+ #: udata/uris.py:121
71
+ msgid "{0} is a multicast IP"
72
+ msgstr ""
73
+
74
+ #: udata/uris.py:123
75
+ msgid "{0} is a mask IP"
76
+ msgstr ""
77
+
78
+ #: udata/uris.py:127
79
+ msgid "is a local URL"
80
+ msgstr ""
81
+
82
+ #: udata/uris.py:130
83
+ msgid "is a private URL"
84
+ msgstr ""
85
+
50
86
  #: udata/api/errors.py:4
51
87
  msgid ""
52
88
  "Validation error: your data cannot be updated for now, we have been notified "
53
89
  "of the error and we will fix it as soon as possible."
54
90
  msgstr ""
55
91
 
56
- #: udata/api/oauth2.py:53
92
+ #: udata/api/oauth2.py:54
57
93
  msgid "Bearer Token"
58
94
  msgstr ""
59
95
 
60
- #: udata/api/oauth2.py:57
96
+ #: udata/api/oauth2.py:58
61
97
  msgid "Default scope"
62
98
  msgstr ""
63
99
 
64
- #: udata/api/oauth2.py:58
100
+ #: udata/api/oauth2.py:59
65
101
  msgid "System administrator rights"
66
102
  msgstr ""
67
103
 
@@ -132,17 +168,17 @@ msgstr ""
132
168
  msgid "Confirm change of email instructions"
133
169
  msgstr ""
134
170
 
135
- #: udata/auth/views.py:72
171
+ #: udata/auth/views.py:73
136
172
  msgid ""
137
173
  "You did not confirm your change of email within {email_within}. New "
138
174
  "instructions to confirm your change of email have been sent to {new_email}."
139
175
  msgstr ""
140
176
 
141
- #: udata/auth/views.py:82
177
+ #: udata/auth/views.py:83
142
178
  msgid "Thank you. Your change of email has been confirmed."
143
179
  msgstr ""
144
180
 
145
- #: udata/auth/views.py:97
181
+ #: udata/auth/views.py:98
146
182
  msgid ""
147
183
  "Thank you. Confirmation instructions for changing your email have been sent "
148
184
  "to {new_email}."
@@ -168,6 +204,20 @@ msgstr ""
168
204
  msgid "Your udata instance is ready!"
169
205
  msgstr ""
170
206
 
207
+ #: udata/core/owned.py:30 udata/forms/fields.py:739
208
+ #: udata/tests/api/test_dataservices_api.py:228
209
+ msgid "You can only set yourself as owner"
210
+ msgstr ""
211
+
212
+ #: udata/core/owned.py:38
213
+ msgid "Unknown organization"
214
+ msgstr ""
215
+
216
+ #: udata/core/owned.py:41 udata/forms/fields.py:762
217
+ #: udata/tests/api/test_dataservices_api.py:237
218
+ msgid "Permission denied for this organization"
219
+ msgstr ""
220
+
171
221
  #: udata/core/badges/forms.py:14
172
222
  msgid "Kind"
173
223
  msgstr ""
@@ -193,6 +243,16 @@ msgstr ""
193
243
  msgid "Publish as"
194
244
  msgstr ""
195
245
 
246
+ #: udata/core/dataservices/models.py:129 udata/core/dataset/models.py:488
247
+ #: udata/mongo/datetime_fields.py:59
248
+ msgid "Creation date"
249
+ msgstr ""
250
+
251
+ #: udata/core/dataservices/models.py:133 udata/core/dataset/models.py:490
252
+ #: udata/mongo/datetime_fields.py:61
253
+ msgid "Last modification date"
254
+ msgstr ""
255
+
196
256
  #: udata/core/dataset/activities.py:21
197
257
  msgid "created a dataset"
198
258
  msgstr ""
@@ -233,7 +293,7 @@ msgstr ""
233
293
  msgid "Semidaily"
234
294
  msgstr ""
235
295
 
236
- #: udata/core/dataset/constants.py:15 udata/harvest/models.py:19
296
+ #: udata/core/dataset/constants.py:15 udata/harvest/models.py:20
237
297
  msgid "Daily"
238
298
  msgstr ""
239
299
 
@@ -249,7 +309,7 @@ msgstr ""
249
309
  msgid "Semiweekly"
250
310
  msgstr ""
251
311
 
252
- #: udata/core/dataset/constants.py:19 udata/harvest/models.py:18
312
+ #: udata/core/dataset/constants.py:19 udata/harvest/models.py:19
253
313
  msgid "Weekly"
254
314
  msgstr ""
255
315
 
@@ -265,7 +325,7 @@ msgstr ""
265
325
  msgid "Semimonthly"
266
326
  msgstr ""
267
327
 
268
- #: udata/core/dataset/constants.py:23 udata/harvest/models.py:17
328
+ #: udata/core/dataset/constants.py:23 udata/harvest/models.py:18
269
329
  msgid "Monthly"
270
330
  msgstr ""
271
331
 
@@ -481,40 +541,32 @@ msgstr ""
481
541
  msgid "Restrict the dataset visibility to you or your organization only."
482
542
  msgstr ""
483
543
 
484
- #: udata/core/dataset/models.py:108
544
+ #: udata/core/dataset/models.py:107
485
545
  msgid "A schema must contains a name or an URL when a version is provided."
486
546
  msgstr ""
487
547
 
488
- #: udata/core/dataset/models.py:135 udata/tests/api/test_datasets_api.py:770
548
+ #: udata/core/dataset/models.py:134 udata/tests/api/test_datasets_api.py:770
489
549
  #: udata/tests/api/test_datasets_api.py:776
490
550
  msgid "Schema name \"{schema}\" is not an allowed value. Allowed values: {values}"
491
551
  msgstr ""
492
552
 
493
- #: udata/core/dataset/models.py:150 udata/tests/api/test_datasets_api.py:782
553
+ #: udata/core/dataset/models.py:149 udata/tests/api/test_datasets_api.py:782
494
554
  msgid ""
495
555
  "Version \"{version}\" is not an allowed value for the schema \"{name}\". "
496
556
  "Allowed versions: {values}"
497
557
  msgstr ""
498
558
 
499
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:452
500
- #: udata/tests/dataset/test_dataset_rdf.py:499
501
- #: udata/tests/dataset/test_dataset_rdf.py:512
559
+ #: udata/core/dataset/models.py:400 udata/core/dataset/rdf.py:435
560
+ #: udata/tests/dataset/test_dataset_rdf.py:517
561
+ #: udata/tests/dataset/test_dataset_rdf.py:530
502
562
  msgid "Nameless resource"
503
563
  msgstr ""
504
564
 
505
- #: udata/core/dataset/models.py:476
565
+ #: udata/core/dataset/models.py:475
506
566
  msgid "Future date of update"
507
567
  msgstr ""
508
568
 
509
- #: udata/core/dataset/models.py:489 udata/mongo/datetime_fields.py:59
510
- msgid "Creation date"
511
- msgstr ""
512
-
513
- #: udata/core/dataset/models.py:491 udata/mongo/datetime_fields.py:61
514
- msgid "Last modification date"
515
- msgstr ""
516
-
517
- #: udata/core/dataset/models.py:500
569
+ #: udata/core/dataset/models.py:499
518
570
  msgid "Pivotal data"
519
571
  msgstr ""
520
572
 
@@ -522,7 +574,7 @@ msgstr ""
522
574
  msgid "dataset"
523
575
  msgstr ""
524
576
 
525
- #: udata/core/dataset/rdf.py:450 udata/tests/dataset/test_dataset_rdf.py:486
577
+ #: udata/core/dataset/rdf.py:433 udata/tests/dataset/test_dataset_rdf.py:504
526
578
  msgid "{format} resource"
527
579
  msgstr ""
528
580
 
@@ -587,17 +639,17 @@ msgid "Editor"
587
639
  msgstr ""
588
640
 
589
641
  #: udata/core/organization/constants.py:11 udata/features/transfer/models.py:14
590
- #: udata/harvest/models.py:23 udata/harvest/models.py:33 udata/harvest/models.py:71
642
+ #: udata/harvest/models.py:24 udata/harvest/models.py:34 udata/harvest/models.py:77
591
643
  msgid "Pending"
592
644
  msgstr ""
593
645
 
594
646
  #: udata/core/organization/constants.py:12 udata/features/transfer/models.py:15
595
- #: udata/harvest/models.py:72
647
+ #: udata/harvest/models.py:78
596
648
  msgid "Accepted"
597
649
  msgstr ""
598
650
 
599
651
  #: udata/core/organization/constants.py:13 udata/features/transfer/models.py:16
600
- #: udata/harvest/models.py:73
652
+ #: udata/harvest/models.py:79
601
653
  msgid "Refused"
602
654
  msgstr ""
603
655
 
@@ -648,23 +700,23 @@ msgstr ""
648
700
  msgid "Role"
649
701
  msgstr ""
650
702
 
651
- #: udata/core/organization/models.py:113
703
+ #: udata/core/organization/models.py:115
652
704
  msgid "Public Service"
653
705
  msgstr ""
654
706
 
655
- #: udata/core/organization/models.py:114
707
+ #: udata/core/organization/models.py:116
656
708
  msgid "Certified"
657
709
  msgstr ""
658
710
 
659
- #: udata/core/organization/models.py:115
711
+ #: udata/core/organization/models.py:117
660
712
  msgid "Association"
661
713
  msgstr ""
662
714
 
663
- #: udata/core/organization/models.py:116
715
+ #: udata/core/organization/models.py:118
664
716
  msgid "Company"
665
717
  msgstr ""
666
718
 
667
- #: udata/core/organization/models.py:117
719
+ #: udata/core/organization/models.py:119
668
720
  msgid "Local authority"
669
721
  msgstr ""
670
722
 
@@ -754,6 +806,30 @@ msgstr ""
754
806
  msgid "post"
755
807
  msgstr ""
756
808
 
809
+ #: udata/core/reports/constants.py:18
810
+ msgid "Explicit content"
811
+ msgstr ""
812
+
813
+ #: udata/core/reports/constants.py:19
814
+ msgid "Illegal content"
815
+ msgstr ""
816
+
817
+ #: udata/core/reports/constants.py:20 udata/core/reuse/constants.py:29
818
+ msgid "Others"
819
+ msgstr ""
820
+
821
+ #: udata/core/reports/constants.py:21
822
+ msgid "Personal data"
823
+ msgstr ""
824
+
825
+ #: udata/core/reports/constants.py:22
826
+ msgid "Security"
827
+ msgstr ""
828
+
829
+ #: udata/core/reports/constants.py:23
830
+ msgid "Spam"
831
+ msgstr ""
832
+
757
833
  #: udata/core/reuse/activities.py:22
758
834
  msgid "created a reuse"
759
835
  msgstr ""
@@ -850,10 +926,6 @@ msgstr ""
850
926
  msgid "Open data tools"
851
927
  msgstr ""
852
928
 
853
- #: udata/core/reuse/constants.py:29
854
- msgid "Others"
855
- msgstr ""
856
-
857
929
  #: udata/core/reuse/forms.py:14
858
930
  msgid "This URL is already registered"
859
931
  msgstr ""
@@ -1018,7 +1090,7 @@ msgstr ""
1018
1090
  msgid "Roles"
1019
1091
  msgstr ""
1020
1092
 
1021
- #: udata/core/user/models.py:273 udata/tests/api/test_me_api.py:313
1093
+ #: udata/core/user/models.py:284 udata/tests/api/test_me_api.py:313
1022
1094
  msgid "Account deletion"
1023
1095
  msgstr ""
1024
1096
 
@@ -1054,10 +1126,6 @@ msgstr ""
1054
1126
  msgid "Not a valid UUID"
1055
1127
  msgstr ""
1056
1128
 
1057
- #: udata/forms/fields.py:210 udata/tests/api/test_datasets_api.py:764
1058
- msgid "Invalid URL"
1059
- msgstr ""
1060
-
1061
1129
  #: udata/forms/fields.py:414
1062
1130
  #, python-format
1063
1131
  msgid "Tag \"%(tag)s\" must be between %(min)d and %(max)d characters long."
@@ -1097,14 +1165,6 @@ msgstr ""
1097
1165
  msgid "You must be authenticated"
1098
1166
  msgstr ""
1099
1167
 
1100
- #: udata/forms/fields.py:739
1101
- msgid "You can only set yourself as owner"
1102
- msgstr ""
1103
-
1104
- #: udata/forms/fields.py:762
1105
- msgid "Permission denied for this organization"
1106
- msgstr ""
1107
-
1108
1168
  #: udata/forms/validators.py:59
1109
1169
  #, python-format
1110
1170
  msgid "This field requires \"%(name)s\" to be set"
@@ -1122,43 +1182,43 @@ msgstr ""
1122
1182
  msgid "Backend"
1123
1183
  msgstr ""
1124
1184
 
1125
- #: udata/harvest/models.py:16
1185
+ #: udata/harvest/models.py:17
1126
1186
  msgid "Manual"
1127
1187
  msgstr ""
1128
1188
 
1129
- #: udata/harvest/models.py:24
1189
+ #: udata/harvest/models.py:25
1130
1190
  msgid "Initializing"
1131
1191
  msgstr ""
1132
1192
 
1133
- #: udata/harvest/models.py:25
1193
+ #: udata/harvest/models.py:26
1134
1194
  msgid "Initialized"
1135
1195
  msgstr ""
1136
1196
 
1137
- #: udata/harvest/models.py:26
1197
+ #: udata/harvest/models.py:27
1138
1198
  msgid "Processing"
1139
1199
  msgstr ""
1140
1200
 
1141
- #: udata/harvest/models.py:27 udata/harvest/models.py:35
1201
+ #: udata/harvest/models.py:28 udata/harvest/models.py:36
1142
1202
  msgid "Done"
1143
1203
  msgstr ""
1144
1204
 
1145
- #: udata/harvest/models.py:28
1205
+ #: udata/harvest/models.py:29
1146
1206
  msgid "Done with errors"
1147
1207
  msgstr ""
1148
1208
 
1149
- #: udata/harvest/models.py:29 udata/harvest/models.py:36
1209
+ #: udata/harvest/models.py:30 udata/harvest/models.py:37
1150
1210
  msgid "Failed"
1151
1211
  msgstr ""
1152
1212
 
1153
- #: udata/harvest/models.py:34
1213
+ #: udata/harvest/models.py:35
1154
1214
  msgid "Started"
1155
1215
  msgstr ""
1156
1216
 
1157
- #: udata/harvest/models.py:37
1217
+ #: udata/harvest/models.py:38
1158
1218
  msgid "Skipped"
1159
1219
  msgstr ""
1160
1220
 
1161
- #: udata/harvest/models.py:38
1221
+ #: udata/harvest/models.py:39
1162
1222
  msgid "Archived"
1163
1223
  msgstr ""
1164
1224
 
@@ -1555,6 +1615,10 @@ msgstr ""
1555
1615
  msgid "Here"
1556
1616
  msgstr ""
1557
1617
 
1618
+ #: udata/tests/api/test_datasets_api.py:764
1619
+ msgid "Invalid URL \"test\""
1620
+ msgstr ""
1621
+
1558
1622
  #: udata/tests/forms/test_model_field.py:155
1559
1623
  msgid "Expect a \"Target\" class but \"Wrong\" was found"
1560
1624
  msgstr ""
udata/uris.py CHANGED
@@ -3,6 +3,7 @@ import re
3
3
  from werkzeug.routing import BuildError
4
4
  from flask import current_app, url_for
5
5
  from netaddr import IPAddress, AddrFormatError
6
+ from udata.i18n import _
6
7
 
7
8
  from udata.settings import Defaults
8
9
 
@@ -47,12 +48,12 @@ class ValidationError(ValueError):
47
48
 
48
49
  def error(url, reason=None):
49
50
  __tracebackhide__ = True
50
- if not isinstance(url, str):
51
- url = url.decode('utf8')
52
- msg = 'Invalid URL "{0}"'.format(url)
53
- if reason:
54
- msg = ': '.join((msg, reason))
55
- raise ValidationError(msg.encode('utf8'))
51
+ if reason is not None:
52
+ msg = _('Invalid URL "{url}": {reason}').format(url=url, reason=reason)
53
+ else:
54
+ msg = _('Invalid URL "{url}"').format(url=url)
55
+
56
+ raise ValidationError(msg)
56
57
 
57
58
 
58
59
  def config_for(value, key):
@@ -101,14 +102,14 @@ def validate(url, schemes=None, tlds=None, private=None, local=None,
101
102
 
102
103
  scheme = (match.group('scheme') or '').lower()
103
104
  if scheme and scheme not in schemes:
104
- error(url, 'Invalid scheme {0}'.format(scheme))
105
+ error(url, _('Invalid scheme {0}, allowed schemes: {1}').format(scheme, ", ".join(schemes)))
105
106
 
106
107
  if not credentials and match.group('credentials'):
107
- error(url, 'Credentials in URL are not allowed')
108
+ error(url, _('Credentials in URL are not allowed'))
108
109
 
109
110
  tld = match.group('tld')
110
111
  if tld and tld not in tlds and idna(tld) not in tlds:
111
- error(url, 'Invalid TLD {0}'.format(tld))
112
+ error(url, _('Invalid TLD {0}').format(tld))
112
113
 
113
114
  ip = match.group('ipv6') or match.group('ipv4')
114
115
  if ip:
@@ -117,15 +118,15 @@ def validate(url, schemes=None, tlds=None, private=None, local=None,
117
118
  except AddrFormatError:
118
119
  error(url)
119
120
  if ip.is_multicast():
120
- error(url, '{0} is a multicast IP'.format(ip))
121
+ error(url, _('{0} is a multicast IP').format(ip))
121
122
  elif not ip.is_loopback() and ip.is_hostmask() or ip.is_netmask():
122
- error(url, '{0} is a mask IP'.format(ip))
123
+ error(url, _('{0} is a mask IP').format(ip))
123
124
 
124
125
  if not local:
125
126
  if ip and ip.is_loopback() or match.group('localhost'):
126
- error(url, 'is a local URL')
127
+ error(url, _('is a local URL'))
127
128
 
128
129
  if not private and ip and ip.is_private():
129
- error(url, 'is a private URL')
130
+ error(url, _('is a private URL'))
130
131
 
131
132
  return url
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 8.0.2.dev29304
3
+ Version: 9.1.0
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -120,24 +120,43 @@ Requires-Dist: wtforms-json ==0.3.5
120
120
  udata
121
121
  =====
122
122
 
123
- Customizable and skinnable social platform dedicated to (open)data.
123
+ Customizable and skinnable social platform dedicated to (open) data.
124
124
 
125
125
  The [full documentation][readthedocs-url] is hosted on Read the Docs.
126
126
 
127
- udata is maintained by [Etalab](https://www.etalab.gouv.fr/), the
128
- french public agency in charge of open data. Etalab is responsible
127
+ udata is maintained by [data.gouv.fr](https://data.gouv.fr/), the
128
+ French public agency in charge of open data. data.gouv.fr is responsible
129
129
  for publishing udata's roadmap and for building consensus around it.
130
130
 
131
131
  It is collectively taken care of by members of the
132
132
  [OpenDataTeam](https://github.com/opendatateam).
133
133
 
134
- [readthedocs-url]: https://udata.readthedocs.io/en/latest/
134
+ [readthedocs-url]: https://udata.readthedocs.io/en/stable/
135
135
 
136
136
  # Changelog
137
137
 
138
- ## Current (in progress)
138
+ ## 9.1.0 (2024-07-11)
139
+
140
+ - Add reports backend [#3069](https://github.com/opendatateam/udata/pull/3069) and [#3078](https://github.com/opendatateam/udata/pull/3078)
141
+ - Improve `udata db check-integrity` (perfs, Sentry notifications…) [#3026](https://github.com/opendatateam/udata/pull/3026)
142
+ - Harvest dataservices [#3029](https://github.com/opendatateam/udata/pull/3029)
143
+ - Refactor catalog exports [#3052](https://github.com/opendatateam/udata/pull/3052)
144
+ - Add a filter to filter dataservices by dataset [#3056](https://github.com/opendatateam/udata/pull/3056)
145
+ - Fix reuses' datasets references [#3057](https://github.com/opendatateam/udata/pull/3057)
146
+ - Save and show harvest logs [#3053](https://github.com/opendatateam/udata/pull/3053)
147
+ - Fix missing `ObjectId` validation on `/sources` endpoint [#3060](https://github.com/opendatateam/udata/pull/3060)
148
+ - Improve URL validation errors [#3063](https://github.com/opendatateam/udata/pull/3063) [#2768](https://github.com/opendatateam/udata/pull/2768)
149
+ - Do not return full dataset objects on dataservices endpoints [#3068](https://github.com/opendatateam/udata/pull/3068)
150
+ - Update markdown base settings [#3067](https://github.com/opendatateam/udata/pull/3067)
151
+ - Prevent tagging as spam owners' messages [#3071](https://github.com/opendatateam/udata/pull/3071)[#3076](https://github.com/opendatateam/udata/pull/3076)
152
+ - Add api endpoint /me/org_topics/ [#3070](https://github.com/opendatateam/udata/pull/3070)
153
+ - Expose dataservices in RDF catalog [#3058](https://github.com/opendatateam/udata/pull/3058) [#3075](https://github.com/opendatateam/udata/pull/3075)
154
+ - CORS: always returns 204 on OPTIONS request [#3046](https://github.com/opendatateam/udata/pull/3046)
155
+
156
+ ## 9.0.0 (2024-06-07)
139
157
 
140
158
  - **breaking change** Harvest backend is now sync [#3030](https://github.com/opendatateam/udata/pull/3030)
159
+ - Add DCAT-AP HVD properties in RDF output if the dataset is tagged hvd [#3050](https://github.com/opendatateam/udata/pull/3050)
141
160
  - Allow dataservices to be discussed and followed [#3049](https://github.com/opendatateam/udata/pull/3049)
142
161
  - Add purge-dataservices job [#3049](https://github.com/opendatateam/udata/pull/3049)
143
162
  - Harvest all the available polygons from a spatial coverage [#3039](https://github.com/opendatateam/udata/pull/3039)
@@ -152,7 +171,7 @@ It is collectively taken care of by members of the
152
171
  - Allow for series in CSW ISO 19139 DCAT backend [#3028](https://github.com/opendatateam/udata/pull/3028)
153
172
  - Add `email` to membership request list API response, add `since` to org members API responses, add `email` to members of org on show org endpoint for org's admins and editors [#3038](https://github.com/opendatateam/udata/pull/3038)
154
173
  - Add `resources_downloads` to datasets metrics [#3042](https://github.com/opendatateam/udata/pull/3042)
155
- - Fix do not override resources extras on admin during update [#3043](https://github.com/opendatateam/udata/pull/3043)
174
+ - Fix do not override resources extras on admin during update [#3043](https://github.com/opendatateam/udata/pull/3043)
156
175
  - Endpoint /users is now protected by admin permissions [#3047](https://github.com/opendatateam/udata/pull/3047)
157
176
  - Fix trailing `/` inside `GeoZone` routes not redirecting. Disallow `/` inside `GeoZone` ids [#3045](https://github.com/opendatateam/udata/pull/3045)
158
177