udata 14.5.1.dev6__py3-none-any.whl → 14.5.1.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/core/dataset/api.py +20 -4
- udata/core/dataset/api_fields.py +1 -1
- udata/core/dataset/apiv2.py +1 -1
- udata/core/organization/api_fields.py +3 -3
- udata/core/post/models.py +2 -0
- udata/core/post/tests/test_api.py +5 -1
- udata/core/user/api_fields.py +3 -3
- udata/migrations/2021-08-17-harvest-integrity.py +23 -16
- udata/rdf.py +7 -1
- udata/tests/api/test_datasets_api.py +38 -0
- udata/tests/dataset/test_dataset_rdf.py +16 -0
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/METADATA +1 -1
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/RECORD +17 -17
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/WHEEL +0 -0
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/entry_points.txt +0 -0
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/licenses/LICENSE +0 -0
- {udata-14.5.1.dev6.dist-info → udata-14.5.1.dev11.dist-info}/top_level.txt +0 -0
udata/core/dataset/api.py
CHANGED
|
@@ -328,17 +328,33 @@ class DatasetListAPI(API):
|
|
|
328
328
|
@ns.route("/recent.atom", endpoint="recent_datasets_atom_feed")
|
|
329
329
|
class DatasetsAtomFeedAPI(API):
|
|
330
330
|
@api.doc("recent_datasets_atom_feed")
|
|
331
|
+
@api.expect(dataset_parser.parser)
|
|
331
332
|
def get(self):
|
|
333
|
+
args = dataset_parser.parse()
|
|
334
|
+
queryset = Dataset.objects.visible()
|
|
335
|
+
queryset = DatasetApiParser.parse_filters(queryset, args)
|
|
336
|
+
|
|
337
|
+
q = args.get("q").strip() if args.get("q") else ""
|
|
338
|
+
has_filters = any(
|
|
339
|
+
args.get(k)
|
|
340
|
+
for k in ["q", "tag", "license", "organization", "owner", "format", "badge", "topic"]
|
|
341
|
+
)
|
|
342
|
+
|
|
343
|
+
if q:
|
|
344
|
+
title = _("Datasets search: {q}").format(q=q)
|
|
345
|
+
elif has_filters:
|
|
346
|
+
title = _("Filtered datasets")
|
|
347
|
+
else:
|
|
348
|
+
title = _("Latest datasets")
|
|
349
|
+
|
|
332
350
|
feed = Atom1Feed(
|
|
333
|
-
|
|
351
|
+
title,
|
|
334
352
|
description=None,
|
|
335
353
|
feed_url=request.url,
|
|
336
354
|
link=request.url_root,
|
|
337
355
|
)
|
|
338
356
|
|
|
339
|
-
datasets: list[Dataset] = get_rss_feed_list(
|
|
340
|
-
Dataset.objects.visible(), "created_at_internal"
|
|
341
|
-
)
|
|
357
|
+
datasets: list[Dataset] = get_rss_feed_list(queryset, "created_at_internal")
|
|
342
358
|
|
|
343
359
|
for dataset in datasets:
|
|
344
360
|
author_name = None
|
udata/core/dataset/api_fields.py
CHANGED
|
@@ -332,7 +332,7 @@ dataset_fields = api.model(
|
|
|
332
332
|
"id": fields.String(description="The dataset identifier", readonly=True),
|
|
333
333
|
"title": fields.String(description="The dataset title", required=True),
|
|
334
334
|
"acronym": fields.String(description="An optional dataset acronym"),
|
|
335
|
-
"slug": fields.String(description="The dataset permalink string",
|
|
335
|
+
"slug": fields.String(description="The dataset permalink string", readonly=True),
|
|
336
336
|
"description": fields.Markdown(
|
|
337
337
|
description="The dataset description in markdown", required=True
|
|
338
338
|
),
|
udata/core/dataset/apiv2.py
CHANGED
|
@@ -108,7 +108,7 @@ dataset_fields = apiv2.model(
|
|
|
108
108
|
"id": fields.String(description="The dataset identifier", readonly=True),
|
|
109
109
|
"title": fields.String(description="The dataset title", required=True),
|
|
110
110
|
"acronym": fields.String(description="An optional dataset acronym"),
|
|
111
|
-
"slug": fields.String(description="The dataset permalink string",
|
|
111
|
+
"slug": fields.String(description="The dataset permalink string", readonly=True),
|
|
112
112
|
"description": fields.Markdown(
|
|
113
113
|
description="The dataset description in markdown", required=True
|
|
114
114
|
),
|
|
@@ -14,7 +14,7 @@ org_ref_fields = api.inherit(
|
|
|
14
14
|
"name": fields.String(description="The organization name", readonly=True),
|
|
15
15
|
"acronym": fields.String(description="The organization acronym"),
|
|
16
16
|
"slug": fields.String(
|
|
17
|
-
description="The organization string used as permalink",
|
|
17
|
+
description="The organization string used as permalink", readonly=True
|
|
18
18
|
),
|
|
19
19
|
"uri": fields.String(
|
|
20
20
|
attribute=lambda o: o.self_api_url(),
|
|
@@ -122,12 +122,12 @@ member_fields = api.model(
|
|
|
122
122
|
org_fields = api.model(
|
|
123
123
|
"Organization",
|
|
124
124
|
{
|
|
125
|
-
"id": fields.String(description="The organization identifier",
|
|
125
|
+
"id": fields.String(description="The organization identifier", readonly=True),
|
|
126
126
|
"name": fields.String(description="The organization name", required=True),
|
|
127
127
|
"acronym": fields.String(description="The organization acronym"),
|
|
128
128
|
"url": fields.String(description="The organization website URL"),
|
|
129
129
|
"slug": fields.String(
|
|
130
|
-
description="The organization string used as permalink",
|
|
130
|
+
description="The organization string used as permalink", readonly=True
|
|
131
131
|
),
|
|
132
132
|
"description": fields.Markdown(
|
|
133
133
|
description="The organization description in Markdown", required=True
|
udata/core/post/models.py
CHANGED
|
@@ -4,6 +4,7 @@ from udata.api_fields import field, generate_fields
|
|
|
4
4
|
from udata.core.dataset.api_fields import dataset_fields
|
|
5
5
|
from udata.core.linkable import Linkable
|
|
6
6
|
from udata.core.storages import default_image_basename, images
|
|
7
|
+
from udata.core.user.api_fields import user_ref_fields
|
|
7
8
|
from udata.i18n import lazy_gettext as _
|
|
8
9
|
from udata.mongo import db
|
|
9
10
|
from udata.uris import cdata_url
|
|
@@ -82,6 +83,7 @@ class Post(db.Datetimed, Linkable, db.Document):
|
|
|
82
83
|
|
|
83
84
|
owner = field(
|
|
84
85
|
db.ReferenceField("User"),
|
|
86
|
+
nested_fields=user_ref_fields,
|
|
85
87
|
readonly=True,
|
|
86
88
|
allow_null=True,
|
|
87
89
|
description="The owner user",
|
|
@@ -56,9 +56,13 @@ class PostsAPITest(APITestCase):
|
|
|
56
56
|
|
|
57
57
|
def test_post_api_get(self):
|
|
58
58
|
"""It should fetch a post from the API"""
|
|
59
|
-
|
|
59
|
+
admin = AdminFactory()
|
|
60
|
+
post = PostFactory(owner=admin)
|
|
60
61
|
response = self.get(url_for("api.post", post=post))
|
|
61
62
|
assert200(response)
|
|
63
|
+
owner = response.json["owner"]
|
|
64
|
+
assert isinstance(owner, dict)
|
|
65
|
+
assert owner["id"] == str(admin.id)
|
|
62
66
|
|
|
63
67
|
def test_post_api_create(self):
|
|
64
68
|
"""It should create a post from the API"""
|
udata/core/user/api_fields.py
CHANGED
|
@@ -9,7 +9,7 @@ user_ref_fields = api.inherit(
|
|
|
9
9
|
{
|
|
10
10
|
"first_name": fields.String(description="The user first name", readonly=True),
|
|
11
11
|
"last_name": fields.String(description="The user larst name", readonly=True),
|
|
12
|
-
"slug": fields.String(description="The user permalink string",
|
|
12
|
+
"slug": fields.String(description="The user permalink string", readonly=True),
|
|
13
13
|
"uri": fields.String(
|
|
14
14
|
attribute=lambda u: u.self_api_url(),
|
|
15
15
|
description="The API URI for this user",
|
|
@@ -35,8 +35,8 @@ from udata.core.organization.api_fields import member_email_with_visibility_chec
|
|
|
35
35
|
user_fields = api.model(
|
|
36
36
|
"User",
|
|
37
37
|
{
|
|
38
|
-
"id": fields.String(description="The user identifier",
|
|
39
|
-
"slug": fields.String(description="The user permalink string",
|
|
38
|
+
"id": fields.String(description="The user identifier", readonly=True),
|
|
39
|
+
"slug": fields.String(description="The user permalink string", readonly=True),
|
|
40
40
|
"first_name": fields.String(description="The user first name", required=True),
|
|
41
41
|
"last_name": fields.String(description="The user last name", required=True),
|
|
42
42
|
"email": fields.Raw(
|
|
@@ -5,6 +5,7 @@ Remove Harvest db integrity problems
|
|
|
5
5
|
|
|
6
6
|
import logging
|
|
7
7
|
|
|
8
|
+
import click
|
|
8
9
|
import mongoengine
|
|
9
10
|
|
|
10
11
|
from udata.core.jobs.models import PeriodicTask
|
|
@@ -16,29 +17,35 @@ log = logging.getLogger(__name__)
|
|
|
16
17
|
def migrate(db):
|
|
17
18
|
log.info("Processing HarvestJob source references.")
|
|
18
19
|
|
|
19
|
-
harvest_jobs = HarvestJob.objects().no_cache()
|
|
20
|
+
harvest_jobs = HarvestJob.objects().no_cache()
|
|
21
|
+
total = harvest_jobs.count()
|
|
20
22
|
count = 0
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
with click.progressbar(harvest_jobs, length=total, label="Checking sources refs") as jobs:
|
|
24
|
+
for harvest_job in jobs:
|
|
25
|
+
try:
|
|
26
|
+
if harvest_job.source is None:
|
|
27
|
+
raise mongoengine.errors.DoesNotExist()
|
|
28
|
+
harvest_job.source.id
|
|
29
|
+
except mongoengine.errors.DoesNotExist:
|
|
30
|
+
count += 1
|
|
31
|
+
harvest_job.delete()
|
|
27
32
|
|
|
28
33
|
log.info(f"Completed, removed {count} HarvestJob objects")
|
|
29
34
|
|
|
30
35
|
log.info("Processing HarvestJob items references.")
|
|
31
36
|
|
|
32
|
-
harvest_jobs = HarvestJob.objects.filter(items__0__exists=True).no_cache()
|
|
37
|
+
harvest_jobs = HarvestJob.objects.filter(items__0__exists=True).no_cache()
|
|
38
|
+
total = harvest_jobs.count()
|
|
33
39
|
count = 0
|
|
34
|
-
|
|
35
|
-
for
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
with click.progressbar(harvest_jobs, length=total, label="Checking items refs") as jobs:
|
|
41
|
+
for harvest_job in jobs:
|
|
42
|
+
for item in harvest_job.items:
|
|
43
|
+
try:
|
|
44
|
+
item.dataset and item.dataset.id
|
|
45
|
+
except mongoengine.errors.DoesNotExist:
|
|
46
|
+
count += 1
|
|
47
|
+
item.dataset = None
|
|
48
|
+
harvest_job.save()
|
|
42
49
|
|
|
43
50
|
log.info(f"Completed, modified {count} HarvestJob objects")
|
|
44
51
|
|
udata/rdf.py
CHANGED
|
@@ -356,7 +356,13 @@ def theme_labels_from_rdf(rdf):
|
|
|
356
356
|
|
|
357
357
|
|
|
358
358
|
def themes_from_rdf(rdf):
|
|
359
|
-
tags = [
|
|
359
|
+
tags = []
|
|
360
|
+
for tag in rdf.objects(DCAT.keyword):
|
|
361
|
+
if isinstance(tag, RdfResource):
|
|
362
|
+
# dcat:keyword should be Literal, not a Resource/URIRef
|
|
363
|
+
log.warning(f"Ignoring dcat:keyword with URI value: {tag.identifier}")
|
|
364
|
+
continue
|
|
365
|
+
tags.append(tag.toPython())
|
|
360
366
|
tags += theme_labels_from_rdf(rdf)
|
|
361
367
|
return list(set(tags))
|
|
362
368
|
|
|
@@ -1555,6 +1555,44 @@ class DatasetsFeedAPItest(APITestCase):
|
|
|
1555
1555
|
entry = feed.entries[0]
|
|
1556
1556
|
assert uris.validate(entry["id"])
|
|
1557
1557
|
|
|
1558
|
+
@pytest.mark.options(DELAY_BEFORE_APPEARING_IN_RSS_FEED=0)
|
|
1559
|
+
def test_recent_feed_with_organization_filter(self):
|
|
1560
|
+
org1 = OrganizationFactory()
|
|
1561
|
+
org2 = OrganizationFactory()
|
|
1562
|
+
DatasetFactory(title="Dataset Org1", organization=org1, resources=[ResourceFactory()])
|
|
1563
|
+
DatasetFactory(title="Dataset Org2", organization=org2, resources=[ResourceFactory()])
|
|
1564
|
+
|
|
1565
|
+
response = self.get(url_for("api.recent_datasets_atom_feed", organization=str(org1.id)))
|
|
1566
|
+
self.assert200(response)
|
|
1567
|
+
|
|
1568
|
+
feed = feedparser.parse(response.data)
|
|
1569
|
+
self.assertEqual(len(feed.entries), 1)
|
|
1570
|
+
self.assertEqual(feed.entries[0].title, "Dataset Org1")
|
|
1571
|
+
|
|
1572
|
+
@pytest.mark.options(DELAY_BEFORE_APPEARING_IN_RSS_FEED=0)
|
|
1573
|
+
def test_recent_feed_with_tag_filter(self):
|
|
1574
|
+
DatasetFactory(title="Tagged", tags=["transport"], resources=[ResourceFactory()])
|
|
1575
|
+
DatasetFactory(title="Not Tagged", tags=["other"], resources=[ResourceFactory()])
|
|
1576
|
+
|
|
1577
|
+
response = self.get(url_for("api.recent_datasets_atom_feed", tag="transport"))
|
|
1578
|
+
self.assert200(response)
|
|
1579
|
+
|
|
1580
|
+
feed = feedparser.parse(response.data)
|
|
1581
|
+
self.assertEqual(len(feed.entries), 1)
|
|
1582
|
+
self.assertEqual(feed.entries[0].title, "Tagged")
|
|
1583
|
+
|
|
1584
|
+
@pytest.mark.options(DELAY_BEFORE_APPEARING_IN_RSS_FEED=0)
|
|
1585
|
+
def test_recent_feed_with_search_query(self):
|
|
1586
|
+
DatasetFactory(title="Transport public", resources=[ResourceFactory()])
|
|
1587
|
+
DatasetFactory(title="Environnement", resources=[ResourceFactory()])
|
|
1588
|
+
|
|
1589
|
+
response = self.get(url_for("api.recent_datasets_atom_feed", q="transport"))
|
|
1590
|
+
self.assert200(response)
|
|
1591
|
+
|
|
1592
|
+
feed = feedparser.parse(response.data)
|
|
1593
|
+
self.assertEqual(len(feed.entries), 1)
|
|
1594
|
+
self.assertEqual(feed.entries[0].title, "Transport public")
|
|
1595
|
+
|
|
1558
1596
|
|
|
1559
1597
|
class DatasetBadgeAPITest(APITestCase):
|
|
1560
1598
|
@classmethod
|
|
@@ -755,6 +755,22 @@ class RdfToDatasetTest(PytestOnlyDBTestCase):
|
|
|
755
755
|
assert isinstance(dataset, Dataset)
|
|
756
756
|
assert set(dataset.tags) == set(tags + themes)
|
|
757
757
|
|
|
758
|
+
def test_keyword_as_uriref(self):
|
|
759
|
+
"""Regression test: keywords can be URIRef instead of Literal in some DCAT feeds."""
|
|
760
|
+
node = BNode()
|
|
761
|
+
g = Graph()
|
|
762
|
+
|
|
763
|
+
g.add((node, RDF.type, DCAT.Dataset))
|
|
764
|
+
g.add((node, DCT.title, Literal(faker.sentence())))
|
|
765
|
+
g.add((node, DCAT.keyword, Literal("literal-tag")))
|
|
766
|
+
g.add((node, DCAT.keyword, URIRef("http://example.org/keyword/uriref-tag")))
|
|
767
|
+
|
|
768
|
+
dataset = dataset_from_rdf(g)
|
|
769
|
+
dataset.validate()
|
|
770
|
+
|
|
771
|
+
assert isinstance(dataset, Dataset)
|
|
772
|
+
assert "literal-tag" in dataset.tags
|
|
773
|
+
|
|
758
774
|
def test_parse_null_frequency(self):
|
|
759
775
|
assert frequency_from_rdf(None) is None
|
|
760
776
|
|
|
@@ -6,7 +6,7 @@ udata/errors.py,sha256=E8W7b4PH7c5B85g_nsUMt8fHqMVpDFOZFkO6wMPl6bA,117
|
|
|
6
6
|
udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
|
|
7
7
|
udata/i18n.py,sha256=R7WdU0EZslj5xEHdqbyQ4iOORGjiqcVvQFCnmQEkpHA,2602
|
|
8
8
|
udata/mail.py,sha256=-5OjGWqW7X5EuLLsJfhdqIrjlBGJ3T0V_wVLKc9OyPQ,3722
|
|
9
|
-
udata/rdf.py,sha256=
|
|
9
|
+
udata/rdf.py,sha256=Utj7qNJJP5oaRRnTSXx3pjujrRETesP9F6cZPDLUrSs,24065
|
|
10
10
|
udata/routing.py,sha256=3YQu9L81QYe4NxPSR_qyXe5WQLOgtm3sYKrkRxoxY-4,7741
|
|
11
11
|
udata/sentry.py,sha256=j_6PSHV1id21KFX1XvpQR-Ur4d24310HgIq7MynEZ2Q,2887
|
|
12
12
|
udata/settings.py,sha256=tk9VyAxg-umX3QW8hfFRsdA683IHxrEOBV-lJOWScGg,22490
|
|
@@ -97,9 +97,9 @@ udata/core/dataservices/tasks.py,sha256=DgOsTjQMx3poI0DdLPlTysRVNhf9dYNg-Zc_ut2S
|
|
|
97
97
|
udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
98
|
udata/core/dataset/actions.py,sha256=mX6xox0PiMrbcAPZ3VZsI26rfM-ciYfEXxN6sqqImKA,1222
|
|
99
99
|
udata/core/dataset/activities.py,sha256=eGxMUnC47YHxTgcls6igQ3qP7cYgwFtPfj0asCylGsI,3315
|
|
100
|
-
udata/core/dataset/api.py,sha256
|
|
101
|
-
udata/core/dataset/api_fields.py,sha256=
|
|
102
|
-
udata/core/dataset/apiv2.py,sha256=
|
|
100
|
+
udata/core/dataset/api.py,sha256=-86CS5U8UZUe6qMAVkRYwDa04OxxVOwkxSWNiMsZVzo,36538
|
|
101
|
+
udata/core/dataset/api_fields.py,sha256=k_80CjLwQS4mdDQwwissxu0_NzAxKKFb3TCKQtLGSvc,18591
|
|
102
|
+
udata/core/dataset/apiv2.py,sha256=lpQtEXvIc1ZbYI4Yy7CCUqxDWqsoCNauHlQ4OtYAofU,21576
|
|
103
103
|
udata/core/dataset/commands.py,sha256=3mKSdJ-M7ggdG29AVn77C4ouZanbYoqkTaGQoBKOp3s,3471
|
|
104
104
|
udata/core/dataset/constants.py,sha256=cwJ5v4DbSIarlMIqmUFQSAEyeV6v86NL3a0-2j0yHlw,6984
|
|
105
105
|
udata/core/dataset/csv.py,sha256=mNU5cuuNzrMgFF7Z0AKN8clsv458tpJHX1_pzAjpd-4,3653
|
|
@@ -153,7 +153,7 @@ udata/core/metrics/tasks.py,sha256=5hVSvBFF2-k_MZGn1XrzEWLgRp3TlrZJtPjX1Y_niS4,4
|
|
|
153
153
|
udata/core/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
154
154
|
udata/core/organization/activities.py,sha256=Mw4-R8Q6G745IZnCDgrj7h2ax2crGYRhZtcewSK6_Ok,1213
|
|
155
155
|
udata/core/organization/api.py,sha256=RGyxe5LRqkyk5HzsXRB9r6z_YhGVqNeKkiaEgMaOvU8,22908
|
|
156
|
-
udata/core/organization/api_fields.py,sha256=
|
|
156
|
+
udata/core/organization/api_fields.py,sha256=NXZc__i31ntun3Zt4OGt2EdpodbtQvHqzuta-TskNPY,7776
|
|
157
157
|
udata/core/organization/apiv2.py,sha256=HVZmfO-Cw9hlMPcHKAC1HnSmPXeWpBz-hqWUDl2Bhs8,2983
|
|
158
158
|
udata/core/organization/commands.py,sha256=DsRAtFDZvTciYNsUWumQWdn0jnNmKW-PwfIHUUZoBb8,1591
|
|
159
159
|
udata/core/organization/constants.py,sha256=fncNtA-vFrRM22K1Wo6iYu9DQZjzknYxH6TIYfxM9kA,563
|
|
@@ -178,10 +178,10 @@ udata/core/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
178
178
|
udata/core/post/api.py,sha256=H8IKX5x9MqcG36Y60DRxOhC00HKyhwLX5lvvSB2AO5c,4863
|
|
179
179
|
udata/core/post/constants.py,sha256=W-xjOTv0lorD-RCV0YGtK0cT_RwgYmfrC8Ff6ywH7bM,215
|
|
180
180
|
udata/core/post/factories.py,sha256=lcFe3zIadG7bc1jsydkOT7GfQX53V0x09Flpclyl6gI,619
|
|
181
|
-
udata/core/post/models.py,sha256=
|
|
181
|
+
udata/core/post/models.py,sha256=p-p-MopRiNic02fTdLR3ECOFUR_nwS2xliTM9dujo0U,3874
|
|
182
182
|
udata/core/post/permissions.py,sha256=uofU0TehhOGYyUoRXf3wuy816_D3xwMmaJbDvV336sw,83
|
|
183
183
|
udata/core/post/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
184
|
-
udata/core/post/tests/test_api.py,sha256=
|
|
184
|
+
udata/core/post/tests/test_api.py,sha256=eJWInJtMw4AHS5OpXTaW8oGLi_DdMrkWaSB3hYNQi8s,6347
|
|
185
185
|
udata/core/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
186
186
|
udata/core/reports/api.py,sha256=qrGi1DdRN4mO4nWcyG9rKMiBlw4C8UnzecJFqNAgF_8,2185
|
|
187
187
|
udata/core/reports/constants.py,sha256=LRZSX3unyqZeB4yQjK3ws_hGbJcXYk4bu1Rhnhi5DEs,1235
|
|
@@ -254,7 +254,7 @@ udata/core/topic/tasks.py,sha256=_OrPfuZ9rKENp4p4IkoyV-Yqp9bxI3nNxhpfKrbgl-w,357
|
|
|
254
254
|
udata/core/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
255
255
|
udata/core/user/activities.py,sha256=d91G45XEgoxYUJetkSjVolSM-nqmNSuM5b-6geayGE4,3338
|
|
256
256
|
udata/core/user/api.py,sha256=xO6Bsc_5IHH8DV7y2gmT-sTWhBVvIeRJOvXXv4hAoQE,13903
|
|
257
|
-
udata/core/user/api_fields.py,sha256=
|
|
257
|
+
udata/core/user/api_fields.py,sha256=lzhB380tCesjesHkXWc9CwFq4E0ThJFbYwRAHUBtNKA,5986
|
|
258
258
|
udata/core/user/apiv2.py,sha256=4eNsvJjb4ChJQFrXtVbkOtAvXEcQcQpZf8vkEbriXRA,1125
|
|
259
259
|
udata/core/user/commands.py,sha256=8dyowvylgYqdScgzVGgr61MWLshlS6-UopZGAMvp4zA,3539
|
|
260
260
|
udata/core/user/constants.py,sha256=aTluhTR2RGZ_cdG7-mkEoT5Ndbg8BNUwwzCOld0aLMY,77
|
|
@@ -371,7 +371,7 @@ udata/migrations/2021-05-27-fix-default-schema-name.py,sha256=n377iZDBGMivMvm_Ar
|
|
|
371
371
|
udata/migrations/2021-07-05-remove-unused-badges.py,sha256=KJdDgCkCCevsmZ1n-xHnUwYgMK4MmgM67UEE_8oDdAA,921
|
|
372
372
|
udata/migrations/2021-07-07-update-schema-for-community-resources.py,sha256=gj-CAQsGQ_lc7bmgZSo6sMqKLjgIYaLQShfC42Lql8w,866
|
|
373
373
|
udata/migrations/2021-08-17-follow-integrity.py,sha256=wUpsXwTCaXFdhFW3zltvswm_Z0d0RafYsEandgJJ1QQ,532
|
|
374
|
-
udata/migrations/2021-08-17-harvest-integrity.py,sha256=
|
|
374
|
+
udata/migrations/2021-08-17-harvest-integrity.py,sha256=pm9ofGmXay1DMmlB2K-VsAOPqwLrKUFvOsWC8x9Zi7w,2013
|
|
375
375
|
udata/migrations/2021-08-17-oauth2client-integrity.py,sha256=SP8xqZCIBrNfFDlDMU4zcq5JaXdJ__qm19QtsGNvQic,598
|
|
376
376
|
udata/migrations/2021-08-17-transfer-integrity.py,sha256=zXVwwS7YnsiXB7sY0fPSOXXTzJb0aRyJWVK4cT-SAcM,607
|
|
377
377
|
udata/migrations/2021-08-17-users-integrity.py,sha256=IwRsIy0iQYzSm0-ESbfu7jjemRrm0o5RVRhJstllIKY,2094
|
|
@@ -475,7 +475,7 @@ udata/tests/api/test_auth_api.py,sha256=vLyDU1hdF2QEwpNTNUgP2QPUjL0y61lzj5Viaaj9
|
|
|
475
475
|
udata/tests/api/test_base_api.py,sha256=jbT9s_YYuh-37xR98VMS5mAHHIL0g-6F_kkhFBb4E3A,2272
|
|
476
476
|
udata/tests/api/test_contact_points.py,sha256=QmnTmJZ5oIohsUH_E_wfFalRx-Fx91jO7gs7PErpLqQ,8690
|
|
477
477
|
udata/tests/api/test_dataservices_api.py,sha256=UPMH6OEEczYvebyV7thf7LjrEYFctgIm1TuJV1VC-OI,29914
|
|
478
|
-
udata/tests/api/test_datasets_api.py,sha256=
|
|
478
|
+
udata/tests/api/test_datasets_api.py,sha256=twJki_rjq8SHteOVqPsFc58pKuzyhlo2a9Lr4qTOCeI,113761
|
|
479
479
|
udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
|
|
480
480
|
udata/tests/api/test_follow_api.py,sha256=4nFXG5pZ_Hf2PJ4KEdHJX_uggjc9RpB8v0fidkAcw9I,5792
|
|
481
481
|
udata/tests/api/test_me_api.py,sha256=MiKN9P75h2HyMxepuxt2SiLs3Yhgl22iQXKbvTR42sg,13796
|
|
@@ -507,7 +507,7 @@ udata/tests/dataset/test_dataset_actions.py,sha256=8d-6AUKCt3Nnb_uEaztV0BzNYFDyq
|
|
|
507
507
|
udata/tests/dataset/test_dataset_commands.py,sha256=e-tLIveg_Vp7nfOd5VhcPSiUQZ-VBv2no2lAu-2j6BE,820
|
|
508
508
|
udata/tests/dataset/test_dataset_events.py,sha256=tKCQ55y_pc0wOKv2B2iej5dDxWalguU9FLtr6J2y8hE,3682
|
|
509
509
|
udata/tests/dataset/test_dataset_model.py,sha256=YWhQ6RxVdgUrQbtvwATzypyl8XyNpdDjHDetyK37chU,35795
|
|
510
|
-
udata/tests/dataset/test_dataset_rdf.py,sha256=
|
|
510
|
+
udata/tests/dataset/test_dataset_rdf.py,sha256=RVIib5ah3B_wpTj9swbx4XSzUGyYj9_6kP_n416bnSQ,58782
|
|
511
511
|
udata/tests/dataset/test_dataset_recommendations.py,sha256=UMwAsLHs6_XA1vp7-lnTjaPOc9E6zQYqw9VIuSCNUtk,7102
|
|
512
512
|
udata/tests/dataset/test_dataset_tasks.py,sha256=6YmDBJUv3pIPNFj6DvY7FLsa4k7XxGeQ7BgOLrJOeTY,4564
|
|
513
513
|
udata/tests/dataset/test_resource_preview.py,sha256=387FEdNHWZyEeOlmSETMIFlnhVuKQ-U4o2RkWgxXwik,2208
|
|
@@ -580,9 +580,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=n7ZHvruSL9hIPoSl4aCkGeC52LZYeg
|
|
|
580
580
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=24CsHDZ84nqTMr-cOvOZ-LNYsokLQNyQchI41o3Cq9M,49765
|
|
581
581
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=pw3gsvr8lPQJZvX9Jo8ymu59I3L6-rrpX2Fqy0Nu5r4,20441
|
|
582
582
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=1h8akWRpcQ1uD5zezqjp-Q-gAld5_93MkJL4BRlqKjQ,54738
|
|
583
|
-
udata-14.5.1.
|
|
584
|
-
udata-14.5.1.
|
|
585
|
-
udata-14.5.1.
|
|
586
|
-
udata-14.5.1.
|
|
587
|
-
udata-14.5.1.
|
|
588
|
-
udata-14.5.1.
|
|
583
|
+
udata-14.5.1.dev11.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
584
|
+
udata-14.5.1.dev11.dist-info/METADATA,sha256=trjyuqYYSgV-Z_WlafWqiw-iwiQu4DG3Or0AOGHXajo,4359
|
|
585
|
+
udata-14.5.1.dev11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
586
|
+
udata-14.5.1.dev11.dist-info/entry_points.txt,sha256=XwrEzP-n_6CKnwTsrNHzyCTWbMwg2FkvxVVB686f_C0,476
|
|
587
|
+
udata-14.5.1.dev11.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
|
|
588
|
+
udata-14.5.1.dev11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|