udata 7.0.6.dev28300__py2.py3-none-any.whl → 7.0.6.dev28345__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.

@@ -34,10 +34,8 @@ class DatasetFactory(ModelFactory):
34
34
  nb_resources = 0
35
35
 
36
36
 
37
- class VisibleDatasetFactory(DatasetFactory):
38
- @factory.lazy_attribute
39
- def resources(self):
40
- return [ResourceFactory()]
37
+ class HiddenDatasetFactory(DatasetFactory):
38
+ private = True
41
39
 
42
40
 
43
41
  class ChecksumFactory(ModelFactory):
@@ -342,12 +342,10 @@ class License(db.Document):
342
342
 
343
343
  class DatasetQuerySet(db.OwnedQuerySet):
344
344
  def visible(self):
345
- return self(private__ne=True, resources__0__exists=True,
346
- deleted=None, archived=None)
345
+ return self(private__ne=True, deleted=None, archived=None)
347
346
 
348
347
  def hidden(self):
349
348
  return self(db.Q(private=True) |
350
- db.Q(resources__0__exists=False) |
351
349
  db.Q(deleted__ne=None) |
352
350
  db.Q(archived__ne=None))
353
351
 
@@ -677,8 +675,7 @@ class Dataset(WithMetrics, BadgeMixin, db.Owned, db.Document):
677
675
 
678
676
  @property
679
677
  def is_hidden(self):
680
- return (len(self.resources) == 0 or self.private or self.deleted
681
- or self.archived)
678
+ return self.private or self.deleted or self.archived
682
679
 
683
680
  @property
684
681
  def full_title(self):
@@ -47,7 +47,6 @@ class DatasetSearch(ModelSearchAdapter):
47
47
  @classmethod
48
48
  def is_indexable(cls, dataset):
49
49
  return (dataset.deleted is None and dataset.archived is None and
50
- len(dataset.resources) > 0 and
51
50
  not dataset.private)
52
51
 
53
52
  @classmethod
@@ -1,15 +1,12 @@
1
1
  from flask import url_for
2
2
 
3
- from udata.utils import get_by
4
-
5
3
  from udata.utils import faker
6
4
  from udata.tests.api import APITestCase
7
5
  from udata.tests.features.territories import (
8
6
  create_geozones_fixtures, TerritoriesSettings
9
7
  )
10
- from udata.tests.helpers import assert_json_equal
11
8
  from udata.core.organization.factories import OrganizationFactory
12
- from udata.core.dataset.factories import VisibleDatasetFactory
9
+ from udata.core.dataset.factories import DatasetFactory
13
10
  from udata.core.spatial.factories import (
14
11
  SpatialCoverageFactory, GeoZoneFactory, GeoLevelFactory
15
12
  )
@@ -173,7 +170,7 @@ class SpatialApiTest(APITestCase):
173
170
  paca, bdr, arles = create_geozones_fixtures()
174
171
  organization = OrganizationFactory()
175
172
  for _ in range(3):
