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.
- udata/__init__.py +1 -1
- udata/api/__init__.py +2 -0
- udata/api/commands.py +0 -2
- udata/api_fields.py +41 -3
- udata/commands/db.py +88 -48
- udata/core/dataservices/factories.py +33 -0
- udata/core/dataservices/models.py +42 -4
- udata/core/dataservices/rdf.py +106 -0
- udata/core/dataset/csv.py +8 -1
- udata/core/dataset/models.py +1 -2
- udata/core/dataset/rdf.py +37 -128
- udata/core/discussions/models.py +20 -0
- udata/core/organization/csv.py +5 -3
- udata/core/reports/__init__.py +0 -0
- udata/core/reports/api.py +44 -0
- udata/core/reports/constants.py +30 -0
- udata/core/reports/models.py +58 -0
- udata/core/reuse/csv.py +3 -0
- udata/core/site/api.py +33 -2
- udata/core/site/rdf.py +6 -1
- udata/core/spam/models.py +6 -0
- udata/core/topic/models.py +3 -2
- udata/core/topic/parsers.py +3 -2
- udata/core/user/apiv2.py +28 -0
- udata/db/__init__.py +0 -0
- udata/db/tasks.py +6 -0
- udata/features/notifications/__init__.py +0 -1
- udata/forms/fields.py +2 -2
- udata/harvest/api.py +19 -1
- udata/harvest/backends/base.py +118 -10
- udata/harvest/backends/dcat.py +28 -7
- udata/harvest/models.py +6 -0
- udata/harvest/tests/dcat/bnodes.xml +13 -2
- udata/harvest/tests/test_dcat_backend.py +21 -0
- udata/migrations/2024-06-11-fix-reuse-datasets-references.py +35 -0
- udata/models/__init__.py +1 -0
- udata/rdf.py +113 -2
- udata/routing.py +1 -1
- udata/settings.py +3 -1
- udata/static/admin.js +17 -17
- udata/static/admin.js.map +1 -1
- udata/static/chunks/{18.ad41fb75ac4226e1f3ce.js → 18.1922fd0b2b7fad122991.js} +3 -3
- udata/static/chunks/18.1922fd0b2b7fad122991.js.map +1 -0
- udata/static/chunks/{7.11ac4de064ae59691d49.js → 7.e2106342e94ee09393b1.js} +2 -2
- udata/static/chunks/7.e2106342e94ee09393b1.js.map +1 -0
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/storage/s3.py +3 -3
- udata/tasks.py +1 -0
- udata/tests/api/test_dataservices_api.py +26 -2
- udata/tests/api/test_datasets_api.py +1 -1
- udata/tests/api/test_reports_api.py +87 -0
- udata/tests/apiv2/test_me_api.py +40 -0
- udata/tests/dataset/test_dataset_rdf.py +19 -1
- udata/tests/frontend/test_auth.py +1 -4
- udata/tests/organization/test_csv_adapter.py +0 -1
- udata/tests/plugin.py +2 -0
- udata/tests/site/test_site_api.py +0 -1
- udata/tests/site/test_site_rdf.py +66 -0
- udata/tests/test_discussions.py +24 -34
- udata/tests/test_model.py +3 -2
- udata/tests/test_utils.py +1 -1
- udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
- udata/translations/ar/LC_MESSAGES/udata.po +128 -64
- udata/translations/de/LC_MESSAGES/udata.mo +0 -0
- udata/translations/de/LC_MESSAGES/udata.po +128 -64
- udata/translations/es/LC_MESSAGES/udata.mo +0 -0
- udata/translations/es/LC_MESSAGES/udata.po +128 -64
- udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/fr/LC_MESSAGES/udata.po +128 -64
- udata/translations/it/LC_MESSAGES/udata.mo +0 -0
- udata/translations/it/LC_MESSAGES/udata.po +128 -64
- udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
- udata/translations/pt/LC_MESSAGES/udata.po +128 -64
- udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/sr/LC_MESSAGES/udata.po +128 -64
- udata/translations/udata.pot +129 -65
- udata/uris.py +14 -13
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/METADATA +26 -7
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/RECORD +84 -72
- udata/static/chunks/18.ad41fb75ac4226e1f3ce.js.map +0 -1
- udata/static/chunks/7.11ac4de064ae59691d49.js.map +0 -1
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/LICENSE +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/WHEEL +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/entry_points.txt +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.1.0.dist-info}/top_level.txt +0 -0
udata/translations/udata.pot
CHANGED
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
#, fuzzy
|
|
7
7
|
msgid ""
|
|
8
8
|
msgstr ""
|
|
9
|
-
"Project-Id-Version: udata
|
|
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-
|
|
12
|
-
"PO-Revision-Date: 2024-
|
|
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:
|
|
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:
|
|
92
|
+
#: udata/api/oauth2.py:54
|
|
57
93
|
msgid "Bearer Token"
|
|
58
94
|
msgstr ""
|
|
59
95
|
|
|
60
|
-
#: udata/api/oauth2.py:
|
|
96
|
+
#: udata/api/oauth2.py:58
|
|
61
97
|
msgid "Default scope"
|
|
62
98
|
msgstr ""
|
|
63
99
|
|
|
64
|
-
#: udata/api/oauth2.py:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
500
|
-
#: udata/tests/dataset/test_dataset_rdf.py:
|
|
501
|
-
#: udata/tests/dataset/test_dataset_rdf.py:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
703
|
+
#: udata/core/organization/models.py:115
|
|
652
704
|
msgid "Public Service"
|
|
653
705
|
msgstr ""
|
|
654
706
|
|
|
655
|
-
#: udata/core/organization/models.py:
|
|
707
|
+
#: udata/core/organization/models.py:116
|
|
656
708
|
msgid "Certified"
|
|
657
709
|
msgstr ""
|
|
658
710
|
|
|
659
|
-
#: udata/core/organization/models.py:
|
|
711
|
+
#: udata/core/organization/models.py:117
|
|
660
712
|
msgid "Association"
|
|
661
713
|
msgstr ""
|
|
662
714
|
|
|
663
|
-
#: udata/core/organization/models.py:
|
|
715
|
+
#: udata/core/organization/models.py:118
|
|
664
716
|
msgid "Company"
|
|
665
717
|
msgstr ""
|
|
666
718
|
|
|
667
|
-
#: udata/core/organization/models.py:
|
|
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:
|
|
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:
|
|
1185
|
+
#: udata/harvest/models.py:17
|
|
1126
1186
|
msgid "Manual"
|
|
1127
1187
|
msgstr ""
|
|
1128
1188
|
|
|
1129
|
-
#: udata/harvest/models.py:
|
|
1189
|
+
#: udata/harvest/models.py:25
|
|
1130
1190
|
msgid "Initializing"
|
|
1131
1191
|
msgstr ""
|
|
1132
1192
|
|
|
1133
|
-
#: udata/harvest/models.py:
|
|
1193
|
+
#: udata/harvest/models.py:26
|
|
1134
1194
|
msgid "Initialized"
|
|
1135
1195
|
msgstr ""
|
|
1136
1196
|
|
|
1137
|
-
#: udata/harvest/models.py:
|
|
1197
|
+
#: udata/harvest/models.py:27
|
|
1138
1198
|
msgid "Processing"
|
|
1139
1199
|
msgstr ""
|
|
1140
1200
|
|
|
1141
|
-
#: udata/harvest/models.py:
|
|
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:
|
|
1205
|
+
#: udata/harvest/models.py:29
|
|
1146
1206
|
msgid "Done with errors"
|
|
1147
1207
|
msgstr ""
|
|
1148
1208
|
|
|
1149
|
-
#: udata/harvest/models.py:
|
|
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:
|
|
1213
|
+
#: udata/harvest/models.py:35
|
|
1154
1214
|
msgid "Started"
|
|
1155
1215
|
msgstr ""
|
|
1156
1216
|
|
|
1157
|
-
#: udata/harvest/models.py:
|
|
1217
|
+
#: udata/harvest/models.py:38
|
|
1158
1218
|
msgid "Skipped"
|
|
1159
1219
|
msgstr ""
|
|
1160
1220
|
|
|
1161
|
-
#: udata/harvest/models.py:
|
|
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
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
raise ValidationError(msg
|
|
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:
|
|
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 [
|
|
128
|
-
|
|
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/
|
|
134
|
+
[readthedocs-url]: https://udata.readthedocs.io/en/stable/
|
|
135
135
|
|
|
136
136
|
# Changelog
|
|
137
137
|
|
|
138
|
-
##
|
|
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
|
|