udata 11.1.2.dev8__py3-none-any.whl → 11.1.2.dev11__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/api/oauth2.py +22 -3
- udata/app.py +3 -0
- udata/auth/__init__.py +11 -0
- udata/auth/forms.py +70 -3
- udata/auth/mails.py +6 -0
- udata/auth/proconnect.py +127 -0
- udata/auth/views.py +57 -2
- udata/core/__init__.py +2 -0
- udata/core/captchetat.py +80 -0
- udata/core/dataset/api.py +2 -2
- udata/core/dataset/api_fields.py +3 -4
- udata/core/dataset/apiv2.py +6 -6
- udata/core/dataset/commands.py +0 -10
- udata/core/dataset/constants.py +124 -38
- udata/core/dataset/factories.py +2 -1
- udata/core/dataset/forms.py +14 -10
- udata/core/dataset/models.py +8 -36
- udata/core/dataset/rdf.py +76 -54
- udata/core/dataset/tasks.py +2 -50
- udata/cors.py +19 -2
- udata/harvest/backends/ckan/harvesters.py +10 -14
- udata/harvest/backends/maaf.py +15 -14
- udata/harvest/tests/ckan/test_ckan_backend.py +4 -3
- udata/harvest/tests/test_dcat_backend.py +3 -2
- udata/i18n.py +7 -32
- udata/migrations/2025-09-04-update-legacy-frequencies.py +36 -0
- udata/settings.py +27 -0
- udata/templates/security/email/reset_instructions.html +1 -1
- udata/templates/security/email/reset_instructions.txt +1 -1
- udata/tests/api/test_datasets_api.py +41 -12
- udata/tests/dataset/test_dataset_model.py +17 -53
- udata/tests/dataset/test_dataset_rdf.py +27 -28
- udata/translations/udata.pot +226 -150
- udata/utils.py +8 -1
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/METADATA +1 -1
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/RECORD +40 -40
- udata/templates/mail/frequency_reminder.html +0 -34
- udata/templates/mail/frequency_reminder.txt +0 -18
- udata/tests/test_i18n.py +0 -93
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/WHEEL +0 -0
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/entry_points.txt +0 -0
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/licenses/LICENSE +0 -0
- {udata-11.1.2.dev8.dist-info → udata-11.1.2.dev11.dist-info}/top_level.txt +0 -0
|
@@ -10,6 +10,7 @@ from rdflib.resource import Resource as RdfResource
|
|
|
10
10
|
|
|
11
11
|
from udata.core.contact_point.factories import ContactPointFactory
|
|
12
12
|
from udata.core.dataservices.factories import DataserviceFactory
|
|
13
|
+
from udata.core.dataset.constants import UpdateFrequency
|
|
13
14
|
from udata.core.dataset.factories import DatasetFactory, LicenseFactory, ResourceFactory
|
|
14
15
|
from udata.core.dataset.models import (
|
|
15
16
|
Checksum,
|
|
@@ -20,7 +21,8 @@ from udata.core.dataset.models import (
|
|
|
20
21
|
Resource,
|
|
21
22
|
)
|
|
22
23
|
from udata.core.dataset.rdf import (
|
|
23
|
-
|
|
24
|
+
EUFREQ_TERM_TO_UDATA,
|
|
25
|
+
FREQ_TERM_TO_UDATA,
|
|
24
26
|
dataset_from_rdf,
|
|
25
27
|
dataset_to_rdf,
|
|
26
28
|
frequency_from_rdf,
|
|
@@ -38,6 +40,7 @@ from udata.rdf import (
|
|
|
38
40
|
DCAT,
|
|
39
41
|
DCATAP,
|
|
40
42
|
DCT,
|
|
43
|
+
EUFREQ,
|
|
41
44
|
FREQ,
|
|
42
45
|
GEODCAT,
|
|
43
46
|
HVD_LEGISLATION,
|
|
@@ -54,13 +57,6 @@ from udata.utils import faker
|
|
|
54
57
|
|
|
55
58
|
pytestmark = pytest.mark.usefixtures("app")
|
|
56
59
|
|
|
57
|
-
FREQ_SAMPLE = [
|
|
58
|
-
(FREQ.annual, "annual"),
|
|
59
|
-
(FREQ.monthly, "monthly"),
|
|
60
|
-
(FREQ.daily, "daily"),
|
|
61
|
-
(FREQ.continuous, "continuous"),
|
|
62
|
-
]
|
|
63
|
-
|
|
64
60
|
GOV_UK_REF = "http://reference.data.gov.uk/id/year/2017"
|
|
65
61
|
|
|
66
62
|
try:
|
|
@@ -104,7 +100,7 @@ class DatasetToRdfTest:
|
|
|
104
100
|
dataset = DatasetFactory(
|
|
105
101
|
tags=faker.tags(nb=3),
|
|
106
102
|
resources=resources,
|
|
107
|
-
frequency=
|
|
103
|
+
frequency=UpdateFrequency.DAILY,
|
|
108
104
|
acronym="acro",
|
|
109
105
|
organization=org,
|
|
110
106
|
contact_points=[contact],
|
|
@@ -178,19 +174,19 @@ class DatasetToRdfTest:
|
|
|
178
174
|
assert org_rdf.value(RDF.type).identifier == FOAF.Organization
|
|
179
175
|
assert org_rdf.value(FOAF.name) == Literal("organization")
|
|
180
176
|
|
|
181
|
-
def
|
|
182
|
-
assert frequency_to_rdf(
|
|
183
|
-
|
|
184
|
-
assert frequency_to_rdf("fourTimesADay") == FREQ.daily
|
|
185
|
-
assert frequency_to_rdf("threeTimesADay") == FREQ.daily
|
|
186
|
-
assert frequency_to_rdf("semidaily") == FREQ.daily
|
|
187
|
-
|
|
188
|
-
assert frequency_to_rdf("fourTimesAWeek") == FREQ.threeTimesAWeek
|
|
177
|
+
def test_map_null_frequency(self):
|
|
178
|
+
assert frequency_to_rdf(None) is None
|
|
189
179
|
|
|
190
|
-
|
|
191
|
-
|
|
180
|
+
@pytest.mark.parametrize("term,freq", FREQ_TERM_TO_UDATA.items())
|
|
181
|
+
def test_map_dublin_core_frequencies(self, term, freq):
|
|
182
|
+
assert frequency_to_rdf(freq) == term
|
|
192
183
|
|
|
193
|
-
|
|
184
|
+
@pytest.mark.parametrize(
|
|
185
|
+
"term,freq",
|
|
186
|
+
[(k, v) for k, v in EUFREQ_TERM_TO_UDATA.items() if v not in FREQ_TERM_TO_UDATA.values()],
|
|
187
|
+
)
|
|
188
|
+
def test_map_european_frequencies(self, term, freq):
|
|
189
|
+
assert frequency_to_rdf(freq) == term
|
|
194
190
|
|
|
195
191
|
def test_minimal_resource_fields(self):
|
|
196
192
|
resource = ResourceFactory()
|
|
@@ -462,7 +458,7 @@ class RdfToDatasetTest:
|
|
|
462
458
|
g.set((node, DCT.title, Literal(title)))
|
|
463
459
|
g.set((node, SKOS.altLabel, Literal(acronym)))
|
|
464
460
|
g.set((node, DCT.description, Literal(description)))
|
|
465
|
-
g.set((node, DCT.accrualPeriodicity,
|
|
461
|
+
g.set((node, DCT.accrualPeriodicity, EUFREQ.DAILY))
|
|
466
462
|
pot = BNode()
|
|
467
463
|
g.add((node, DCT.temporal, pot))
|
|
468
464
|
g.set((pot, RDF.type, DCT.PeriodOfTime))
|
|
@@ -478,7 +474,7 @@ class RdfToDatasetTest:
|
|
|
478
474
|
assert dataset.title == title
|
|
479
475
|
assert dataset.acronym == acronym
|
|
480
476
|
assert dataset.description == description
|
|
481
|
-
assert dataset.frequency ==
|
|
477
|
+
assert dataset.frequency == UpdateFrequency.DAILY
|
|
482
478
|
assert set(dataset.tags) == set(tags)
|
|
483
479
|
assert isinstance(dataset.temporal_coverage, db.DateRange)
|
|
484
480
|
assert dataset.temporal_coverage.start == start
|
|
@@ -539,31 +535,34 @@ class RdfToDatasetTest:
|
|
|
539
535
|
assert isinstance(dataset, Dataset)
|
|
540
536
|
assert set(dataset.tags) == set(tags + themes)
|
|
541
537
|
|
|
542
|
-
|
|
538
|
+
def test_parse_null_frequency(self):
|
|
539
|
+
assert frequency_from_rdf(None) is None
|
|
540
|
+
|
|
541
|
+
@pytest.mark.parametrize("freq,expected", FREQ_TERM_TO_UDATA.items())
|
|
543
542
|
def test_parse_dublin_core_frequencies(self, freq, expected):
|
|
544
543
|
assert frequency_from_rdf(freq) == expected
|
|
545
544
|
|
|
546
|
-
@pytest.mark.parametrize("freq,expected",
|
|
545
|
+
@pytest.mark.parametrize("freq,expected", FREQ_TERM_TO_UDATA.items())
|
|
547
546
|
def test_parse_dublin_core_frequencies_as_resource(self, freq, expected):
|
|
548
547
|
g = Graph()
|
|
549
548
|
resource = RdfResource(g, freq)
|
|
550
549
|
assert frequency_from_rdf(resource) == expected
|
|
551
550
|
|
|
552
|
-
@pytest.mark.parametrize("freq,expected",
|
|
551
|
+
@pytest.mark.parametrize("freq,expected", FREQ_TERM_TO_UDATA.items())
|
|
553
552
|
def test_parse_dublin_core_frequencies_as_url(self, freq, expected):
|
|
554
553
|
assert frequency_from_rdf(str(freq)) == expected
|
|
555
554
|
|
|
556
|
-
@pytest.mark.parametrize("freq,expected",
|
|
555
|
+
@pytest.mark.parametrize("freq,expected", EUFREQ_TERM_TO_UDATA.items())
|
|
557
556
|
def test_parse_european_frequencies(self, freq, expected):
|
|
558
557
|
assert frequency_from_rdf(freq) == expected
|
|
559
558
|
|
|
560
|
-
@pytest.mark.parametrize("freq,expected",
|
|
559
|
+
@pytest.mark.parametrize("freq,expected", EUFREQ_TERM_TO_UDATA.items())
|
|
561
560
|
def test_parse_european_frequencies_as_resource(self, freq, expected):
|
|
562
561
|
g = Graph()
|
|
563
562
|
resource = RdfResource(g, freq)
|
|
564
563
|
assert frequency_from_rdf(resource) == expected
|
|
565
564
|
|
|
566
|
-
@pytest.mark.parametrize("freq,expected",
|
|
565
|
+
@pytest.mark.parametrize("freq,expected", EUFREQ_TERM_TO_UDATA.items())
|
|
567
566
|
def test_parse_european_frequencies_as_url(self, freq, expected):
|
|
568
567
|
assert frequency_from_rdf(str(freq)) == expected
|
|
569
568
|
|