176
- VisibleDatasetFactory(
173
+ DatasetFactory(
177
174
  organization=organization,
178
175
  spatial=SpatialCoverageFactory(zones=[paca.id]))
179
176
 
@@ -185,7 +182,7 @@ class SpatialApiTest(APITestCase):
185
182
  paca, bdr, arles = create_geozones_fixtures()
186
183
  organization = OrganizationFactory()
187
184
  for _ in range(3):
188
- VisibleDatasetFactory(
185
+ DatasetFactory(
189
186
  organization=organization,
190
187
  spatial=SpatialCoverageFactory(zones=[paca.id]))
191
188
 
@@ -198,7 +195,7 @@ class SpatialApiTest(APITestCase):
198
195
  paca, bdr, arles = create_geozones_fixtures()
199
196
  organization = OrganizationFactory()
200
197
  for _ in range(3):
201
- VisibleDatasetFactory(
198
+ DatasetFactory(
202
199
  organization=organization,
203
200
  spatial=SpatialCoverageFactory(zones=[paca.id]))
204
201
 
@@ -212,7 +209,7 @@ class SpatialApiTest(APITestCase):
212
209
  paca, bdr, arles = create_geozones_fixtures()
213
210
  organization = OrganizationFactory()
214
211
  for _ in range(3):
215
- VisibleDatasetFactory(
212
+ DatasetFactory(
216
213
  organization=organization,
217
214
  spatial=SpatialCoverageFactory(zones=[paca.id]))
218
215
 
@@ -241,7 +238,7 @@ class SpatialTerritoriesApiTest(APITestCase):
241
238
  paca, bdr, arles = create_geozones_fixtures()
242
239
  organization = OrganizationFactory()
243
240
  for _ in range(3):
244
- VisibleDatasetFactory(
241
+ DatasetFactory(
245
242
  organization=organization,
246
243
  spatial=SpatialCoverageFactory(zones=[paca.id]))
247
244
 
@@ -255,7 +252,7 @@ class SpatialTerritoriesApiTest(APITestCase):
255
252
  paca, bdr, arles = create_geozones_fixtures()
256
253
  organization = OrganizationFactory()
257
254
  for _ in range(3):
258
- VisibleDatasetFactory(
255
+ DatasetFactory(
259
256
  organization=organization,
260
257
  spatial=SpatialCoverageFactory(zones=[paca.id]))
261
258
 
@@ -1,7 +1,7 @@
1
1
  import factory
2
2
 
3
3
  from udata import utils
4
- from udata.core.dataset.factories import VisibleDatasetFactory
4
+ from udata.core.dataset.factories import DatasetFactory
5
5
  from udata.core.reuse.factories import VisibleReuseFactory
6
6
  from udata.factories import ModelFactory
7
7
 
@@ -19,7 +19,7 @@ class TopicFactory(ModelFactory):
19
19
 
20
20
  @factory.lazy_attribute
21
21
  def datasets(self):
22
- return VisibleDatasetFactory.create_batch(3)
22
+ return DatasetFactory.create_batch(3)
23
23
 
24
24
  @factory.lazy_attribute
25
25
  def reuses(self):
udata/search/__init__.py CHANGED
@@ -24,7 +24,7 @@ def reindex(classname, id):
24
24
  document = adapter_class.serialize(obj)
25
25
  if adapter_class.is_indexable(obj):
26
26
  log.info('Indexing %s (%s)', model.__name__, obj.id)
27
- url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{adapter_class.search_url}/index"
27
+ url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{adapter_class.search_url}index"
28
28
  try:
29
29
  payload = {
30
30
  'document': document
@@ -35,7 +35,7 @@ def reindex(classname, id):
35
35
  log.exception('Unable to index/unindex %s "%s"', model.__name__, str(obj.id))
36
36
  else:
37
37
  log.info('Unindexing %s (%s)', model.__name__, obj.id)
38
- url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{adapter_class.search_url}/{str(obj.id)}/unindex"
38
+ url = f"{current_app.config['SEARCH_SERVICE_API_URL']}{adapter_class.search_url}{str(obj.id)}/unindex"
39
39
  try:
40
40
  r = requests.delete(url)
41
41
  if r.status_code == 404:
@@ -17,7 +17,7 @@ from udata.core.dataset.api_fields import (dataset_harvest_fields,
17
17
  from udata.core.dataset.factories import (CommunityResourceFactory,
18
18
  DatasetFactory, LicenseFactory,
19
19
  ResourceFactory, ResourceSchemaMockData,
20
- VisibleDatasetFactory)
20
+ HiddenDatasetFactory)
21
21
  from udata.core.dataset.models import (HarvestDatasetMetadata,
22
22
  HarvestResourceMetadata, ResourceMixin)
23
23
  from udata.core.organization.factories import OrganizationFactory
@@ -44,12 +44,13 @@ SAMPLE_GEOM = {
44
44
  ]
45
45
  }
46
46
 
47
+
47
48
  class DatasetAPITest(APITestCase):
48
49
  modules = []
49
50
 
50
51
  def test_dataset_api_list(self):
51
52
  '''It should fetch a dataset list from the API'''
52
- datasets = [VisibleDatasetFactory() for i in range(2)]
53
+ datasets = [DatasetFactory() for i in range(2)]
53
54
 
54
55
  response = self.get(url_for('api.datasets'))
55
56
  self.assert200(response)
@@ -58,10 +59,10 @@ class DatasetAPITest(APITestCase):
58
59
 
59
60
  def test_dataset_api_full_text_search(self):
60
61
  '''Should proceed to full text search on datasets'''
61
- [VisibleDatasetFactory() for i in range(2)]
62
- VisibleDatasetFactory(title="some spécial integer")
63
- VisibleDatasetFactory(title="some spécial float")
64
- dataset = VisibleDatasetFactory(title="some spécial chars")
62
+ [DatasetFactory() for i in range(2)]
63
+ DatasetFactory(title="some spécial integer")
64
+ DatasetFactory(title="some spécial float")
65
+ dataset = DatasetFactory(title="some spécial chars")
65
66
 
66
67
  # with accent
67
68
  response = self.get(url_for('api.datasets', q='some spécial chars'))
@@ -82,9 +83,9 @@ class DatasetAPITest(APITestCase):
82
83
  def test_dataset_api_sorting(self):
83
84
  '''Should sort datasets results from the API'''
84
85
  self.login()
85
- [VisibleDatasetFactory() for i in range(2)]
86
+ [DatasetFactory() for i in range(2)]
86
87
 
87
- to_follow = VisibleDatasetFactory(title="dataset to follow")
88
+ to_follow = DatasetFactory(title="dataset to follow")
88
89
 
89
90
  response = self.post(url_for('api.dataset_followers', id=to_follow.id))
90
91
  self.assert201(response)
@@ -100,8 +101,8 @@ class DatasetAPITest(APITestCase):
100
101
 
101
102
  def test_dataset_api_sorting_created(self):
102
103
  self.login()
103
- first = VisibleDatasetFactory(title="first created dataset")
104
- second = VisibleDatasetFactory(title="second created dataset")
104
+ first = DatasetFactory(title="first created dataset")
105
+ second = DatasetFactory(title="second created dataset")
105
106
  response = self.get(url_for('api.datasets', sort='created'))
106
107
  self.assert200(response)
107
108
  self.assertEqual(response.json['data'][0]['id'], str(first.id))
@@ -123,8 +124,8 @@ class DatasetAPITest(APITestCase):
123
124
  def test_dataset_api_default_sorting(self):
124
125
  # Default sort should be -created
125
126
  self.login()
126
- [VisibleDatasetFactory(title="some created dataset") for i in range(10)]
127
- last = VisibleDatasetFactory(title="last created dataset")
127
+ [DatasetFactory(title="some created dataset") for i in range(10)]
128
+ last = DatasetFactory(title="last created dataset")
128
129
  response = self.get(url_for('api.datasets'))
129
130
  self.assert200(response)
130
131
  self.assertEqual(response.json['data'][0]['id'], str(last.id))
@@ -134,31 +135,31 @@ class DatasetAPITest(APITestCase):
134
135
  owner = UserFactory()
135
136
  org = OrganizationFactory()
136
137
 
137
- [VisibleDatasetFactory() for i in range(2)]
138
+ [DatasetFactory() for i in range(2)]
138
139
 
139
- tag_dataset = VisibleDatasetFactory(tags=['my-tag', 'other'])
140
- license_dataset = VisibleDatasetFactory(license=LicenseFactory(id='cc-by'))
140
+ tag_dataset = DatasetFactory(tags=['my-tag', 'other'])
141
+ license_dataset = DatasetFactory(license=LicenseFactory(id='cc-by'))
141
142
  format_dataset = DatasetFactory(resources=[ResourceFactory(format='my-format')])
142
- featured_dataset = VisibleDatasetFactory(featured=True)
143
- topic_dataset = VisibleDatasetFactory()
143
+ featured_dataset = DatasetFactory(featured=True)
144
+ topic_dataset = DatasetFactory()
144
145
  topic = TopicFactory(datasets=[topic_dataset])
145
146
 
146
147
  paca, _, _ = create_geozones_fixtures()
147
- geozone_dataset = VisibleDatasetFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
148
- granularity_dataset = VisibleDatasetFactory(
148
+ geozone_dataset = DatasetFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
149
+ granularity_dataset = DatasetFactory(
149
150
  spatial=SpatialCoverageFactory(granularity='country')
150
151
  )
151
152
 
152
153
  temporal_coverage = db.DateRange(start='2022-05-03', end='2022-05-04')
153
154
  temporal_coverage_dataset = DatasetFactory(temporal_coverage=temporal_coverage)
154
155
 
155
- owner_dataset = VisibleDatasetFactory(owner=owner)
156
- org_dataset = VisibleDatasetFactory(organization=org)
156
+ owner_dataset = DatasetFactory(owner=owner)
157
+ org_dataset = DatasetFactory(organization=org)
157
158
 
158
- schema_dataset = VisibleDatasetFactory(resources=[
159
+ schema_dataset = DatasetFactory(resources=[
159
160
  ResourceFactory(schema={'name': 'my-schema', 'url': 'https://example.org', 'version': '1.0.0'})
160
161
  ])
161
- schema_version2_dataset = VisibleDatasetFactory(resources=[
162
+ schema_version2_dataset = DatasetFactory(resources=[
162
163
  ResourceFactory(schema={'name': 'other-schema', 'url': 'https://example.org', 'version': '2.0.0'})
163
164
  ])
164
165
 
@@ -270,7 +271,7 @@ class DatasetAPITest(APITestCase):
270
271
 
271
272
  def test_dataset_api_get_deleted(self):
272
273
  '''It should not fetch a deleted dataset from the API and raise 410'''
273
- dataset = VisibleDatasetFactory(deleted=datetime.utcnow())
274
+ dataset = DatasetFactory(deleted=datetime.utcnow())
274
275
 
275
276
  response = self.get(url_for('api.dataset', dataset=dataset))
276
277
  self.assert410(response)
@@ -278,7 +279,7 @@ class DatasetAPITest(APITestCase):
278
279
  def test_dataset_api_get_deleted_but_authorized(self):
279
280
  '''It should a deleted dataset from the API if user is authorized'''
280
281
  self.login()
281
- dataset = VisibleDatasetFactory(owner=self.user,
282
+ dataset = DatasetFactory(owner=self.user,
282
283
  deleted=datetime.utcnow())
283
284
 
284
285
  response = self.get(url_for('api.dataset', dataset=dataset))
@@ -451,7 +452,7 @@ class DatasetAPITest(APITestCase):
451
452
  def test_dataset_api_update_with_resources(self):
452
453
  '''It should update a dataset from the API with resources parameters'''
453
454
  user = self.login()
454
- dataset = VisibleDatasetFactory(owner=user)
455
+ dataset = DatasetFactory(owner=user)
455
456
  initial_length = len(dataset.resources)
456
457
  data = dataset.to_dict()
457
458
  data['resources'].append(ResourceFactory.as_dict())
@@ -464,7 +465,7 @@ class DatasetAPITest(APITestCase):
464
465
 
465
466
  def test_dataset_api_update_private(self):
466
467
  user = self.login()
467
- dataset = DatasetFactory(owner=user, private=True)
468
+ dataset = HiddenDatasetFactory(owner=user)
468
469
  data = dataset.to_dict()
469
470
  data['description'] = 'new description'
470
471
  del data['private']
@@ -487,12 +488,10 @@ class DatasetAPITest(APITestCase):
487
488
  dataset.reload()
488
489
  self.assertEqual(dataset.private, True)
489
490
 
490
-
491
-
492
491
  def test_dataset_api_update_new_resource_with_extras(self):
493
492
  '''It should update a dataset with a new resource with extras'''
494
493
  user = self.login()
495
- dataset = VisibleDatasetFactory(owner=user)
494
+ dataset = DatasetFactory(owner=user)
496
495
  data = dataset.to_dict()
497
496
  resource_data = ResourceFactory.as_dict()
498
497
  resource_data['extras'] = {'extra:id': 'id'}
@@ -508,7 +507,7 @@ class DatasetAPITest(APITestCase):
508
507
  def test_dataset_api_update_existing_resource_with_extras(self):
509
508
  '''It should update a dataset's existing resource with extras'''
510
509
  user = self.login()
511
- dataset = VisibleDatasetFactory(owner=user)
510
+ dataset = DatasetFactory(owner=user, nb_resources=1)
512
511
  data = dataset.to_dict()
513
512
  data['resources'][0]['extras'] = {'extra:id': 'id'}
514
513
  response = self.put(url_for('api.dataset', dataset=dataset), data)
@@ -683,7 +682,7 @@ class DatasetAPITest(APITestCase):
683
682
  def test_dataset_api_delete(self):
684
683
  '''It should delete a dataset from the API'''
685
684
  user = self.login()
686
- dataset = VisibleDatasetFactory(owner=user)
685
+ dataset = DatasetFactory(owner=user, nb_resources=1)
687
686
  response = self.delete(url_for('api.dataset', dataset=dataset))
688
687
 
689
688
  self.assertStatus(response, 204)
@@ -697,7 +696,7 @@ class DatasetAPITest(APITestCase):
697
696
  def test_dataset_api_delete_deleted(self):
698
697
  '''It should delete a deleted dataset from the API and raise 410'''
699
698
  user = self.login()
700
- dataset = VisibleDatasetFactory(owner=user, deleted=datetime.utcnow())
699
+ dataset = DatasetFactory(owner=user, deleted=datetime.utcnow(), nb_resources=1)
701
700
  response = self.delete(url_for('api.dataset', dataset=dataset))
702
701
 
703
702
  self.assert410(response)
@@ -1472,8 +1471,8 @@ class DatasetArchivedAPITest(APITestCase):
1472
1471
 
1473
1472
  def test_dataset_api_search_archived(self):
1474
1473
  '''It should search datasets from the API, excluding archived ones'''
1475
- VisibleDatasetFactory(archived=None)
1476
- dataset = VisibleDatasetFactory(archived=datetime.utcnow())
1474
+ DatasetFactory(archived=None)
1475
+ dataset = DatasetFactory(archived=datetime.utcnow())
1477
1476
 
1478
1477
  response = self.get(url_for('api.datasets', q=''))
1479
1478
  self.assert200(response)
@@ -1483,7 +1482,7 @@ class DatasetArchivedAPITest(APITestCase):
1483
1482
 
1484
1483
  def test_dataset_api_get_archived(self):
1485
1484
  '''It should fetch an archived dataset from the API and return 200'''
1486
- dataset = VisibleDatasetFactory(archived=datetime.utcnow())
1485
+ dataset = DatasetFactory(archived=datetime.utcnow())
1487
1486
  response = self.get(url_for('api.dataset', dataset=dataset))
1488
1487
  self.assert200(response)
1489
1488
 
@@ -1528,7 +1527,7 @@ class CommunityResourceAPITest(APITestCase):
1528
1527
 
1529
1528
  def test_community_resource_api_create_dataset_binding(self):
1530
1529
  '''It should create a community resource linked to the right dataset'''
1531
- dataset = VisibleDatasetFactory()
1530
+ dataset = DatasetFactory()
1532
1531
  self.login()
1533
1532
  response = self.post(
1534
1533
  url_for('api.upload_new_community_resource', dataset=dataset),
@@ -1540,7 +1539,7 @@ class CommunityResourceAPITest(APITestCase):
1540
1539
 
1541
1540
  def test_community_resource_api_create(self):
1542
1541
  '''It should create a community resource from the API'''
1543
- dataset = VisibleDatasetFactory()
1542
+ dataset = DatasetFactory()
1544
1543
  self.login()
1545
1544
  response = self.post(
1546
1545
  url_for('api.upload_new_community_resource', dataset=dataset),
@@ -1560,7 +1559,7 @@ class CommunityResourceAPITest(APITestCase):
1560
1559
 
1561
1560
  def test_community_resource_api_create_as_org(self):
1562
1561
  '''It should create a community resource as org from the API'''
1563
- dataset = VisibleDatasetFactory()
1562
+ dataset = DatasetFactory()
1564
1563
  user = self.login()
1565
1564
  org = OrganizationFactory(members=[
1566
1565
  Member(user=user, role='admin')
@@ -1612,7 +1611,7 @@ class CommunityResourceAPITest(APITestCase):
1612
1611
 
1613
1612
  def test_community_resource_api_update_with_file(self):
1614
1613
  '''It should update a community resource file from the API'''
1615
- dataset = VisibleDatasetFactory()
1614
+ dataset = DatasetFactory()
1616
1615
  user = self.login()
1617
1616
  community_resource = CommunityResourceFactory(dataset=dataset,
1618
1617
  owner=user)
@@ -1637,7 +1636,7 @@ class CommunityResourceAPITest(APITestCase):
1637
1636
 
1638
1637
  def test_community_resource_file_update_old_file_deletion(self):
1639
1638
  '''It should update a community resource's file and delete the old one'''
1640
- dataset = VisibleDatasetFactory()
1639
+ dataset = DatasetFactory()
1641
1640
  user = self.login()
1642
1641
  community_resource = CommunityResourceFactory(dataset=dataset,
1643
1642
  owner=user)
@@ -1664,7 +1663,7 @@ class CommunityResourceAPITest(APITestCase):
1664
1663
  def test_community_resource_api_create_remote(self):
1665
1664
  '''It should create a remote community resource from the API'''
1666
1665
  user = self.login()
1667
- dataset = VisibleDatasetFactory()
1666
+ dataset = DatasetFactory()
1668
1667
  attrs = CommunityResourceFactory.as_dict()
1669
1668
  attrs['filetype'] = 'remote'
1670
1669
  attrs['dataset'] = str(dataset.id)
@@ -1685,7 +1684,7 @@ class CommunityResourceAPITest(APITestCase):
1685
1684
  def test_community_resource_api_unallowed_create_filetype_file(self):
1686
1685
  '''It should create a remote community resource from the API'''
1687
1686
  self.login()
1688
- dataset = VisibleDatasetFactory()
1687
+ dataset = DatasetFactory()
1689
1688
  attrs = CommunityResourceFactory.as_dict()
1690
1689
  attrs['filetype'] = 'file' # to be explicit
1691
1690
  attrs['dataset'] = str(dataset.id)
@@ -1734,7 +1733,7 @@ class CommunityResourceAPITest(APITestCase):
1734
1733
  self.assertEqual(CommunityResource.objects.count(), 0)
1735
1734
 
1736
1735
  def test_community_resource_api_delete(self):
1737
- dataset = VisibleDatasetFactory()
1736
+ dataset = DatasetFactory()
1738
1737
  self.login()
1739
1738
 
1740
1739
  response = self.post(
@@ -6,8 +6,7 @@ from udata.models import Discussion, Follow, Member, User
6
6
  from udata.core.discussions.models import Message as DiscMsg
7
7
  from udata.core.dataset.factories import (
8
8
  CommunityResourceFactory,
9
- DatasetFactory,
10
- VisibleDatasetFactory,
9
+ DatasetFactory
11
10
  )
12
11
  from udata.core.dataset.activities import UserCreatedDataset
13
12
  from udata.core.discussions.factories import DiscussionFactory
@@ -89,9 +88,9 @@ class MeAPITest(APITestCase):
89
88
  member = Member(user=user, role='editor')
90
89
  organization = OrganizationFactory(members=[member])
91
90
  community_resources = [
92
- VisibleDatasetFactory(owner=user) for _ in range(2)]
91
+ DatasetFactory(owner=user) for _ in range(2)]
93
92
  org_datasets = [
94
- VisibleDatasetFactory(organization=organization)
93
+ DatasetFactory(organization=organization)
95
94
  for _ in range(2)]
96
95
 
97
96
  response = self.get(url_for('api.my_org_datasets'))
@@ -105,15 +104,15 @@ class MeAPITest(APITestCase):
105
104
  member = Member(user=user, role='editor')
106
105
  organization = OrganizationFactory(members=[member])
107
106
  datasets = [
108
- VisibleDatasetFactory(owner=user, title='foô'),
107
+ DatasetFactory(owner=user, title='foô'),
109
108
  ]
110
109
  org_datasets = [
111
- VisibleDatasetFactory(organization=organization, title='foô'),
110
+ DatasetFactory(organization=organization, title='foô'),
112
111
  ]
113
112
 
114
113
  # Should not be listed.
115
- VisibleDatasetFactory(owner=user)
116
- VisibleDatasetFactory(organization=organization)
114
+ DatasetFactory(owner=user)
115
+ DatasetFactory(organization=organization)
117
116
 
118
117
  response = self.get(url_for('api.my_org_datasets'),
119
118
  qs={'q': 'foô'})
@@ -195,8 +194,8 @@ class MeAPITest(APITestCase):
195
194
  organization = OrganizationFactory(members=[member])
196
195
  reuse = ReuseFactory(owner=user)
197
196
  org_reuse = ReuseFactory(organization=organization)
198
- dataset = VisibleDatasetFactory(owner=user)
199
- org_dataset = VisibleDatasetFactory(organization=organization)
197
+ dataset = DatasetFactory(owner=user)
198
+ org_dataset = DatasetFactory(organization=organization)
200
199
 
201
200
  discussions = [
202
201
  Discussion.objects.create(subject=dataset, title='', user=user),
@@ -206,7 +205,7 @@ class MeAPITest(APITestCase):
206
205
  ]
207
206
 
208
207
  # Should not be listed
209
- Discussion.objects.create(subject=VisibleDatasetFactory(), title='', user=user)
208
+ Discussion.objects.create(subject=DatasetFactory(), title='', user=user)
210
209
  Discussion.objects.create(subject=ReuseFactory(), title='', user=user)
211
210
 
212
211
  response = self.get(url_for('api.my_org_discussions'))
@@ -219,8 +218,8 @@ class MeAPITest(APITestCase):
219
218
  organization = OrganizationFactory(members=[member])
220
219
  reuse = ReuseFactory(owner=user)
221
220
  org_reuse = ReuseFactory(organization=organization)
222
- dataset = VisibleDatasetFactory(owner=user)
223
- org_dataset = VisibleDatasetFactory(organization=organization)
221
+ dataset = DatasetFactory(owner=user)
222
+ org_dataset = DatasetFactory(organization=organization)
224
223
 
225
224
  discussions = [
226
225
  Discussion.objects.create(subject=dataset, title='foô', user=user),
@@ -232,7 +231,7 @@ class MeAPITest(APITestCase):
232
231
  Discussion.objects.create(subject=org_dataset, title='', user=user),
233
232
 
234
233
  # Should really not be listed.
235
- Discussion.objects.create(subject=VisibleDatasetFactory(), title='foô', user=user)
234
+ Discussion.objects.create(subject=DatasetFactory(), title='foô', user=user)
236
235
  Discussion.objects.create(subject=ReuseFactory(), title='foô', user=user)
237
236
 
238
237
  response = self.get(url_for('api.my_org_discussions'), qs={'q': 'foô'})
@@ -1,7 +1,7 @@
1
1
  import pytest
2
2
 
3
3
  from udata.core.dataset.actions import archive
4
- from udata.core.dataset.factories import VisibleDatasetFactory
4
+ from udata.core.dataset.factories import DatasetFactory
5
5
  from udata.core.discussions.models import Discussion
6
6
  from udata.core.user.factories import UserFactory
7
7
 
@@ -13,7 +13,7 @@ class DatasetActionsTest:
13
13
  user = UserFactory()
14
14
  app.config['ARCHIVE_COMMENT_USER_ID'] = user.id
15
15
 
16
- dataset = VisibleDatasetFactory()
16
+ dataset = DatasetFactory()
17
17
 
18
18
  archive(dataset, comment=True)
19
19
 
@@ -2,14 +2,14 @@ import pytest
2
2
 
3
3
  from tempfile import NamedTemporaryFile
4
4
 
5
- from udata.core.dataset.factories import VisibleDatasetFactory
5
+ from udata.core.dataset.factories import DatasetFactory
6
6
 
7
7
 
8
8
  @pytest.mark.usefixtures('clean_db')
9
9
  class DatasetCommandTest:
10
10
 
11
11
  def test_dataset_archive_one(self, cli):
12
- dataset = VisibleDatasetFactory()
12
+ dataset = DatasetFactory()
13
13
 
14
14
  cli('dataset', 'archive-one', str(dataset.id))
15
15
 
@@ -17,7 +17,7 @@ class DatasetCommandTest:
17
17
  assert dataset.archived is not None
18
18
 
19
19
  def test_dataset_archive(self, cli):
20
- datasets = [VisibleDatasetFactory() for _ in range(2)]
20
+ datasets = [DatasetFactory() for _ in range(2)]
21
21
 
22
22
  with NamedTemporaryFile(mode='w', encoding='utf8') as temp:
23
23
  temp.write('\n'.join((str(d.id) for d in datasets)))
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
 
3
- from udata.core.dataset.factories import DatasetFactory, VisibleDatasetFactory
3
+ from udata.core.dataset.factories import DatasetFactory, HiddenDatasetFactory
4
4
  from udata.core.organization.factories import OrganizationFactory
5
5
  from udata.core.followers.signals import on_follow, on_unfollow
6
6
  from udata.core.reuse.factories import ReuseFactory, VisibleReuseFactory
@@ -27,8 +27,8 @@ class OrganizationModelTest(TestCase, DBTestMixin):
27
27
  reuse = VisibleReuseFactory(organization=org)
28
28
  ReuseFactory(organization=org)
29
29
  with assert_emit(Dataset.on_create):
30
- dataset = VisibleDatasetFactory(organization=org)
31
- DatasetFactory(organization=org)
30
+ dataset = DatasetFactory(organization=org)
31
+ HiddenDatasetFactory(organization=org)
32
32
  with assert_emit(on_follow):
33
33
  follow = Follow.objects.create(following=org, follower=UserFactory(),
34
34
  since=datetime.utcnow())
@@ -9,7 +9,7 @@ from udata.rdf import DCAT, DCT, HYDRA
9
9
  from udata.tests import TestCase, DBTestMixin
10
10
  from udata.core.organization.factories import OrganizationFactory
11
11
  from udata.core.organization.rdf import organization_to_rdf, build_org_catalog
12
- from udata.core.dataset.factories import VisibleDatasetFactory
12
+ from udata.core.dataset.factories import DatasetFactory
13
13
  from udata.core.dataset.models import Dataset
14
14
  from udata.utils import faker
15
15
 
@@ -57,7 +57,7 @@ class OrganizationToRdfTest(DBTestMixin, TestCase):
57
57
  origin_org = OrganizationFactory()
58
58
  uri = url_for('api.organization_rdf', org=origin_org.id, _external=True)
59
59
 
60
- datasets = VisibleDatasetFactory.create_batch(3, organization=origin_org)
60
+ datasets = DatasetFactory.create_batch(3, organization=origin_org)
61
61
  catalog = build_org_catalog(origin_org, datasets)
62
62
 
63
63
  graph = catalog.graph
@@ -93,7 +93,7 @@ class OrganizationToRdfTest(DBTestMixin, TestCase):
93
93
  page=1, page_size=page_size, _external=True)
94
94
  uri_last = url_for('api.organization_rdf_format', org=origin_org.id, format='json',
95
95
  page=2, page_size=page_size, _external=True)
96
- VisibleDatasetFactory.create_batch(total, organization=origin_org)
96
+ DatasetFactory.create_batch(total, organization=origin_org)
97
97
 
98
98
  # First page
99
99
  datasets = Dataset.objects.paginate(1, page_size)
@@ -5,7 +5,7 @@ from udata.models import Reuse
5
5
  from udata.core.dataset import tasks as dataset_tasks
6
6
  from udata.core.organization.factories import OrganizationFactory
7
7
  from udata.core.reuse.factories import ReuseFactory, VisibleReuseFactory
8
- from udata.core.dataset.factories import VisibleDatasetFactory
8
+ from udata.core.dataset.factories import DatasetFactory
9
9
  from udata.core.user.factories import UserFactory
10
10
  from udata.core.discussions.factories import DiscussionFactory
11
11
  from udata.i18n import gettext as _
@@ -65,7 +65,7 @@ class ReuseModelTest(TestCase, DBTestMixin):
65
65
  reuse.save()
66
66
 
67
67
  def test_reuse_metrics(self):
68
- dataset = VisibleDatasetFactory()
68
+ dataset = DatasetFactory()
69
69
  reuse = VisibleReuseFactory()
70
70
  DiscussionFactory(subject=reuse)
71
71
 
@@ -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, VisibleDatasetFactory
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 = DatasetFactory(id='61fd30cb29ea95c7bc0e1211')
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}/{str(fake_data.id)}/unindex'
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 = VisibleDatasetFactory(id='61fd30cb29ea95c7bc0e1211', resources=[resource])
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}/index"
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 = VisibleDatasetFactory(id='61fd30cb29ea95c7bc0e1211')
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 = VisibleDatasetFactory(id='61fd30cb29ea95c7bc0e1211')
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
- VisibleDatasetFactory(id='61fd30cb29ea95c7bc0e1211',
171
- last_modified_internal=datetime.datetime(2020, 1, 1))
172
- fake_data = VisibleDatasetFactory(id='61fd30cb29ea95c7bc0e1212',
173
- last_modified_internal=datetime.datetime(2022, 1, 1))
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 VisibleDatasetFactory
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 = VisibleDatasetFactory()
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 = VisibleDatasetFactory()
33
+ random_dataset = DatasetFactory()
34
34
  data.append(DatasetSearch.serialize(random_dataset))
35
35
 
36
- to_delete_random_dataset = VisibleDatasetFactory()
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 VisibleDatasetFactory
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=VisibleDatasetFactory.create_batch(3)
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 VisibleDatasetFactory.create_batch(3)]
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, VisibleDatasetFactory, OrganizationFactory
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
- VisibleDatasetFactory.create_batch(3)
37
+ HiddenDatasetFactory.create_batch(3)
38
38
 
39
39
  site.count_datasets()
40
40
 
41
- assert site.get_metrics()['datasets'] == 3
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 VisibleDatasetFactory
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 = VisibleDatasetFactory.create_batch(3)
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 = VisibleDatasetFactory.create_batch(2, owner=user)
63
- datasets += VisibleDatasetFactory.create_batch(2, organization=org)
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
- VisibleDatasetFactory.create_batch(total)
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
- VisibleDatasetFactory.create_batch(4)
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)
@@ -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 VisibleDatasetFactory
13
+ from udata.core.dataset.factories import DatasetFactory
16
14
  from udata.core.organization.factories import OrganizationFactory
17
- from udata.core.user.factories import UserFactory
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 = VisibleDatasetFactory(owner=user)
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 = VisibleDatasetFactory(owner=user, organization=org)
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 = VisibleDatasetFactory(owner=user)
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 = VisibleDatasetFactory(owner=UserFactory())
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 = VisibleDatasetFactory(organization=org)
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 = VisibleDatasetFactory(owner=user)
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 = VisibleDatasetFactory(owner=user, organization=org)
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 = VisibleDatasetFactory(owner=owner)
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 = VisibleDatasetFactory(owner=owner)
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 = VisibleDatasetFactory(organization=org)
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 = VisibleDatasetFactory.create_batch(2, owner=user)
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 = VisibleDatasetFactory.create_batch(2, owner=user)
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.6.dev28300
3
+ Version: 7.0.6.dev28345
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -143,6 +143,7 @@ It is collectively taken care of by members of the
143
143
  - Mock calls to example.com [#3000](https://github.com/opendatateam/udata/pull/3000)
144
144
  - Fix duplicate logs in console commands [#2996](https://github.com/opendatateam/udata/pull/2996)
145
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)
146
147
 
147
148
  ## 7.0.5 (2024-03-20)
148
149
 
@@ -85,13 +85,13 @@ udata/core/dataset/commands.py,sha256=UO769j5PBjLNRDgy5pBEZVRgwuTBBhbwkhwmx4CEgd
85
85
  udata/core/dataset/csv.py,sha256=d6JMuvlov_vR7EN10rJa6Q03Il0PfbzMTHQIud5H8qg,3240
86
86
  udata/core/dataset/events.py,sha256=DI71VfRc1eDTtgWQ3TJx5gtUw2MO0O_CVLCKLq0OIF0,3207
87
87
  udata/core/dataset/exceptions.py,sha256=uI_NvZRZMr_MtYQBYdLD8tk-BIUeDDfMMcrWwqV7mi8,494
88
- udata/core/dataset/factories.py,sha256=yWW6pb-fcLxUvAVTn7hNJ4ZIcihiaclWu5TDfeCJWTE,2807
88
+ udata/core/dataset/factories.py,sha256=_sAW0FeEPC5bIKVCnjxnWmKBNU5jRss1AjVaQaMi8Lo,2737
89
89
  udata/core/dataset/forms.py,sha256=auVYxLrPMdtvf2uhgEpJviHiQOSfLpBJdpZ3dXwcjNs,6154
90
- udata/core/dataset/models.py,sha256=SK16LJP_vlSkeGrLJTFbHFNc9iHWwM6_A6DOT0SX5D4,39609
90
+ udata/core/dataset/models.py,sha256=T9dBPoeex6ohQqPcDKxwAb6GhqGN0rED7Vjw6MLDz2s,39461
91
91
  udata/core/dataset/permissions.py,sha256=3F2J7le3_rEYNhh88o3hSRWHAAt01_yHJM6RPmvCrRo,1090
92
92
  udata/core/dataset/preview.py,sha256=puPKT3fBD7ezAcT6owh0JK1_rGNDFZOqgT223qGn3LY,2597
93
93
  udata/core/dataset/rdf.py,sha256=pwYQLzpWXAZWThOMVx70pusTb7SzLgk7wh_9-ldPFAY,22808
94
- udata/core/dataset/search.py,sha256=LOHtOJYZJDPJ5S_Ch7QmmvInpw8aysmNlzbAWbMq9d0,5329
94
+ udata/core/dataset/search.py,sha256=GAdXBI8RhBXPUxd9Mp-44QB-Evwk5Be5XZZJ64T8bQQ,5282
95
95
  udata/core/dataset/signals.py,sha256=TK6dfrOUitZZkGGOh6XmhYqYvIjzZpI70JTLV4k-JRM,161
96
96
  udata/core/dataset/tasks.py,sha256=VB1sQ6Fwbax46IRLGyZUDPGgGOWBYrzAlKzV3npDCyM,8412
97
97
  udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -185,7 +185,7 @@ udata/core/spatial/geoids.py,sha256=UqCto4dtQYPXOxyG7sx_0npzM6yvId40ngw3eAlmioQ,
185
185
  udata/core/spatial/models.py,sha256=WA1jXgw6LYU_5uRrB8WXDIYYFZl4mzbRnJ5_VMkobRA,5105
186
186
  udata/core/spatial/translations.py,sha256=7BjZAMPObm1fwM5U_wnrlpcG-1FtMoS6Z5E3h3Y3sog,533
187
187
  udata/core/spatial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
- udata/core/spatial/tests/test_api.py,sha256=o1iPED3Vz9uw_g25LAi4KIvVMpXy_fp5icLX3JlT3-Q,10302
188
+ udata/core/spatial/tests/test_api.py,sha256=BySPgLpHvWs3vBIX2_7vJkuqfrFBIsTHtdg6PXOsE_U,10171
189
189
  udata/core/spatial/tests/test_fields.py,sha256=MjMsx-2ejsXDvo2iaGewZsOEbSuKwudmA5nKLOdPdTc,9745
190
190
  udata/core/spatial/tests/test_geoid.py,sha256=ovVphCxHb5a-iWl7eoLASRAFUY0CGfNEq-MuqHqTPgE,1533
191
191
  udata/core/spatial/tests/test_models.py,sha256=SZx3NhngXWgVon5BKtP0pPPEdvxGTvHQlYFE-fewzTU,951
@@ -203,7 +203,7 @@ udata/core/tags/views.py,sha256=BoBktrbx0tqkIu3yYLj_XJjB7ZHu_tq5vfEBrh0MUwI,384
203
203
  udata/core/topic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
204
  udata/core/topic/api.py,sha256=G3hN4e9rK5mIYvDLvPpAOo_DN2SySAGykVVvXGx4uMY,5105
205
205
  udata/core/topic/apiv2.py,sha256=cf-WUSZ7P6Tss3S8utS-uhreLgGI5XR3nn_1UWiZ_Xs,9846
206
- udata/core/topic/factories.py,sha256=BEk6YZdaHK-XzCNyD5v_HIKahMe7Lp8aKOlCZLuivtk,711
206
+ udata/core/topic/factories.py,sha256=Vy9dMVSI6XMeAWhxLH1OFJ0vbmEoOtStPDE6HF_nIc4,697
207
207
  udata/core/topic/forms.py,sha256=XqGI4nANdsm2UkIiGAuVqEdZkN5N9sqJ4VaM_PhTaVQ,987
208
208
  udata/core/topic/models.py,sha256=PZsYfiuEU86iL1x-qvDevn4Io8lKGahAbqky03j1N2k,2071
209
209
  udata/core/topic/parsers.py,sha256=oe_4ehnlgPKre2GG1LA6hcQa6H5V5q1adUsQIzVqb_Q,876
@@ -334,7 +334,7 @@ udata/models/url_field.py,sha256=a7FEaDpZKbox8OVfLl4dYno1DFmvxUvHmhzUK2ekSfM,136
334
334
  udata/models/uuid_fields.py,sha256=6OUr6yFtoFK5lUZPTjQPF5qSsiP7D79z3DNOffGPCo4,481
335
335
  udata/notifications/__init__.py,sha256=cM-wpmzBESXhdac_SNjRIHcexJK8eknmB4MR8L7K3v0,51
336
336
  udata/notifications/mattermost.py,sha256=WAmhG86u2ppQyQ8LPGpWyjPmnhrIrJm-kf_bD-8IjwM,782
337
- udata/search/__init__.py,sha256=lAvKjArQiS0rt7MBhgnFN7XuPxk_tuPbQwZIf_ai5Bk,3977
337
+ udata/search/__init__.py,sha256=Nq4S30860SR3YtCycuA1JEUOEzLGyTAcSAd0lS7Z7u4,3975
338
338
  udata/search/adapter.py,sha256=ggtr-_BaO1M40CGKnkAgy2XFNPX57ONusoC4UqJa8bE,2264
339
339
  udata/search/commands.py,sha256=UvxfSTmWj1Je72dE25TpmBhn6KPpDm-PlQlsfi0cc10,5577
340
340
  udata/search/fields.py,sha256=_bT_AcIOmuJEhnnatScRsPYNWsK_ZWpl2yT8ZnK7-dc,1843
@@ -564,17 +564,17 @@ udata/tests/test_routing.py,sha256=iulqXvEWo7ykprUTY0BTAt_gTeHi4cs_dLAPokQ3Iv8,1
564
564
  udata/tests/test_storages.py,sha256=V1yaaa2z_cJuy5tIP9uBPeUZxYXqccpYZ_bMVOUQ0c0,9329
565
565
  udata/tests/test_tags.py,sha256=zd-w9rZ_Iaj6Z2S1diCWzNrEtOSuBGakTHhD_pIUE1o,3754
566
566
  udata/tests/test_topics.py,sha256=r7Y0BW0Z5obld9ASs2Ck9AhykgBtmMedZmL2Bfz_rDw,1323
567
- udata/tests/test_transfer.py,sha256=gQteI1b8qPEpaZfVsMPxkUxAskxsLhenJgUTtpNyluk,8003
567
+ udata/tests/test_transfer.py,sha256=Y0adyR3CswK2Vvao7DgpP_19b8K6XwNO2dvbKlmnlD0,8036
568
568
  udata/tests/test_uris.py,sha256=FQJvz7RXkr21tZ7rZp2uwgZUHk88PxhYId-jXSAl9GM,8519
569
569
  udata/tests/test_utils.py,sha256=5awzhJlbnLga0mRXNR2mBGW_kGuAIoQLEZEMQRKuaIM,7944
570
570
  udata/tests/api/__init__.py,sha256=Tz_WigHLDlnJNKOKzEAnJswkKiLtHlIpCE54-wgocgM,957
571
571
  udata/tests/api/test_auth_api.py,sha256=3Zhn2A29poZIcCJ_R9_-LkR3xOFUTw1aTquiZVXQ2F0,20306
572
572
  udata/tests/api/test_base_api.py,sha256=DRX5nuFIj51GFmMIAxUzoW1yiq1apNgr1vS4U4agzeg,2319
573
573
  udata/tests/api/test_contact_points.py,sha256=MJm8B06iaUqIZCqxll3NViFwUCxwqZZ4u9e9s1h8MgU,1056
574
- udata/tests/api/test_datasets_api.py,sha256=HI4roeYTM9uO6OWv7y8nlHZnM5An4PHkFvqhFSmEBLY,81446
574
+ udata/tests/api/test_datasets_api.py,sha256=Wdy0HfWKVtMBhMA9OJVs3WXOpmVi_dKlx1-OoekKNw0,81204
575
575
  udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
576
576
  udata/tests/api/test_follow_api.py,sha256=0h54P_Dfbo07u6tg0Rbai1WWgWb19ZLN2HGv4oLCWfg,3383
577
- udata/tests/api/test_me_api.py,sha256=-JskdyxcbREceC1PxMj9NUs6QBE3YzKa5TXhHIaPy-o,14275
577
+ udata/tests/api/test_me_api.py,sha256=8OthqVYQKZrFoGuJ7zAvoLJx1IclPNzPdD5Tnzmh3rM,14163
578
578
  udata/tests/api/test_organizations_api.py,sha256=HxeTqP14wlWGaQt4fpQljuRy98HWnmL1QelcxbJDmV0,32704
579
579
  udata/tests/api/test_reuses_api.py,sha256=gQ-o4JXK2S6z2yW13-i8e81pCdr9j2yyM1KinPbkc5g,16971
580
580
  udata/tests/api/test_swagger.py,sha256=tLg452rCD5Q0AgFXOVZKMM6jGiWwC5diX5PxbdYni0o,760
@@ -593,8 +593,8 @@ udata/tests/data/image.jpg,sha256=hdmpaCjOhmAAfNGuTqWKEjv7IC4GXJx-nP_rT274hc8,33
593
593
  udata/tests/data/image.png,sha256=GAqXz7w_u7CapODIUF45UpVddmqelnGQkcrwKZq3448,266488
594
594
  udata/tests/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
595
595
  udata/tests/dataset/test_csv_adapter.py,sha256=2r5z4FuqG9pWgUyfDUw8afQYK5nIKE8XXOCuDHmEcZA,3207
596
- udata/tests/dataset/test_dataset_actions.py,sha256=Xi2TmNtq9g3imP-FcVXSwSFrylS7kkCad39yt14ONiY,737
597
- udata/tests/dataset/test_dataset_commands.py,sha256=gZGMOR0cz8paY2mbdrtqMAdoYK-ZBaBSvzHGMyso4zM,823
596
+ udata/tests/dataset/test_dataset_actions.py,sha256=4_0F_TCSCfHpzqDt659c8hG4GpkWjVtmT4bAPgmE4B8,723
597
+ udata/tests/dataset/test_dataset_commands.py,sha256=TAgVdimIcBVmcSNKXKXbhmCGYRo8Keh_InBNiS6UlkM,802
598
598
  udata/tests/dataset/test_dataset_events.py,sha256=zt6F4j_vOBfMxDW6vBVQ5PGwr0d4s6LGw0cGkt9BlvI,2835
599
599
  udata/tests/dataset/test_dataset_model.py,sha256=m-LtxaxNlXwNxtG_yoBYZ3lu6DdOR82ms4TDlK1a5KY,29776
600
600
  udata/tests/dataset/test_dataset_rdf.py,sha256=0lyHiP9eZdIHUkvgQQ6Dw_LMaXX2SHTxiJdLIorizaw,29389
@@ -627,21 +627,21 @@ udata/tests/frontend/test_markdown.py,sha256=KHh0rFfWHqzes0qvLPPFc7uV_IPSS7ymVsQ
627
627
  udata/tests/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
628
628
  udata/tests/organization/test_csv_adapter.py,sha256=u2w5EOvkz6BH3ACdzW4MdzjOpbHRn-nq67HTmC_8hYA,1568
629
629
  udata/tests/organization/test_notifications.py,sha256=rR1iGtMSmP9htrDJTIVZdvvgO3YNtfoADySGsMzzWdE,1410
630
- udata/tests/organization/test_organization_model.py,sha256=3VdpRPPnhPkRN0yj-hTYIclXWUUCuU1oMQG_gMl22wA,2046
631
- udata/tests/organization/test_organization_rdf.py,sha256=XPk__wiDeF8E02ORR0v9LIyUK2QJ6hJB_lqjxesCApQ,6354
630
+ udata/tests/organization/test_organization_model.py,sha256=0Rx7913-4NFFrcPKMTxMAnEanHR1tu6tuhg6ysbcDLg,2044
631
+ udata/tests/organization/test_organization_rdf.py,sha256=KtZTSCafe67bodyxeXtguydHOZgYrB131ByctS7uje4,6333
632
632
  udata/tests/organization/test_organization_tasks.py,sha256=GZMqwJa8gZj1EiQjm6z-OtFgCTNviG40yZo-Es_-7Yo,2859
633
633
  udata/tests/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
634
- udata/tests/reuse/test_reuse_model.py,sha256=XrAToYSnf8LNAv5Xj99C7-5PEo1WbnBSDs63OWrbPBo,3723
634
+ udata/tests/reuse/test_reuse_model.py,sha256=HWa4_8c3zI-7BMJ3dH_x9Yj7p2sSRCVyT1uyYD0_9Qo,3709
635
635
  udata/tests/reuse/test_reuse_task.py,sha256=_aGLPhvFunsNv7_tV8UmLT0obxDegxurchiZ0N_trbs,1396
636
636
  udata/tests/search/__init__.py,sha256=tSM40xpdgP9bj3299GEDJVCIaxvNj-hklCS50SuTQL0,1495
637
- udata/tests/search/test_adapter.py,sha256=_d804VkbmY6MMb8w40bc-t_ERNr1D00jS3y83NxMUL4,7136
637
+ udata/tests/search/test_adapter.py,sha256=RpQo3tjaV3G2tnLw1vxRWhSZzOqIb-RM0s4U0oN9fEI,7091
638
638
  udata/tests/search/test_query.py,sha256=wtgC4rkaxe8vIaWOcANZ1yFFkEKTdNHj2yiTaYI-R-M,1406
639
- udata/tests/search/test_results.py,sha256=Lnmulp9U3eGNDdiN6TqVg7fIuLiK8UDZdkcv7tiNCEI,2026
639
+ udata/tests/search/test_results.py,sha256=yjeqxNKVbjMxxvUsZb7csfU3wsV_YNjBDnfYRw5QN-s,1998
640
640
  udata/tests/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
641
- udata/tests/site/test_site_api.py,sha256=KK13ihX77O7Ou3kv-jK49qVhTFiMyfdJvQdjmxWxIrY,2297
642
- udata/tests/site/test_site_metrics.py,sha256=YpTG59SKXYWeA2YWCoonAOLBDak-oM3Nf54RwlaRDVQ,2220
641
+ udata/tests/site/test_site_api.py,sha256=XIjRH-iiwKdwmX145bQflxOatfIChi5RLikIMwJSbjQ,2276
642
+ udata/tests/site/test_site_metrics.py,sha256=z0_kLpV5SNUBgvR5y3T_uv1m2xD9aBDdQc6tjI6ARXw,2218
643
643
  udata/tests/site/test_site_model.py,sha256=nAx9JjEKdfjdw1Kj5Rs7P5FEePoATtCuOYPiSXEnVD0,1313
644
- udata/tests/site/test_site_rdf.py,sha256=0--1FuR1u2nIn0xUB7bnsEXDpxCYrONY6q5Z8Anlaqc,9729
644
+ udata/tests/site/test_site_rdf.py,sha256=M360uq2A6hl1WhmyRmRjvzuSqz_YFIUQNPR4vqWnYnE,9687
645
645
  udata/tests/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
646
646
  udata/tests/user/test_user_rdf.py,sha256=HrKirMURUXS9N3If_NMb8qnfJ4kE9IZymR1SPcNvlF0,1851
647
647
  udata/tests/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -664,9 +664,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=zCVMB-a4-mLM1jNyYMk58rgVRaVIwQ
664
664
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=avfWczvlLBKSohyB55-4TLmUGMU_Rze4XmAo4OTk2v0,43513
665
665
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=ScuqdpaV4y1ZIpBAEfxeaKdzkyGZL0mJmKMoG6w0iRQ,28553
666
666
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=QpgEXh1eHjztPa7oNLXd_sds1DC95A-STTtZyTE4m-E,50093
667
- udata-7.0.6.dev28300.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
668
- udata-7.0.6.dev28300.dist-info/METADATA,sha256=kN_pLEvZ8kkXbSlaOlSjWupU6AMUYiXpVygQD3wVZqw,119999
669
- udata-7.0.6.dev28300.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
670
- udata-7.0.6.dev28300.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
671
- udata-7.0.6.dev28300.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
672
- udata-7.0.6.dev28300.dist-info/RECORD,,
667
+ udata-7.0.6.dev28345.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
668
+ udata-7.0.6.dev28345.dist-info/METADATA,sha256=pbVHm_KkTEg4A4_cWu7KJfLClR59GQXjTX5zd2MJPzc,120125
669
+ udata-7.0.6.dev28345.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
670
+ udata-7.0.6.dev28345.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
671
+ udata-7.0.6.dev28345.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
672
+ udata-7.0.6.dev28345.dist-info/RECORD,,