udata 10.0.5.dev32957__py2.py3-none-any.whl → 10.0.6__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/commands/dcat.py +13 -4
- udata/core/dataservices/rdf.py +4 -6
- udata/core/dataservices/tasks.py +2 -4
- udata/core/dataset/tasks.py +10 -1
- udata/core/organization/models.py +1 -1
- udata/core/post/api.py +15 -5
- udata/core/post/tests/test_api.py +16 -2
- udata/harvest/tasks.py +3 -2
- udata/tests/dataservice/test_dataservice_tasks.py +5 -0
- udata/tests/dataset/test_dataset_tasks.py +19 -3
- udata/tests/organization/test_organization_model.py +6 -0
- udata/tests/test_dcat_commands.py +26 -0
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/METADATA +13 -2
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/RECORD +19 -18
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/LICENSE +0 -0
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/WHEEL +0 -0
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/entry_points.txt +0 -0
- {udata-10.0.5.dev32957.dist-info → udata-10.0.6.dist-info}/top_level.txt +0 -0
udata/__init__.py
CHANGED
udata/commands/dcat.py
CHANGED
|
@@ -2,7 +2,8 @@ import logging
|
|
|
2
2
|
|
|
3
3
|
import click
|
|
4
4
|
import mongoengine
|
|
5
|
-
from rdflib import Graph
|
|
5
|
+
from rdflib import Graph, URIRef
|
|
6
|
+
from rdflib.namespace import RDF
|
|
6
7
|
|
|
7
8
|
from udata.commands import cli, cyan, echo, green, magenta, yellow
|
|
8
9
|
from udata.core.dataset.factories import DatasetFactory
|
|
@@ -12,7 +13,8 @@ from udata.harvest.backends.dcat import (
|
|
|
12
13
|
CswIso19139DcatBackend,
|
|
13
14
|
DcatBackend,
|
|
14
15
|
)
|
|
15
|
-
from udata.
|
|
16
|
+
from udata.harvest.models import HarvestItem
|
|
17
|
+
from udata.rdf import DCAT, DCT, namespace_manager
|
|
16
18
|
|
|
17
19
|
log = logging.getLogger(__name__)
|
|
18
20
|
|
|
@@ -61,15 +63,22 @@ def parse_url(url, csw, iso, quiet=False, rid=""):
|
|
|
61
63
|
backend.job = MockJob()
|
|
62
64
|
format = backend.get_format()
|
|
63
65
|
echo(yellow("Detected format: {}".format(format)))
|
|
64
|
-
graphs = backend.
|
|
66
|
+
graphs = backend.walk_graph(url, format)
|
|
65
67
|
|
|
66
68
|
# serialize/unserialize graph like in the job mechanism
|
|
67
69
|
graph = Graph(namespace_manager=namespace_manager)
|
|
68
|
-
for subgraph in graphs:
|
|
70
|
+
for page_number, subgraph in graphs:
|
|
69
71
|
serialized = subgraph.serialize(format=format, indent=None)
|
|
70
72
|
_subgraph = Graph(namespace_manager=namespace_manager)
|
|
71
73
|
graph += _subgraph.parse(data=serialized, format=format)
|
|
72
74
|
|
|
75
|
+
for node in subgraph.subjects(RDF.type, DCAT.Dataset):
|
|
76
|
+
identifier = subgraph.value(node, DCT.identifier)
|
|
77
|
+
kwargs = {"nid": str(node), "page": page_number}
|
|
78
|
+
kwargs["type"] = "uriref" if isinstance(node, URIRef) else "blank"
|
|
79
|
+
item = HarvestItem(remote_id=str(identifier), kwargs=kwargs)
|
|
80
|
+
backend.job.items.append(item)
|
|
81
|
+
|
|
73
82
|
for item in backend.job.items:
|
|
74
83
|
if not rid or rid in item.remote_id:
|
|
75
84
|
echo(magenta("Processing item {}".format(item.remote_id)))
|
udata/core/dataservices/rdf.py
CHANGED
|
@@ -156,12 +156,10 @@ def dataservice_to_rdf(dataservice: Dataservice, graph=None):
|
|
|
156
156
|
|
|
157
157
|
if is_hvd:
|
|
158
158
|
# We also want to automatically add any HVD category tags of the dataservice's datasets.
|
|
159
|
-
for
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if tag in TAG_TO_EU_HVD_CATEGORIES:
|
|
164
|
-
hvd_category_tags.add(tag)
|
|
159
|
+
dataset_ids = [dat.id for dat in dataservice.datasets]
|
|
160
|
+
for tag in TAG_TO_EU_HVD_CATEGORIES:
|
|
161
|
+
if Dataset.objects(id__in=dataset_ids, tags="hvd").filter(tags=tag).first():
|
|
162
|
+
hvd_category_tags.add(tag)
|
|
165
163
|
for tag in hvd_category_tags:
|
|
166
164
|
d.add(DCATAP.hvdCategory, URIRef(TAG_TO_EU_HVD_CATEGORIES[tag]))
|
|
167
165
|
|
udata/core/dataservices/tasks.py
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
from celery.utils.log import get_task_logger
|
|
2
2
|
|
|
3
3
|
from udata.core.dataservices.models import Dataservice
|
|
4
|
-
|
|
5
|
-
# from udata.harvest.models import HarvestJob
|
|
4
|
+
from udata.harvest.models import HarvestJob
|
|
6
5
|
from udata.models import Discussion, Follow, Transfer
|
|
7
6
|
from udata.tasks import job
|
|
8
7
|
|
|
@@ -18,8 +17,7 @@ def purge_dataservices(self):
|
|
|
18
17
|
# Remove discussions
|
|
19
18
|
Discussion.objects(subject=dataservice).delete()
|
|
20
19
|
# Remove HarvestItem references
|
|
21
|
-
|
|
22
|
-
# HarvestJob.objects(items__dataservice=dataservice).update(set__items__S__dataservice=None)
|
|
20
|
+
HarvestJob.objects(items__dataservice=dataservice).update(set__items__S__dataservice=None)
|
|
23
21
|
# Remove associated Transfers
|
|
24
22
|
Transfer.objects(subject=dataservice).delete()
|
|
25
23
|
# Remove dataservice
|
udata/core/dataset/tasks.py
CHANGED
|
@@ -48,6 +48,11 @@ def purge_datasets(self):
|
|
|
48
48
|
datasets = topic.datasets
|
|
49
49
|
datasets.remove(dataset)
|
|
50
50
|
topic.update(datasets=datasets)
|
|
51
|
+
# Remove dataservices related dataset
|
|
52
|
+
for dataservice in Dataservice.objects(datasets=dataset):
|
|
53
|
+
datasets = dataservice.datasets
|
|
54
|
+
datasets.remove(dataset)
|
|
55
|
+
dataservice.update(datasets=datasets)
|
|
51
56
|
# Remove HarvestItem references
|
|
52
57
|
HarvestJob.objects(items__dataset=dataset).update(set__items__S__dataset=None)
|
|
53
58
|
# Remove associated Transfers
|
|
@@ -123,7 +128,11 @@ def send_frequency_reminder(self):
|
|
|
123
128
|
def update_datasets_reuses_metrics(self):
|
|
124
129
|
all_datasets = Dataset.objects.visible().timeout(False)
|
|
125
130
|
for dataset in all_datasets:
|
|
126
|
-
|
|
131
|
+
try:
|
|
132
|
+
dataset.count_reuses()
|
|
133
|
+
except Exception as e:
|
|
134
|
+
log.error(f"Error for dataset {dataset} during reuses metrics update: {e}")
|
|
135
|
+
continue
|
|
127
136
|
|
|
128
137
|
|
|
129
138
|
def get_queryset(model_cls):
|
|
@@ -117,7 +117,7 @@ class Organization(WithMetrics, OrganizationBadgeMixin, db.Datetimed, db.Documen
|
|
|
117
117
|
max_length=255, required=True, populate_from="name", update=True, follow=True
|
|
118
118
|
)
|
|
119
119
|
description = db.StringField(required=True)
|
|
120
|
-
url = db.
|
|
120
|
+
url = db.URLField()
|
|
121
121
|
image_url = db.StringField()
|
|
122
122
|
logo = db.ImageField(
|
|
123
123
|
fs=avatars, basename=default_image_basename, max_size=LOGO_MAX_SIZE, thumbnails=LOGO_SIZES
|
udata/core/post/api.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
2
|
|
|
3
3
|
from udata.api import API, api, fields
|
|
4
|
+
from udata.auth import Permission as AdminPermission
|
|
4
5
|
from udata.auth import admin_permission
|
|
5
6
|
from udata.core.dataset.api_fields import dataset_fields
|
|
6
7
|
from udata.core.reuse.models import Reuse
|
|
@@ -60,6 +61,13 @@ parser = api.page_parser()
|
|
|
60
61
|
parser.add_argument(
|
|
61
62
|
"sort", type=str, default="-created_at", location="args", help="The sorting attribute"
|
|
62
63
|
)
|
|
64
|
+
parser.add_argument(
|
|
65
|
+
"with_drafts",
|
|
66
|
+
type=bool,
|
|
67
|
+
default=False,
|
|
68
|
+
location="args",
|
|
69
|
+
help="`True` also returns the unpublished posts (only for super-admins)",
|
|
70
|
+
)
|
|
63
71
|
|
|
64
72
|
|
|
65
73
|
@ns.route("/", endpoint="posts")
|
|
@@ -70,11 +78,13 @@ class PostsAPI(API):
|
|
|
70
78
|
def get(self):
|
|
71
79
|
"""List all posts"""
|
|
72
80
|
args = parser.parse_args()
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
|
|
82
|
+
posts = Post.objects()
|
|
83
|
+
|
|
84
|
+
if not (AdminPermission().can() and args["with_drafts"]):
|
|
85
|
+
posts = posts.published()
|
|
86
|
+
|
|
87
|
+
return posts.order_by(args["sort"]).paginate(args["page"], args["page_size"])
|
|
78
88
|
|
|
79
89
|
@api.doc("create_post")
|
|
80
90
|
@api.secure(admin_permission)
|
|
@@ -15,14 +15,28 @@ class PostsAPITest:
|
|
|
15
15
|
|
|
16
16
|
def test_post_api_list(self, api):
|
|
17
17
|
"""It should fetch a post list from the API"""
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
PostFactory.create_batch(3)
|
|
19
|
+
draft = PostFactory(published=None)
|
|
20
20
|
|
|
21
21
|
response = api.get(url_for("api.posts"))
|
|
22
22
|
assert200(response)
|
|
23
23
|
# Response should not contain the unpublished post
|
|
24
24
|
assert len(response.json["data"]) == 3
|
|
25
25
|
|
|
26
|
+
api.login(AdminFactory())
|
|
27
|
+
|
|
28
|
+
response = api.get(url_for("api.posts"))
|
|
29
|
+
assert200(response)
|
|
30
|
+
|
|
31
|
+
assert len(response.json["data"]) == 3
|
|
32
|
+
assert str(draft.id) not in [post["id"] for post in response.json["data"]]
|
|
33
|
+
|
|
34
|
+
response = api.get(url_for("api.posts", with_drafts=True))
|
|
35
|
+
assert200(response)
|
|
36
|
+
|
|
37
|
+
assert len(response.json["data"]) == 4
|
|
38
|
+
assert str(draft.id) in [post["id"] for post in response.json["data"]]
|
|
39
|
+
|
|
26
40
|
def test_post_api_get(self, api):
|
|
27
41
|
"""It should fetch a post from the API"""
|
|
28
42
|
post = PostFactory()
|
udata/harvest/tasks.py
CHANGED
|
@@ -13,8 +13,9 @@ def harvest(self, ident):
|
|
|
13
13
|
log.info('Launching harvest job for source "%s"', ident)
|
|
14
14
|
|
|
15
15
|
source = HarvestSource.get(ident)
|
|
16
|
-
if source.deleted:
|
|
17
|
-
|
|
16
|
+
if source.deleted or not source.active:
|
|
17
|
+
log.info('Ignoring inactive or deleted source "%s"', ident)
|
|
18
|
+
return # Ignore deleted and inactive sources
|
|
18
19
|
Backend = backends.get(current_app, source.backend)
|
|
19
20
|
backend = Backend(source)
|
|
20
21
|
|
|
@@ -3,6 +3,8 @@ import pytest
|
|
|
3
3
|
from udata.core.dataservices import tasks
|
|
4
4
|
from udata.core.dataservices.models import Dataservice
|
|
5
5
|
from udata.core.user.factories import UserFactory
|
|
6
|
+
from udata.harvest.models import HarvestItem, HarvestJob
|
|
7
|
+
from udata.harvest.tests.factories import HarvestJobFactory
|
|
6
8
|
from udata.models import Discussion, Follow, Message, Transfer
|
|
7
9
|
from udata.utils import faker
|
|
8
10
|
|
|
@@ -34,9 +36,12 @@ def test_purge_dataservices():
|
|
|
34
36
|
|
|
35
37
|
follower = Follow.objects.create(follower=user, following=dataservices[0])
|
|
36
38
|
|
|
39
|
+
HarvestJobFactory(items=[HarvestItem(dataservice=dataservices[0])])
|
|
40
|
+
|
|
37
41
|
tasks.purge_dataservices()
|
|
38
42
|
|
|
39
43
|
assert Dataservice.objects.count() == 1
|
|
40
44
|
assert Transfer.objects.filter(id=transfer.id).count() == 0
|
|
41
45
|
assert Discussion.objects.filter(id=discussion.id).count() == 0
|
|
42
46
|
assert Follow.objects.filter(id=follower.id).count() == 0
|
|
47
|
+
assert HarvestJob.objects.filter(items__dataservice=dataservices[0].id).count() == 0
|
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from udata.core.dataset import tasks
|
|
4
|
-
|
|
5
3
|
# Those imports seem mandatory for the csv adapters to be registered.
|
|
6
4
|
# This might be because of the decorator mechanism.
|
|
5
|
+
from udata.core.dataservices.models import Dataservice
|
|
6
|
+
from udata.core.dataset import tasks
|
|
7
7
|
from udata.core.dataset.csv import DatasetCsvAdapter, ResourcesCsvAdapter # noqa
|
|
8
8
|
from udata.core.dataset.factories import CommunityResourceFactory, DatasetFactory
|
|
9
|
+
from udata.core.discussions.factories import DiscussionFactory
|
|
9
10
|
from udata.core.organization.csv import OrganizationCsvAdapter # noqa
|
|
10
11
|
from udata.core.reuse.csv import ReuseCsvAdapter # noqa
|
|
11
12
|
from udata.core.tags.csv import TagCsvAdapter # noqa
|
|
12
13
|
from udata.core.user.factories import UserFactory
|
|
13
14
|
from udata.harvest.csv import HarvestSourceCsvAdapter # noqa
|
|
14
|
-
from udata.models import
|
|
15
|
+
from udata.harvest.models import HarvestItem, HarvestJob
|
|
16
|
+
from udata.harvest.tests.factories import HarvestJobFactory
|
|
17
|
+
from udata.models import CommunityResource, Dataset, Discussion, Follow, Topic, Transfer
|
|
15
18
|
|
|
16
19
|
pytestmark = pytest.mark.usefixtures("clean_db")
|
|
17
20
|
|
|
@@ -32,6 +35,14 @@ def test_purge_datasets():
|
|
|
32
35
|
comment="comment",
|
|
33
36
|
)
|
|
34
37
|
|
|
38
|
+
discussion = DiscussionFactory(subject=datasets[0])
|
|
39
|
+
|
|
40
|
+
follower = Follow.objects.create(follower=user, following=datasets[0])
|
|
41
|
+
|
|
42
|
+
HarvestJobFactory(items=[HarvestItem(dataset=datasets[0])])
|
|
43
|
+
|
|
44
|
+
Dataservice.objects.create(title="test", datasets=datasets)
|
|
45
|
+
|
|
35
46
|
tasks.purge_datasets()
|
|
36
47
|
|
|
37
48
|
assert Transfer.objects.filter(id=transfer.id).count() == 0
|
|
@@ -39,6 +50,11 @@ def test_purge_datasets():
|
|
|
39
50
|
topic = Topic.objects(name="test topic").first()
|
|
40
51
|
assert topic.datasets[0] == datasets[1]
|
|
41
52
|
|
|
53
|
+
assert Discussion.objects.filter(id=discussion.id).count() == 0
|
|
54
|
+
assert Follow.objects.filter(id=follower.id).count() == 0
|
|
55
|
+
assert HarvestJob.objects.filter(items__dataset=datasets[0].id).count() == 0
|
|
56
|
+
assert Dataservice.objects.filter(datasets=datasets[0].id).count() == 0
|
|
57
|
+
|
|
42
58
|
|
|
43
59
|
def test_purge_datasets_community():
|
|
44
60
|
dataset = Dataset.objects.create(title="delete me", deleted="2016-01-01")
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
2
|
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
3
5
|
import udata.core.organization.constants as org_constants
|
|
4
6
|
from udata.core.dataservices.factories import DataserviceFactory
|
|
5
7
|
from udata.core.dataservices.models import Dataservice
|
|
@@ -81,6 +83,10 @@ class OrganizationModelTest(TestCase, DBTestMixin):
|
|
|
81
83
|
assert len(associations) == 1
|
|
82
84
|
assert org_certified_association in associations
|
|
83
85
|
|
|
86
|
+
def test_organization__url(self):
|
|
87
|
+
with pytest.raises(db.ValidationError):
|
|
88
|
+
OrganizationFactory(url="not-an-url")
|
|
89
|
+
|
|
84
90
|
|
|
85
91
|
class OrganizationBadgeTest(DBTestMixin, TestCase):
|
|
86
92
|
# Model badges can be extended in plugins, for example in udata-front
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
@pytest.mark.usefixtures("clean_db")
|
|
5
|
+
class ParseUrlCommandTest:
|
|
6
|
+
def test_parse_url(self, cli, requests_mock, caplog) -> None:
|
|
7
|
+
logs = []
|
|
8
|
+
|
|
9
|
+
def mock_echo(message: str) -> None:
|
|
10
|
+
logs.append(message)
|
|
11
|
+
|
|
12
|
+
local_file: str = "./udata/harvest/tests/dcat/sig.oreme.rdf"
|
|
13
|
+
# This mock_url is to make requests' url parsing happy, but the mock will return the local file content.
|
|
14
|
+
mock_url = "https://example.com/sig.oreme.rdf"
|
|
15
|
+
with open(local_file, "r") as test_rdf_file:
|
|
16
|
+
requests_mock.get(mock_url, text=test_rdf_file.read())
|
|
17
|
+
requests_mock.head(mock_url, text="sig.oreme.rdf")
|
|
18
|
+
dataset_id = "0437a976-cff1-4fa6-807a-c23006df2f8f"
|
|
19
|
+
result = cli(
|
|
20
|
+
"dcat",
|
|
21
|
+
"parse-url",
|
|
22
|
+
mock_url,
|
|
23
|
+
"--rid",
|
|
24
|
+
dataset_id,
|
|
25
|
+
)
|
|
26
|
+
assert "Dataset is valid" in result.stdout
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 10.0.
|
|
3
|
+
Version: 10.0.6
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -138,7 +138,18 @@ It is collectively taken care of by members of the
|
|
|
138
138
|
|
|
139
139
|
# Changelog
|
|
140
140
|
|
|
141
|
-
##
|
|
141
|
+
## 10.0.6 (2024-12-19)
|
|
142
|
+
|
|
143
|
+
- Ignore inactive sources at harvest time [#3226](https://github.com/opendatateam/udata/pull/3226)
|
|
144
|
+
- If some harvest sources were marked inactive by mistake, they won't get executed anymore
|
|
145
|
+
- Organization url is now a URLField and should be a valid URL [#3227](https://github.com/opendatateam/udata/pull/3227)
|
|
146
|
+
- Fix the `parse-url` command [#3225](https://github.com/opendatateam/udata/pull/3225)
|
|
147
|
+
- Add `with_drafts` argument to posts API [#3229](https://github.com/opendatateam/udata/pull/3229)
|
|
148
|
+
- Fix failing dataset save in update reuses metrics [#3230](https://github.com/opendatateam/udata/pull/3230)
|
|
149
|
+
- Fix catalog RDF by preventing memory increase on getting dataservice hvd tags [#3231](https://github.com/opendatateam/udata/pull/3231)
|
|
150
|
+
- Update purge tasks [#3167](https://github.com/opendatateam/udata/pull/3167)
|
|
151
|
+
|
|
152
|
+
## 10.0.5 (2024-12-09)
|
|
142
153
|
|
|
143
154
|
- Add list transfers endpoint / Save user requesting the transfer [#3211](https://github.com/opendatateam/udata/pull/3211)
|
|
144
155
|
- Add dataservice csv adapter [#3208](https://github.com/opendatateam/udata/pull/3208)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
tasks/__init__.py,sha256=nubUI6ljumym4uv6NvAJEkWHtsdurFpEGSq-AxDWYDM,8153
|
|
2
2
|
tasks/helpers.py,sha256=70fS9tI_m0DTWmKx9Zl5-LG-nxdz_ZaPyvvsFkN2r48,1091
|
|
3
|
-
udata/__init__.py,sha256=
|
|
3
|
+
udata/__init__.py,sha256=SG6Muh9AMKYKLThQFTKdejdA5_nVI0AHEnolAR3JVLY,98
|
|
4
4
|
udata/api_fields.py,sha256=jXnA1BMmkobTAHI0_d6Qlj3o7o58T7I-Vc5FNGrm8Ag,29943
|
|
5
5
|
udata/app.py,sha256=xjk2D3EgboYBpTwBwdIxd2klt2yMoWMyCrkry5fz0LA,7292
|
|
6
6
|
udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
|
|
@@ -41,7 +41,7 @@ udata/auth/views.py,sha256=PX4bRHATNzPHWu01_KC3mgcZpAEahdcDAJVBhy4oL4Y,6110
|
|
|
41
41
|
udata/commands/__init__.py,sha256=Won_rW_hIU9TA3o4oNe6kI46l1fnDBM_oW0Hc1XS9F8,7711
|
|
42
42
|
udata/commands/cache.py,sha256=bLdrf_fCWFYX9ULlL2ADsZRwijkI4pArsJxfx24OivM,341
|
|
43
43
|
udata/commands/db.py,sha256=x5ui77hoT-JcECneBhhXZtpH4g65gaj7SyeM0bnORhA,14694
|
|
44
|
-
udata/commands/dcat.py,sha256=
|
|
44
|
+
udata/commands/dcat.py,sha256=f6jT2AGZem-w1CaRH_ahfWB9A4oCDvjG13tPmBpeCqw,3910
|
|
45
45
|
udata/commands/fixtures.py,sha256=oZkZPqpBNTjYQwNwODfi-bZyRZIjBIG-gBhpNaaAiNc,9221
|
|
46
46
|
udata/commands/images.py,sha256=0rVojLik5DYgJ6W4uNEfMP2g2QUU2V761tj3z6lo8no,2050
|
|
47
47
|
udata/commands/info.py,sha256=A5WMo3_N_rlt3cySVJrZqKWrbIowX97ZLKMIFQE5178,1545
|
|
@@ -86,9 +86,9 @@ udata/core/dataservices/csv.py,sha256=pL3j8-_KZWJaX1xFyILXt9wBtXn9Cmov5FUQgd0lNh
|
|
|
86
86
|
udata/core/dataservices/factories.py,sha256=LDk8vvG0zhW8J-ZX5LoJQDU13pqeIyjQ05muuMro_eA,876
|
|
87
87
|
udata/core/dataservices/models.py,sha256=lTcC0BqnF7bbFi1S2CZ8Qnk1Fk3TjWoHrvheFB5qSg4,9474
|
|
88
88
|
udata/core/dataservices/permissions.py,sha256=98zM_R4v2ZtRubflB7ajaVQz-DVc-pZBMgtKUYy34oI,169
|
|
89
|
-
udata/core/dataservices/rdf.py,sha256=
|
|
89
|
+
udata/core/dataservices/rdf.py,sha256=mYJc7qH2f8nb9k-mF-A1sIP9rwgUyfQn4RIAO9sxtOE,6735
|
|
90
90
|
udata/core/dataservices/search.py,sha256=htjh3sq3tDuD2qwgRgZsW6ClrHLF6hMwYO4nfBO0Hr4,4171
|
|
91
|
-
udata/core/dataservices/tasks.py,sha256=
|
|
91
|
+
udata/core/dataservices/tasks.py,sha256=d2tG1l6u8-eUKUYBOgnCsQLbLmLgJXU-DOzZWhhL6Qg,897
|
|
92
92
|
udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
udata/core/dataset/actions.py,sha256=mX6xox0PiMrbcAPZ3VZsI26rfM-ciYfEXxN6sqqImKA,1222
|
|
94
94
|
udata/core/dataset/activities.py,sha256=v8k1jwhdx62Z2ARZq8Q-x86OWSsBK99hRloPl74OCgA,1502
|
|
@@ -108,7 +108,7 @@ udata/core/dataset/preview.py,sha256=IwCqiNTjjXbtA_SSKF52pwnzKKEz0GyYM95QNn2Dkog
|
|
|
108
108
|
udata/core/dataset/rdf.py,sha256=TGpwjsFF9hpiC3fxcF7Rej97bJjlzRy2vXbisn-a90A,28271
|
|
109
109
|
udata/core/dataset/search.py,sha256=E7LqHBnq3sMefvmLwTpiw-Ovem2a3NJswHesRjctboE,5627
|
|
110
110
|
udata/core/dataset/signals.py,sha256=WN4sV-lJlNsRkhcnhoy0SYJvCoYmK_5QFYZd1u-h4gs,161
|
|
111
|
-
udata/core/dataset/tasks.py,sha256=
|
|
111
|
+
udata/core/dataset/tasks.py,sha256=jG6U7cwGywhLK-MqUrvbZ1WLl_NLApiThtxmsckGzP8,10009
|
|
112
112
|
udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
113
113
|
udata/core/discussions/actions.py,sha256=kjdBLDIeu0yWTSxQGgOpN1WoxUqbMygn4SiBk_S9T5I,1051
|
|
114
114
|
udata/core/discussions/api.py,sha256=5yMdKeWp0c9H2ipy5bXoMf82r3ULMIARhvuIdM-XJp0,9446
|
|
@@ -150,7 +150,7 @@ udata/core/organization/csv.py,sha256=j6BJvXE8_6c-IWOPOg0C-j9KiCushoG1FQxzKVBDj2
|
|
|
150
150
|
udata/core/organization/factories.py,sha256=g8ubBcz79xbjvpunZ02IDOakFg1KE6cXjNkE9vFyFAc,624
|
|
151
151
|
udata/core/organization/forms.py,sha256=tscDb1_yOpbTx3ahl8ttA7oDkX9jIyzLc4gOf6WbN3s,3552
|
|
152
152
|
udata/core/organization/metrics.py,sha256=90romzr-FhnPKh-6UHBJ1Af2loDa4-8I1iZEgztA160,1062
|
|
153
|
-
udata/core/organization/models.py,sha256=
|
|
153
|
+
udata/core/organization/models.py,sha256=Nu7koTyCjdOtrPczI-UXw0OdKDaduSXYOYqYSIUPrHs,9362
|
|
154
154
|
udata/core/organization/notifications.py,sha256=i_36-l2y7fOGmnBmr5NDWmGGmrGRaCWbU-6XS4c2wQs,917
|
|
155
155
|
udata/core/organization/permissions.py,sha256=GD-9TMtRppVCPaC1ysXYrONvGJV-ArzAOXm2XMKf9yo,1256
|
|
156
156
|
udata/core/organization/rdf.py,sha256=TF2c85MHAu-TRiHNLxqV_Pw5z6sCgZrNszF9SYspQpk,1936
|
|
@@ -158,14 +158,14 @@ udata/core/organization/search.py,sha256=5XMZn7xehkTV4X9NvGys_1WyHDGlUVpCQ_uJ3oy
|
|
|
158
158
|
udata/core/organization/signals.py,sha256=Ft1MBU9S41uxFN-rUrKHhiwedR1OYGv-ncuroKg8orY,488
|
|
159
159
|
udata/core/organization/tasks.py,sha256=2Pd9ixeKNd7BGxBHrHYbR9AelhqkflX3ocnGgtoa8Uc,5641
|
|
160
160
|
udata/core/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
161
|
-
udata/core/post/api.py,sha256=
|
|
161
|
+
udata/core/post/api.py,sha256=Zz-CehNj0_OCOabu2pD8eg0gILdtykIjYhik9rDCbE4,5761
|
|
162
162
|
udata/core/post/constants.py,sha256=W-xjOTv0lorD-RCV0YGtK0cT_RwgYmfrC8Ff6ywH7bM,215
|
|
163
163
|
udata/core/post/factories.py,sha256=lcFe3zIadG7bc1jsydkOT7GfQX53V0x09Flpclyl6gI,619
|
|
164
164
|
udata/core/post/forms.py,sha256=gY4HhteFkZr3u4EoQ5QNEHMOTtNNiEKHyehVXKYcm3Y,963
|
|
165
165
|
udata/core/post/models.py,sha256=Bd3Xr4r4LXEGXKgA1hZCueg_rBHgvQuusaZjatZzH-s,2062
|
|
166
166
|
udata/core/post/permissions.py,sha256=uofU0TehhOGYyUoRXf3wuy816_D3xwMmaJbDvV336sw,83
|
|
167
167
|
udata/core/post/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
|
-
udata/core/post/tests/test_api.py,sha256=
|
|
168
|
+
udata/core/post/tests/test_api.py,sha256=T6kyMByLSP7eOZLYJM3Rkz8hMJPM5MeUK4ApICADx3E,4399
|
|
169
169
|
udata/core/reports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
170
|
udata/core/reports/api.py,sha256=qbU78bzNcGcxkrWsbeU9kdyFKbU9dz_8AIo6h2IJLCg,1690
|
|
171
171
|
udata/core/reports/constants.py,sha256=LRZSX3unyqZeB4yQjK3ws_hGbJcXYk4bu1Rhnhi5DEs,1235
|
|
@@ -289,7 +289,7 @@ udata/harvest/forms.py,sha256=eDDyrK0VuYgCsYo0HY0P6--RDVpWBCuTwktjFiwPQhw,4252
|
|
|
289
289
|
udata/harvest/models.py,sha256=QBDcdu3N5QILolmiisx9RN5xzfD9tPC06cXO8z5XF4A,6113
|
|
290
290
|
udata/harvest/notifications.py,sha256=8WkHtD68v6rfZC6jCmAuuuRp4NN6q71ZkksZU5m9oJc,867
|
|
291
291
|
udata/harvest/signals.py,sha256=3AhFHMPIFH5vz01NX5ycR_RWH14MXFWnCT6__LSa-QI,1338
|
|
292
|
-
udata/harvest/tasks.py,sha256=
|
|
292
|
+
udata/harvest/tasks.py,sha256=ddJtvE0s-kAYt27-rKH6n8U8vKD8qKczlJtdBJzMUns,1718
|
|
293
293
|
udata/harvest/backends/__init__.py,sha256=QjoFfBJfpw_xgk5YYWI1SgKJOMEmTMlxSfW79GNkSTI,459
|
|
294
294
|
udata/harvest/backends/base.py,sha256=gq39-0SN3DSXfXIv4qjhIkEmPkV-2g6z53V0FikooSs,16413
|
|
295
295
|
udata/harvest/backends/dcat.py,sha256=wbznPWCS9UJzpCWPAnmeUhUCREJg-yoQAHtEfr88RqU,15963
|
|
@@ -590,6 +590,7 @@ udata/tests/schemas.json,sha256=szM1jDpkogfOG4xWbjIGjLgG8l9-ZyE3JKQtecJyD1E,4990
|
|
|
590
590
|
udata/tests/test_activity.py,sha256=x-pDK6VW9wAG0uxYRZQ3DWTRjfCU729iaMGMJb1rWYU,3195
|
|
591
591
|
udata/tests/test_api_fields.py,sha256=4sDs40CtdarVQHzAdNIeRCOYughYsTlPehTY18jaq58,11293
|
|
592
592
|
udata/tests/test_cors.py,sha256=b_pyxKeIyqhnsXxXryPf4d0V0QxaLQ1P_VjY89Q_j3g,3233
|
|
593
|
+
udata/tests/test_dcat_commands.py,sha256=fDAnAjkja8AXw_qzaAWnVTgglkBAvK2mjPMHUCtqrrU,919
|
|
593
594
|
udata/tests/test_discussions.py,sha256=Qo7nhIUY7YAATZfWl5Mgo0XhngGwFULgqEoMhsHZtFE,33587
|
|
594
595
|
udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
|
|
595
596
|
udata/tests/test_linkchecker.py,sha256=W8jrwKYXM8wWXZFjiaBwpWGRBhZ8bsSHGHzL9voDN7U,10218
|
|
@@ -636,7 +637,7 @@ udata/tests/data/image.jpg,sha256=hdmpaCjOhmAAfNGuTqWKEjv7IC4GXJx-nP_rT274hc8,33
|
|
|
636
637
|
udata/tests/data/image.png,sha256=GAqXz7w_u7CapODIUF45UpVddmqelnGQkcrwKZq3448,266488
|
|
637
638
|
udata/tests/dataservice/test_csv_adapter.py,sha256=HSnw7HTtzSj0UItKzSvKp3PbwGEni4LGpQ5T63w50MQ,1867
|
|
638
639
|
udata/tests/dataservice/test_dataservice_rdf.py,sha256=VLFgdclFoIhmctfMEgTxvuNlRxcI1yDkZWE-lbEYGdQ,2984
|
|
639
|
-
udata/tests/dataservice/test_dataservice_tasks.py,sha256=
|
|
640
|
+
udata/tests/dataservice/test_dataservice_tasks.py,sha256=9XUoYLb_p3dzmgLfswaXjMG2civP0i1kzzP4VdJWE0k,1614
|
|
640
641
|
udata/tests/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
641
642
|
udata/tests/dataset/test_csv_adapter.py,sha256=CSAHEur5-183fRsD_cBgsHnLuohn0DOb9zkVT1q0PNo,3866
|
|
642
643
|
udata/tests/dataset/test_dataset_actions.py,sha256=bgDjVYjOvu3sX_FCTCzf2snZYSprsqor2nAhIVuokSs,722
|
|
@@ -644,7 +645,7 @@ udata/tests/dataset/test_dataset_commands.py,sha256=zMPJG2wYwKBee2zI65kmboxf59Zq
|
|
|
644
645
|
udata/tests/dataset/test_dataset_events.py,sha256=hlrpoOiBbnX_COUI9Pzdqlp45GZZDqu5piwupbnPiTI,3601
|
|
645
646
|
udata/tests/dataset/test_dataset_model.py,sha256=VPF17L5sMpKcFo7JNKmgXnKGAgzy1Ejo470avn3bdcQ,30874
|
|
646
647
|
udata/tests/dataset/test_dataset_rdf.py,sha256=TuKomK0SWqO8R1hQkV8iA3w4YvReO0vVHPfBqKP_oaU,36750
|
|
647
|
-
udata/tests/dataset/test_dataset_tasks.py,sha256=
|
|
648
|
+
udata/tests/dataset/test_dataset_tasks.py,sha256=n1W2Pg0ez02d66zQG3N93kh7dpR2yLMRDqUI6PnPaI0,3088
|
|
648
649
|
udata/tests/dataset/test_resource_preview.py,sha256=fp9mSL7unhyM66GR0gwhgX3OGQ4TJt7G9xU-CjsL3HI,3908
|
|
649
650
|
udata/tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
650
651
|
udata/tests/features/territories/__init__.py,sha256=gMD73RL-ymcWvGPDPM0aPxz7WAfd1VEDL8YHRI7HT0Q,956
|
|
@@ -672,7 +673,7 @@ udata/tests/frontend/test_markdown.py,sha256=8E0XjByzmsY-RGdF2ESoL9Rklkfz3vcdJWK
|
|
|
672
673
|
udata/tests/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
673
674
|
udata/tests/organization/test_csv_adapter.py,sha256=vgTVbPMqKipcdg7wi99pHk9ZNhqtuU-yneEaVW3pZmU,1564
|
|
674
675
|
udata/tests/organization/test_notifications.py,sha256=PGmME5BbYVtcPffeSE1sx47J6iAfm4RDAZIRv_MXDFE,1366
|
|
675
|
-
udata/tests/organization/test_organization_model.py,sha256=
|
|
676
|
+
udata/tests/organization/test_organization_model.py,sha256=ZEUHX7lvGMYMlHDpPiVUPeZeJeDDTp5owLEpFDSihjc,4311
|
|
676
677
|
udata/tests/organization/test_organization_rdf.py,sha256=Uf-OgXV615wLUHfcBTmp9QFuV8VCFmjI4wgvShve-mc,8074
|
|
677
678
|
udata/tests/organization/test_organization_tasks.py,sha256=ehPirwfLqaEcnJ9TLk3jGw3Xh-CVx1WXhvIDFYrT2iQ,2845
|
|
678
679
|
udata/tests/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -709,9 +710,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=18Y5YtzVKInDejw-R-45HNzsB3OVwJ
|
|
|
709
710
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=6IQvFk0NTDV5Jq-kLkkzpioWfrMaLDa1oQSevKFbxKQ,44943
|
|
710
711
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=LWzCNS68hS2lbeo1bncZw4ZKqV2Dk_JUC-4SiF3o994,28163
|
|
711
712
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=X1ieIsJDmk_A_YiblpmUBzWWrVHta9F8yzCZLrjeW-Y,51435
|
|
712
|
-
udata-10.0.
|
|
713
|
-
udata-10.0.
|
|
714
|
-
udata-10.0.
|
|
715
|
-
udata-10.0.
|
|
716
|
-
udata-10.0.
|
|
717
|
-
udata-10.0.
|
|
713
|
+
udata-10.0.6.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
714
|
+
udata-10.0.6.dist-info/METADATA,sha256=50KbgNuJlK--N7mg1lFtWjrS4MEGFiogb3WpeMcLCA8,138043
|
|
715
|
+
udata-10.0.6.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
716
|
+
udata-10.0.6.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
|
|
717
|
+
udata-10.0.6.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
718
|
+
udata-10.0.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|