udata 8.0.1__py2.py3-none-any.whl → 8.0.1.dev28882__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.
Files changed (50) hide show
  1. udata/__init__.py +1 -1
  2. udata/api/__init__.py +3 -6
  3. udata/api/oauth2.py +1 -2
  4. udata/core/badges/models.py +1 -2
  5. udata/core/dataset/apiv2.py +0 -2
  6. udata/core/dataset/models.py +0 -1
  7. udata/core/dataset/rdf.py +1 -21
  8. udata/core/metrics/models.py +3 -2
  9. udata/core/organization/api_fields.py +3 -28
  10. udata/core/organization/models.py +1 -3
  11. udata/core/owned.py +2 -39
  12. udata/core/spatial/api.py +4 -4
  13. udata/core/user/api.py +7 -11
  14. udata/core/user/models.py +2 -13
  15. udata/harvest/backends/dcat.py +8 -14
  16. udata/harvest/tests/dcat/catalog.xml +0 -1
  17. udata/harvest/tests/test_dcat_backend.py +0 -3
  18. udata/routing.py +0 -6
  19. udata/settings.py +1 -4
  20. udata/static/admin.css +2 -2
  21. udata/static/admin.css.map +1 -1
  22. udata/static/chunks/{0.93c3ae13b5b94753ee80.js → 0.6f1698738c9b0618b673.js} +3 -3
  23. udata/static/chunks/0.6f1698738c9b0618b673.js.map +1 -0
  24. udata/static/chunks/{14.e64890872b31c55fcdf7.js → 14.f4037a917d5364cb564b.js} +2 -2
  25. udata/static/chunks/14.f4037a917d5364cb564b.js.map +1 -0
  26. udata/static/chunks/{2.614b3e73b072982fd9b1.js → 2.7c89fae92899be371ed3.js} +2 -2
  27. udata/static/chunks/2.7c89fae92899be371ed3.js.map +1 -0
  28. udata/static/chunks/{5.48417db6b33328fa9d6a.js → 5.3dc97ea195d251881552.js} +2 -2
  29. udata/static/chunks/5.3dc97ea195d251881552.js.map +1 -0
  30. udata/static/common.js +1 -1
  31. udata/static/common.js.map +1 -1
  32. udata/tests/api/__init__.py +0 -3
  33. udata/tests/api/test_organizations_api.py +5 -78
  34. udata/tests/api/test_user_api.py +13 -47
  35. udata/tests/plugin.py +0 -5
  36. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/METADATA +3 -12
  37. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/RECORD +41 -46
  38. udata/api_fields.py +0 -254
  39. udata/core/dataservices/__init__.py +0 -0
  40. udata/core/dataservices/api.py +0 -84
  41. udata/core/dataservices/models.py +0 -130
  42. udata/static/chunks/0.93c3ae13b5b94753ee80.js.map +0 -1
  43. udata/static/chunks/14.e64890872b31c55fcdf7.js.map +0 -1
  44. udata/static/chunks/2.614b3e73b072982fd9b1.js.map +0 -1
  45. udata/static/chunks/5.48417db6b33328fa9d6a.js.map +0 -1
  46. udata/tests/api/test_dataservices_api.py +0 -236
  47. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/LICENSE +0 -0
  48. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/WHEEL +0 -0
  49. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/entry_points.txt +0 -0
  50. {udata-8.0.1.dist-info → udata-8.0.1.dev28882.dist-info}/top_level.txt +0 -0
