udata 7.0.5.dev28172__py2.py3-none-any.whl → 7.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/__init__.py +0 -3
- udata/commands/dcat.py +7 -4
- udata/core/activity/api.py +1 -1
- udata/core/activity/models.py +4 -3
- udata/core/activity/tasks.py +6 -5
- udata/core/dataset/factories.py +2 -4
- udata/core/dataset/models.py +2 -5
- udata/core/dataset/rdf.py +65 -25
- udata/core/dataset/search.py +0 -1
- udata/core/spatial/tests/test_api.py +7 -10
- udata/core/topic/factories.py +2 -2
- udata/harvest/backends/dcat.py +128 -24
- udata/harvest/tests/csw_dcat/XSLT.xml +4298 -0
- udata/harvest/tests/csw_dcat/geonetwork-iso-page-1.xml +1291 -0
- udata/harvest/tests/csw_dcat/geonetwork-iso-page-3.xml +1139 -0
- udata/harvest/tests/csw_dcat/geonetwork-iso-page-5.xml +1266 -0
- udata/harvest/tests/dcat/bnodes.xml +7 -1
- udata/harvest/tests/dcat/evian.json +464 -0
- udata/harvest/tests/test_dcat_backend.py +82 -9
- udata/migrations/2024-03-22-migrate-activity-kwargs-to-extras.py +16 -0
- udata/rdf.py +22 -1
- udata/search/__init__.py +2 -2
- udata/static/chunks/{11.c0ccea08914b6b41568e.js → 11.a23c110811a9ac943478.js} +3 -3
- udata/static/chunks/{11.c0ccea08914b6b41568e.js.map → 11.a23c110811a9ac943478.js.map} +1 -1
- udata/static/chunks/{13.526a25163ababaa44409.js → 13.0889e093f8664e38568c.js} +2 -2
- udata/static/chunks/{13.526a25163ababaa44409.js.map → 13.0889e093f8664e38568c.js.map} +1 -1
- udata/static/chunks/{16.7901839b4227881947f6.js → 16.f41599478d3e97ad9a30.js} +2 -2
- udata/static/chunks/{16.7901839b4227881947f6.js.map → 16.f41599478d3e97ad9a30.js.map} +1 -1
- udata/static/chunks/{19.471d5a2a08eef6e5338a.js → 19.2b534a26af8b17e9170b.js} +3 -3
- udata/static/chunks/{19.471d5a2a08eef6e5338a.js.map → 19.2b534a26af8b17e9170b.js.map} +1 -1
- udata/static/chunks/{5.534e0531d0e2b150146f.js → 5.7115454a1183e5c12eef.js} +3 -3
- udata/static/chunks/{5.534e0531d0e2b150146f.js.map → 5.7115454a1183e5c12eef.js.map} +1 -1
- udata/static/chunks/{6.e56975229e6065f68d2a.js → 6.16bb24fb8240f2746488.js} +3 -3
- udata/static/chunks/{6.e56975229e6065f68d2a.js.map → 6.16bb24fb8240f2746488.js.map} +1 -1
- udata/static/chunks/{9.534426728626f11f4571.js → 9.3e752966ff14e47e11f2.js} +2 -2
- udata/static/chunks/{9.534426728626f11f4571.js.map → 9.3e752966ff14e47e11f2.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_datasets_api.py +45 -45
- udata/tests/api/test_me_api.py +13 -14
- udata/tests/dataset/test_dataset_actions.py +2 -2
- udata/tests/dataset/test_dataset_commands.py +3 -3
- udata/tests/dataset/test_dataset_model.py +2 -1
- udata/tests/organization/test_organization_model.py +3 -3
- udata/tests/organization/test_organization_rdf.py +3 -3
- udata/tests/reuse/test_reuse_model.py +2 -2
- udata/tests/search/test_adapter.py +12 -12
- udata/tests/search/test_results.py +4 -4
- udata/tests/site/test_site_api.py +3 -3
- udata/tests/site/test_site_metrics.py +3 -3
- udata/tests/site/test_site_rdf.py +6 -6
- udata/tests/test_activity.py +12 -0
- udata/tests/test_transfer.py +18 -17
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/METADATA +13 -3
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/RECORD +60 -54
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/entry_points.txt +1 -0
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/LICENSE +0 -0
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/WHEEL +0 -0
- {udata-7.0.5.dev28172.dist-info → udata-7.0.6.dist-info}/top_level.txt +0 -0
|
@@ -14,7 +14,7 @@ from udata.utils import clean_string
|
|
|
14
14
|
from udata.search import reindex, as_task_param
|
|
15
15
|
from udata.search.commands import index_model
|
|
16
16
|
from udata.core.dataset.search import DatasetSearch
|
|
17
|
-
from udata.core.dataset.factories import DatasetFactory, ResourceFactory,
|
|
17
|
+
from udata.core.dataset.factories import DatasetFactory, ResourceFactory, HiddenDatasetFactory
|
|
18
18
|
from udata.tests.api import APITestCase
|
|
19
19
|
|
|
20
20
|
from . import FakeSearch
|
|
@@ -104,35 +104,35 @@ class SearchAdaptorTest:
|
|
|
104
104
|
assertHasArgument(parser, 'page_size', int)
|
|
105
105
|
|
|
106
106
|
|
|
107
|
-
@pytest.mark.options(SEARCH_SERVICE_API_URL="smtg")
|
|
107
|
+
@pytest.mark.options(SEARCH_SERVICE_API_URL="smtg/")
|
|
108
108
|
class IndexingLifecycleTest(APITestCase):
|
|
109
109
|
|
|
110
110
|
@patch('requests.delete')
|
|
111
111
|
def test_producer_should_send_a_message_without_payload_if_not_indexable(self, mock_req):
|
|
112
|
-
fake_data =
|
|
112
|
+
fake_data = HiddenDatasetFactory(id='61fd30cb29ea95c7bc0e1211')
|
|
113
113
|
|
|
114
114
|
reindex.run(*as_task_param(fake_data))
|
|
115
115
|
|
|
116
116
|
search_service_url = current_app.config['SEARCH_SERVICE_API_URL']
|
|
117
|
-
url = f'{search_service_url}{DatasetSearch.search_url}
|
|
117
|
+
url = f'{search_service_url}{DatasetSearch.search_url}{str(fake_data.id)}/unindex'
|
|
118
118
|
mock_req.assert_called_with(url)
|
|
119
119
|
|
|
120
120
|
@patch('requests.post')
|
|
121
121
|
def test_producer_should_send_a_message_with_payload_if_indexable(self, mock_req):
|
|
122
122
|
resource = ResourceFactory(schema=Schema(url="http://localhost/my-schema"))
|
|
123
|
-
fake_data =
|
|
123
|
+
fake_data = DatasetFactory(id='61fd30cb29ea95c7bc0e1211', resources=[resource])
|
|
124
124
|
|
|
125
125
|
reindex.run(*as_task_param(fake_data))
|
|
126
126
|
|
|
127
127
|
expected_value = {
|
|
128
128
|
'document': DatasetSearch.serialize(fake_data)
|
|
129
129
|
}
|
|
130
|
-
url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{DatasetSearch.search_url}
|
|
130
|
+
url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{DatasetSearch.search_url}index"
|
|
131
131
|
mock_req.assert_called_with(url, json=expected_value)
|
|
132
132
|
|
|
133
133
|
@patch('requests.Session.post')
|
|
134
134
|
def test_index_model(self, mock_req):
|
|
135
|
-
fake_data =
|
|
135
|
+
fake_data = DatasetFactory(id='61fd30cb29ea95c7bc0e1211')
|
|
136
136
|
|
|
137
137
|
index_model(DatasetSearch, start=None, reindex=False, from_datetime=None)
|
|
138
138
|
|
|
@@ -146,7 +146,7 @@ class IndexingLifecycleTest(APITestCase):
|
|
|
146
146
|
@patch('requests.post')
|
|
147
147
|
@patch('requests.Session.post')
|
|
148
148
|
def test_reindex_model(self, mock_session, mock_req):
|
|
149
|
-
fake_data =
|
|
149
|
+
fake_data = DatasetFactory(id='61fd30cb29ea95c7bc0e1211')
|
|
150
150
|
|
|
151
151
|
index_model(DatasetSearch, start=datetime.datetime(2022, 2, 20, 20, 2), reindex=True)
|
|
152
152
|
|
|
@@ -167,10 +167,10 @@ class IndexingLifecycleTest(APITestCase):
|
|
|
167
167
|
|
|
168
168
|
@patch('requests.Session.post')
|
|
169
169
|
def test_index_model_from_datetime(self, mock_req):
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
fake_data =
|
|
173
|
-
|
|
170
|
+
DatasetFactory(id='61fd30cb29ea95c7bc0e1211',
|
|
171
|
+
last_modified_internal=datetime.datetime(2020, 1, 1))
|
|
172
|
+
fake_data = DatasetFactory(id='61fd30cb29ea95c7bc0e1212',
|
|
173
|
+
last_modified_internal=datetime.datetime(2022, 1, 1))
|
|
174
174
|
|
|
175
175
|
index_model(DatasetSearch, start=None, from_datetime=datetime.datetime(2023, 1, 1))
|
|
176
176
|
mock_req.assert_not_called()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from udata.tests.api import APITestCase
|
|
2
2
|
from udata.search.result import SearchResult
|
|
3
|
-
from udata.core.dataset.factories import
|
|
3
|
+
from udata.core.dataset.factories import DatasetFactory
|
|
4
4
|
from udata.core.dataset.search import DatasetSearch
|
|
5
5
|
from udata.models import Dataset
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ class ResultTest(APITestCase):
|
|
|
9
9
|
def test_results_get_objects(self):
|
|
10
10
|
data = []
|
|
11
11
|
for _ in range(3):
|
|
12
|
-
random_dataset =
|
|
12
|
+
random_dataset = DatasetFactory()
|
|
13
13
|
data.append(DatasetSearch.serialize(random_dataset))
|
|
14
14
|
|
|
15
15
|
search_class = DatasetSearch.temp_search()
|
|
@@ -30,10 +30,10 @@ class ResultTest(APITestCase):
|
|
|
30
30
|
def test_results_should_not_fail_on_missing_objects(self):
|
|
31
31
|
data = []
|
|
32
32
|
for _ in range(3):
|
|
33
|
-
random_dataset =
|
|
33
|
+
random_dataset = DatasetFactory()
|
|
34
34
|
data.append(DatasetSearch.serialize(random_dataset))
|
|
35
35
|
|
|
36
|
-
to_delete_random_dataset =
|
|
36
|
+
to_delete_random_dataset = DatasetFactory()
|
|
37
37
|
data.append(DatasetSearch.serialize(to_delete_random_dataset))
|
|
38
38
|
|
|
39
39
|
search_class = DatasetSearch.temp_search()
|
|
@@ -5,7 +5,7 @@ from flask import url_for
|
|
|
5
5
|
from udata.core.site.models import Site
|
|
6
6
|
from udata.core.site.models import current_site
|
|
7
7
|
from udata.core.site.factories import SiteFactory
|
|
8
|
-
from udata.core.dataset.factories import
|
|
8
|
+
from udata.core.dataset.factories import DatasetFactory
|
|
9
9
|
from udata.core.reuse.factories import VisibleReuseFactory
|
|
10
10
|
from udata.core.user.factories import AdminFactory
|
|
11
11
|
|
|
@@ -22,7 +22,7 @@ class SiteAPITest(APITestCase):
|
|
|
22
22
|
def test_get_home_datasets(self):
|
|
23
23
|
site = SiteFactory.create(
|
|
24
24
|
id=self.app.config['SITE_ID'],
|
|
25
|
-
settings__home_datasets=
|
|
25
|
+
settings__home_datasets=DatasetFactory.create_batch(3)
|
|
26
26
|
)
|
|
27
27
|
current_site.reload()
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ class SiteAPITest(APITestCase):
|
|
|
46
46
|
self.assertEqual(len(response.json), len(site.settings.home_reuses))
|
|
47
47
|
|
|
48
48
|
def test_set_home_datasets(self):
|
|
49
|
-
ids = [d.id for d in
|
|
49
|
+
ids = [d.id for d in DatasetFactory.create_batch(3)]
|
|
50
50
|
|
|
51
51
|
self.login(AdminFactory())
|
|
52
52
|
response = self.put(url_for('api.home_datasets'), ids)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
|
-
from udata.core.dataset.factories import DatasetFactory,
|
|
3
|
+
from udata.core.dataset.factories import DatasetFactory, HiddenDatasetFactory, OrganizationFactory
|
|
4
4
|
from udata.core.reuse.factories import VisibleReuseFactory
|
|
5
5
|
from udata.harvest.tests.factories import HarvestSourceFactory
|
|
6
6
|
from udata.core.site.factories import SiteFactory
|
|
@@ -34,11 +34,11 @@ class SiteMetricTest:
|
|
|
34
34
|
id=app.config['SITE_ID']
|
|
35
35
|
)
|
|
36
36
|
DatasetFactory.create_batch(2)
|
|
37
|
-
|
|
37
|
+
HiddenDatasetFactory.create_batch(3)
|
|
38
38
|
|
|
39
39
|
site.count_datasets()
|
|
40
40
|
|
|
41
|
-
assert site.get_metrics()['datasets'] ==
|
|
41
|
+
assert site.get_metrics()['datasets'] == 2
|
|
42
42
|
|
|
43
43
|
def test_resources_metric(self, app):
|
|
44
44
|
site = SiteFactory.create(
|
|
@@ -6,7 +6,7 @@ from rdflib import URIRef, Literal, Graph
|
|
|
6
6
|
from rdflib.namespace import RDF, FOAF
|
|
7
7
|
from rdflib.resource import Resource
|
|
8
8
|
|
|
9
|
-
from udata.core.dataset.factories import
|
|
9
|
+
from udata.core.dataset.factories import DatasetFactory
|
|
10
10
|
from udata.core.dataset.models import Dataset
|
|
11
11
|
from udata.core.organization.factories import OrganizationFactory
|
|
12
12
|
from udata.core.site.factories import SiteFactory
|
|
@@ -26,7 +26,7 @@ class CatalogTest:
|
|
|
26
26
|
site = SiteFactory()
|
|
27
27
|
home_url = url_for('api.site', _external=True)
|
|
28
28
|
uri = url_for('api.site_rdf_catalog', _external=True)
|
|
29
|
-
datasets =
|
|
29
|
+
datasets = DatasetFactory.create_batch(3)
|
|
30
30
|
catalog = build_catalog(site, datasets)
|
|
31
31
|
graph = catalog.graph
|
|
32
32
|
|
|
@@ -59,8 +59,8 @@ class CatalogTest:
|
|
|
59
59
|
site = SiteFactory()
|
|
60
60
|
org = OrganizationFactory()
|
|
61
61
|
user = UserFactory()
|
|
62
|
-
datasets =
|
|
63
|
-
datasets +=
|
|
62
|
+
datasets = DatasetFactory.create_batch(2, owner=user)
|
|
63
|
+
datasets += DatasetFactory.create_batch(2, organization=org)
|
|
64
64
|
catalog = build_catalog(site, datasets)
|
|
65
65
|
graph = catalog.graph
|
|
66
66
|
|
|
@@ -82,7 +82,7 @@ class CatalogTest:
|
|
|
82
82
|
page=1, page_size=page_size, _external=True)
|
|
83
83
|
uri_last = url_for('api.site_rdf_catalog_format', format='json',
|
|
84
84
|
page=2, page_size=page_size, _external=True)
|
|
85
|
-
|
|
85
|
+
DatasetFactory.create_batch(total)
|
|
86
86
|
|
|
87
87
|
# First page
|
|
88
88
|
datasets = Dataset.objects.paginate(1, page_size)
|
|
@@ -208,7 +208,7 @@ class SiteRdfViewsTest:
|
|
|
208
208
|
assert_redirects(response, expected_url)
|
|
209
209
|
|
|
210
210
|
def test_catalog_rdf_paginate(self, client):
|
|
211
|
-
|
|
211
|
+
DatasetFactory.create_batch(4)
|
|
212
212
|
url = url_for('api.site_rdf_catalog_format', format='n3', page_size=3)
|
|
213
213
|
next_url = url_for('api.site_rdf_catalog_format', format='n3',
|
|
214
214
|
page=2, page_size=3, _external=True)
|
udata/tests/test_activity.py
CHANGED
|
@@ -27,6 +27,18 @@ class ActivityTest(WebTestMixin, DBTestMixin, TestCase):
|
|
|
27
27
|
self.assertEqual(len(activities), 1)
|
|
28
28
|
self.assertIsInstance(activities[0], FakeActivity)
|
|
29
29
|
|
|
30
|
+
def test_create_and_retrieve_with_extras(self):
|
|
31
|
+
FakeActivity.objects.create(actor=self.user, related_to=self.fake, extras={'some_key': 'some_value',
|
|
32
|
+
'other_key': 'other_value'})
|
|
33
|
+
|
|
34
|
+
activities = Activity.objects(actor=self.user)
|
|
35
|
+
|
|
36
|
+
self.assertEqual(len(activities), 1)
|
|
37
|
+
self.assertEqual(activities[0].extras['some_key'], 'some_value')
|
|
38
|
+
self.assertEqual(activities[0].extras['other_key'], 'other_value')
|
|
39
|
+
self.assertIsInstance(activities[0], FakeActivity)
|
|
40
|
+
|
|
41
|
+
|
|
30
42
|
def test_create_and_retrieve_for_org(self):
|
|
31
43
|
org = OrganizationFactory()
|
|
32
44
|
FakeActivity.objects.create(
|
udata/tests/test_transfer.py
CHANGED
|
@@ -7,14 +7,15 @@ from udata.features.transfer.actions import request_transfer, accept_transfer
|
|
|
7
7
|
from udata.features.transfer.notifications import (
|
|
8
8
|
transfer_request_notifications
|
|
9
9
|
)
|
|
10
|
-
from udata.models import Member
|
|
11
|
-
from udata.core.user.metrics import update_owner_metrics
|
|
12
|
-
from udata.core.organization.metrics import update_org_metrics
|
|
10
|
+
from udata.models import Member, Dataset
|
|
13
11
|
|
|
14
12
|
from udata.utils import faker
|
|
15
|
-
from udata.core.dataset.factories import
|
|
13
|
+
from udata.core.dataset.factories import DatasetFactory
|
|
16
14
|
from udata.core.organization.factories import OrganizationFactory
|
|
17
|
-
from udata.core.
|
|
15
|
+
from udata.core.organization.metrics import update_org_metrics # noqa needed to register signals
|
|
16
|
+
from udata.core.user.factories import UserFactory
|
|
17
|
+
from udata.core.user.metrics import update_owner_metrics # noqa needed to register signals
|
|
18
|
+
from udata.tests.helpers import assert_emit
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
pytestmark = pytest.mark.usefixtures('clean_db')
|
|
@@ -32,7 +33,7 @@ class TransferStartTest:
|
|
|
32
33
|
|
|
33
34
|
def test_request_transfer_owner_to_user(self):
|
|
34
35
|
user = UserFactory()
|
|
35
|
-
dataset =
|
|
36
|
+
dataset = DatasetFactory(owner=user)
|
|
36
37
|
recipient = UserFactory()
|
|
37
38
|
comment = faker.sentence()
|
|
38
39
|
|
|
@@ -43,7 +44,7 @@ class TransferStartTest:
|
|
|
43
44
|
user = UserFactory()
|
|
44
45
|
member = Member(user=user, role='admin')
|
|
45
46
|
org = OrganizationFactory(members=[member])
|
|
46
|
-
dataset =
|
|
47
|
+
dataset = DatasetFactory(owner=user, organization=org)
|
|
47
48
|
recipient = UserFactory()
|
|
48
49
|
comment = faker.sentence()
|
|
49
50
|
|
|
@@ -52,7 +53,7 @@ class TransferStartTest:
|
|
|
52
53
|
|
|
53
54
|
def test_request_transfer_user_to_organization(self):
|
|
54
55
|
user = UserFactory()
|
|
55
|
-
dataset =
|
|
56
|
+
dataset = DatasetFactory(owner=user)
|
|
56
57
|
recipient = OrganizationFactory()
|
|
57
58
|
comment = faker.sentence()
|
|
58
59
|
|
|
@@ -61,7 +62,7 @@ class TransferStartTest:
|
|
|
61
62
|
|
|
62
63
|
def test_request_transfer_not_authorized_not_owner(self):
|
|
63
64
|
user = UserFactory()
|
|
64
|
-
dataset =
|
|
65
|
+
dataset = DatasetFactory(owner=UserFactory())
|
|
65
66
|
recipient = UserFactory()
|
|
66
67
|
comment = faker.sentence()
|
|
67
68
|
|
|
@@ -73,7 +74,7 @@ class TransferStartTest:
|
|
|
73
74
|
user = UserFactory()
|
|
74
75
|
member = Member(user=user, role='editor')
|
|
75
76
|
org = OrganizationFactory(members=[member])
|
|
76
|
-
dataset =
|
|
77
|
+
dataset = DatasetFactory(organization=org)
|
|
77
78
|
recipient = UserFactory()
|
|
78
79
|
comment = faker.sentence()
|
|
79
80
|
|
|
@@ -83,7 +84,7 @@ class TransferStartTest:
|
|
|
83
84
|
|
|
84
85
|
def test_request_transfer_to_self(self):
|
|
85
86
|
user = UserFactory()
|
|
86
|
-
dataset =
|
|
87
|
+
dataset = DatasetFactory(owner=user)
|
|
87
88
|
comment = faker.sentence()
|
|
88
89
|
|
|
89
90
|
login_user(user)
|
|
@@ -94,7 +95,7 @@ class TransferStartTest:
|
|
|
94
95
|
user = UserFactory()
|
|
95
96
|
member = Member(user=user, role='admin')
|
|
96
97
|
org = OrganizationFactory(members=[member])
|
|
97
|
-
dataset =
|
|
98
|
+
dataset = DatasetFactory(owner=user, organization=org)
|
|
98
99
|
comment = faker.sentence()
|
|
99
100
|
|
|
100
101
|
login_user(user)
|
|
@@ -107,7 +108,7 @@ class TransferAcceptTest:
|
|
|
107
108
|
def test_recipient_user_can_accept_transfer(self):
|
|
108
109
|
owner = UserFactory()
|
|
109
110
|
recipient = UserFactory()
|
|
110
|
-
subject =
|
|
111
|
+
subject = DatasetFactory(owner=owner)
|
|
111
112
|
transfer = TransferFactory(owner=owner,
|
|
112
113
|
recipient=recipient,
|
|
113
114
|
subject=subject)
|
|
@@ -136,7 +137,7 @@ class TransferAcceptTest:
|
|
|
136
137
|
owner = UserFactory()
|
|
137
138
|
admin = UserFactory()
|
|
138
139
|
org = OrganizationFactory(members=[Member(user=admin, role='admin')])
|
|
139
|
-
subject =
|
|
140
|
+
subject = DatasetFactory(owner=owner)
|
|
140
141
|
transfer = TransferFactory(owner=owner,
|
|
141
142
|
recipient=org,
|
|
142
143
|
subject=subject)
|
|
@@ -172,7 +173,7 @@ class TransferAcceptTest:
|
|
|
172
173
|
owner = UserFactory()
|
|
173
174
|
editor = UserFactory()
|
|
174
175
|
org = OrganizationFactory(members=[Member(user=editor, role='editor')])
|
|
175
|
-
subject =
|
|
176
|
+
subject = DatasetFactory(organization=org)
|
|
176
177
|
transfer = TransferFactory(owner=owner,
|
|
177
178
|
recipient=org,
|
|
178
179
|
subject=subject)
|
|
@@ -185,7 +186,7 @@ class TransferAcceptTest:
|
|
|
185
186
|
class TransferNotificationsTest:
|
|
186
187
|
def test_pending_transfer_request_for_user(self):
|
|
187
188
|
user = UserFactory()
|
|
188
|
-
datasets =
|
|
189
|
+
datasets = DatasetFactory.create_batch(2, owner=user)
|
|
189
190
|
recipient = UserFactory()
|
|
190
191
|
comment = faker.sentence()
|
|
191
192
|
transfers = {}
|
|
@@ -206,7 +207,7 @@ class TransferNotificationsTest:
|
|
|
206
207
|
|
|
207
208
|
def test_pending_transfer_request_for_org(self):
|
|
208
209
|
user = UserFactory()
|
|
209
|
-
datasets =
|
|
210
|
+
datasets = DatasetFactory.create_batch(2, owner=user)
|
|
210
211
|
recipient = UserFactory()
|
|
211
212
|
member = Member(user=recipient, role='editor')
|
|
212
213
|
org = OrganizationFactory(members=[member])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 7.0.
|
|
3
|
+
Version: 7.0.6
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -132,11 +132,20 @@ for publishing udata's roadmap and for building consensus around it.
|
|
|
132
132
|
It is collectively taken care of by members of the
|
|
133
133
|
[OpenDataTeam](https://github.com/opendatateam).
|
|
134
134
|
|
|
135
|
-
[readthedocs-url]: https://udata.readthedocs.io/en/
|
|
135
|
+
[readthedocs-url]: https://udata.readthedocs.io/en/v7.0.6/
|
|
136
136
|
|
|
137
137
|
# Changelog
|
|
138
138
|
|
|
139
|
-
##
|
|
139
|
+
## 7.0.6 (2024-03-29)
|
|
140
|
+
|
|
141
|
+
- Add new harvester for ISO DCAT with XSLT transform [#2982](https://github.com/opendatateam/udata/pull/2982)
|
|
142
|
+
- Fix, do not fail on spatial coverage harvesting exception and allow literal spatial BBOX from Arcgis [2998](https://github.com/opendatateam/udata/pull/2998)
|
|
143
|
+
- Mock calls to example.com [#3000](https://github.com/opendatateam/udata/pull/3000)
|
|
144
|
+
- Fix duplicate logs in console commands [#2996](https://github.com/opendatateam/udata/pull/2996)
|
|
145
|
+
- Refactor `Activity.kwargs` into `Activity.extras` to facilitate its usage [#2999](https://github.com/opendatateam/udata/pull/2999)
|
|
146
|
+
- :warning: Datasets without resources are now visible and indexable [#2997](https://github.com/opendatateam/udata/pull/2997)
|
|
147
|
+
|
|
148
|
+
## 7.0.5 (2024-03-20)
|
|
140
149
|
|
|
141
150
|
- Add spatial coverage harvesting [#2959](https://github.com/opendatateam/udata/pull/2959) [#2991](https://github.com/opendatateam/udata/pull/2991)
|
|
142
151
|
- Fix: updating a dataset without `private` do not reset `private` to `False`, the previous saved value is kept [#2955](https://github.com/opendatateam/udata/pull/2955)
|
|
@@ -149,6 +158,7 @@ It is collectively taken care of by members of the
|
|
|
149
158
|
- Topic: add spatial field [#2988](https://github.com/opendatateam/udata/pull/2988)
|
|
150
159
|
- Topic: add last_modified field [#2987](https://github.com/opendatateam/udata/pull/2987)
|
|
151
160
|
- Add stacktraces to CSV errors [#2990](https://github.com/opendatateam/udata/pull/2990)
|
|
161
|
+
- Fix harvesting of DCT.conformsTo for complex inner information [#2994](https://github.com/opendatateam/udata/pull/2994)
|
|
152
162
|
|
|
153
163
|
## 7.0.4 (2024-02-27)
|
|
154
164
|
|