@@ -1,236 +0,0 @@
1
- from pprint import pprint
2
- from flask import url_for
3
-
4
- from udata.core.dataservices.models import Dataservice
5
- from udata.core.dataset.factories import (DatasetFactory, LicenseFactory)
6
- from udata.i18n import gettext as _
7
- from udata.core.user.factories import UserFactory
8
- from udata.core.organization.factories import OrganizationFactory
9
- from udata.core.organization.models import Member
10
-
11
- from . import APITestCase
12
-
13
- class DataserviceAPITest(APITestCase):
14
- modules = []
15
-
16
- def test_dataservice_api_create(self):
17
- user = self.login()
18
- datasets = DatasetFactory.create_batch(3)
19
- license = LicenseFactory.create()
20
-
21
- response = self.post(url_for('api.dataservices'), {
22
- 'title': 'My API',
23
- 'base_api_url': 'https://example.org',
24
- })
25
- self.assert201(response)
26
- self.assertEqual(Dataservice.objects.count(), 1)
27
-
28
- dataservice = Dataservice.objects.first()
29
-
30
- response = self.get(url_for('api.dataservice', dataservice=dataservice))
31
- self.assert200(response)
32
-
33
- self.assertEqual(response.json['title'], 'My API')
34
- self.assertEqual(response.json['base_api_url'], 'https://example.org')
35
- self.assertEqual(response.json['owner']['id'], str(user.id))
36
-
37
- response = self.patch(url_for('api.dataservice', dataservice=dataservice), {
38
- 'title': 'Updated title',
39
- 'tags': ['hello', 'world'],
40
- 'private': True,
41
- 'datasets': [datasets[0].id, datasets[2].id],
42
- 'license': license.id,
43
- 'extras': {
44
- 'foo': 'bar',
45
- },
46
- })
47
- self.assert200(response)
48
-
49
- self.assertEqual(response.json['title'], 'Updated title')
50
- self.assertEqual(response.json['base_api_url'], 'https://example.org')
51
- self.assertEqual(response.json['tags'], ['hello', 'world'])
52
- self.assertEqual(response.json['private'], True)
53
- self.assertEqual(response.json['datasets'][0]['title'], datasets[0].title)
54
- self.assertEqual(response.json['datasets'][1]['title'], datasets[2].title)
55
- self.assertEqual(response.json['extras'], {
56
- 'foo': 'bar',
57
- })
58
- self.assertEqual(response.json['license'], license.title)
59
- self.assertEqual(response.json['self_api_url'], 'http://local.test/api/1/dataservices/updated-title/')
60
- dataservice.reload()
61
- self.assertEqual(dataservice.title, 'Updated title')
62
- self.assertEqual(dataservice.base_api_url, 'https://example.org')
63
- self.assertEqual(dataservice.tags, ['hello', 'world'])
64
- self.assertEqual(dataservice.private, True)
65
- self.assertEqual(dataservice.datasets[0].title, datasets[0].title)
66
- self.assertEqual(dataservice.datasets[1].title, datasets[2].title)
67
- self.assertEqual(dataservice.extras, {
68
- 'foo': 'bar',
69
- })
70
- self.assertEqual(dataservice.license.title, license.title)
71
- self.assertEqual(dataservice.self_api_url(), 'http://local.test/api/1/dataservices/updated-title/')
72
-
73
- response = self.delete(url_for('api.dataservice', dataservice=dataservice))
74
- self.assert204(response)
75
-
76
- self.assertEqual(Dataservice.objects.count(), 1)
77
-
78
- dataservice.reload()
79
- self.assertEqual(dataservice.title, 'Updated title')
80
- self.assertEqual(dataservice.base_api_url, 'https://example.org')
81
- self.assertIsNotNone(dataservice.deleted_at)
82
-
83
- # response = self.get(url_for('api.dataservice', dataservice=dataservice))
84
- # self.assert410(response)
85
-
86
-
87
- def test_dataservice_api_index(self):
88
- self.login()
89
- self.post(url_for('api.dataservices'), {
90
- 'title': 'B',
91
- 'base_api_url': 'https://example.org/B',
92
- })
93
- self.post(url_for('api.dataservices'), {
94
- 'title': 'C',
95
- 'base_api_url': 'https://example.org/C',
96
- })
97
- self.post(url_for('api.dataservices'), {
98
- 'title': 'A',
99
- 'base_api_url': 'https://example.org/A',
100
- })
101
- response = self.post(url_for('api.dataservices'), {
102
- 'title': 'X',
103
- 'base_api_url': 'https://example.org/X',
104
- 'private': True,
105
- })
106
-
107
- self.assertEqual(Dataservice.objects.count(), 4)
108
-
109
- response = self.get(url_for('api.dataservices'))
110
- self.assert200(response)
111
-
112
- self.assertEqual(response.json['previous_page'], None)
113
- self.assertEqual(response.json['next_page'], None)
114
- self.assertEqual(response.json['page'], 1)
115
- self.assertEqual(response.json['total'], 3)
116
- self.assertEqual(len(response.json['data']), 3)
117
- self.assertEqual(response.json['data'][0]['title'], 'B')
118
- self.assertEqual(response.json['data'][1]['title'], 'C')
119
- self.assertEqual(response.json['data'][2]['title'], 'A')
120
-
121
- response = self.get(url_for('api.dataservices', sort='title'))
122
- self.assert200(response)
123
-
124
- self.assertEqual(response.json['previous_page'], None)
125
- self.assertEqual(response.json['next_page'], None)
126
- self.assertEqual(response.json['page'], 1)
127
- self.assertEqual(response.json['total'], 3)
128
- self.assertEqual(len(response.json['data']), 3)
129
- self.assertEqual(response.json['data'][0]['title'], 'A')
130
- self.assertEqual(response.json['data'][1]['title'], 'B')
131
- self.assertEqual(response.json['data'][2]['title'], 'C')
132
-
133
- response = self.get(url_for('api.dataservices', sort='-title'))
134
- self.assert200(response)
135
-
136
- self.assertEqual(response.json['previous_page'], None)
137
- self.assertEqual(response.json['next_page'], None)
138
- self.assertEqual(response.json['page'], 1)
139
- self.assertEqual(response.json['total'], 3)
140
- self.assertEqual(len(response.json['data']), 3)
141
- self.assertEqual(response.json['data'][0]['title'], 'C')
142
- self.assertEqual(response.json['data'][1]['title'], 'B')
143
- self.assertEqual(response.json['data'][2]['title'], 'A')
144
-
145
-
146
- response = self.get(url_for('api.dataservices', page_size=1))
147
- self.assert200(response)
148
-
149
- self.assertEqual(response.json['previous_page'], None)
150
- assert response.json['next_page'].endswith(url_for('api.dataservices', page_size=1, page=2))
151
- self.assertEqual(response.json['page'], 1)
152
- self.assertEqual(response.json['total'], 3)
153
- self.assertEqual(len(response.json['data']), 1)
154
- self.assertEqual(response.json['data'][0]['title'], 'B')
155
-
156
- def test_dataservice_api_create_with_validation_error(self):
157
- self.login()
158
- response = self.post(url_for('api.dataservices'), {
159
- 'base_api_url': 'https://example.org',
160
- })
161
- self.assert400(response)
162
- self.assertEqual(Dataservice.objects.count(), 0)
163
-
164
- def test_dataservice_api_create_with_unkwown_license(self):
165
- self.login()
166
- response = self.post(url_for('api.dataservices'), {
167
- 'title': 'My title',
168
- 'base_api_url': 'https://example.org',
169
- 'license': 'unwkown-license',
170
- })
171
- self.assert400(response)
172
- self.assertEqual(response.json['errors']['license'], ["Unknown reference 'unwkown-license'"])
173
- self.assertEqual(Dataservice.objects.count(), 0)
174
-
175
-
176
- def test_dataservice_api_create_with_unkwown_contact_point(self):
177
- self.login()
178
-
179
- response = self.post(url_for('api.dataservices'), {
180
- 'title': 'My title',
181
- 'base_api_url': 'https://example.org',
182
- 'contact_point': '66212433e42ab56639ad516e',
183
- })
184
- self.assert400(response)
185
- self.assertEqual(response.json['errors']['contact_point'], ["Unknown reference '66212433e42ab56639ad516e'"])
186
- self.assertEqual(Dataservice.objects.count(), 0)
187
-
188
-
189
- def test_dataservice_api_create_with_custom_user_or_org(self):
190
- other = UserFactory()
191
- other_member = Member(user=other, role='editor')
192
- other_org = OrganizationFactory(members=[other_member])
193
-
194
- me = self.login()
195
- me_member = Member(user=me, role='editor')
196
- me_org = OrganizationFactory(members=[me_member])
197
-
198
- response = self.post(url_for('api.dataservices'), {
199
- 'title': 'My title',
200
- 'base_api_url': 'https://example.org',
201
- 'owner': other.id,
202
- })
203
- self.assert400(response)
204
- self.assertEqual(response.json['errors']['owner'], [_("You can only set yourself as owner")])
205
- self.assertEqual(Dataservice.objects.count(), 0)
206
-
207
- response = self.post(url_for('api.dataservices'), {
208
- 'title': 'My title',
209
- 'base_api_url': 'https://example.org',
210
- 'organization': other_org.id,
211
- })
212
- self.assert400(response)
213
- self.assertEqual(response.json['errors']['organization'], [_("Permission denied for this organization")])
214
- self.assertEqual(Dataservice.objects.count(), 0)
215
-
216
-
217
- response = self.post(url_for('api.dataservices'), {
218
- 'title': 'My title',
219
- 'base_api_url': 'https://example.org',
220
- 'owner': me.id,
221
- })
222
- self.assert201(response)
223
- dataservice = Dataservice.objects(id=response.json['id']).first()
224
- self.assertEqual(dataservice.owner.id, me.id)
225
- self.assertEqual(dataservice.organization, None)
226
-
227
-
228
- response = self.post(url_for('api.dataservices'), {
229
- 'title': 'My title',
230
- 'base_api_url': 'https://example.org',
231
- 'organization': me_org.id,
232
- })
233
- self.assert201(response)
234
- dataservice = Dataservice.objects(id=response.json['id']).first()
235
- self.assertEqual(dataservice.owner, None)
236
- self.assertEqual(dataservice.organization.id, me_org.id)