udata 7.0.7.dev28351__py2.py3-none-any.whl → 7.0.7.dev28426__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.

Files changed (54) hide show
  1. udata/core/badges/tests/test_commands.py +2 -1
  2. udata/core/dataset/api.py +3 -2
  3. udata/core/dataset/api_fields.py +2 -5
  4. udata/core/dataset/apiv2.py +2 -3
  5. udata/core/dataset/commands.py +5 -5
  6. udata/core/dataset/constants.py +82 -0
  7. udata/core/dataset/forms.py +2 -0
  8. udata/core/dataset/models.py +2 -87
  9. udata/core/dataset/rdf.py +2 -1
  10. udata/core/dataset/search.py +2 -3
  11. udata/core/dataset/tasks.py +2 -1
  12. udata/core/discussions/constants.py +1 -0
  13. udata/core/discussions/forms.py +2 -1
  14. udata/core/discussions/models.py +0 -4
  15. udata/core/organization/api.py +2 -1
  16. udata/core/organization/api_fields.py +1 -4
  17. udata/core/organization/constants.py +29 -0
  18. udata/core/organization/forms.py +2 -4
  19. udata/core/organization/models.py +2 -34
  20. udata/core/organization/tasks.py +2 -1
  21. udata/core/post/constants.py +9 -0
  22. udata/core/post/forms.py +2 -1
  23. udata/core/post/models.py +1 -11
  24. udata/core/reuse/api.py +2 -1
  25. udata/core/reuse/api_fields.py +1 -1
  26. udata/core/reuse/constants.py +37 -0
  27. udata/core/reuse/factories.py +2 -1
  28. udata/core/reuse/forms.py +3 -2
  29. udata/core/reuse/models.py +2 -38
  30. udata/core/spam/api.py +1 -1
  31. udata/core/spam/constants.py +5 -0
  32. udata/core/spam/fields.py +1 -1
  33. udata/core/spam/models.py +1 -5
  34. udata/core/spam/tests/test_spam.py +2 -2
  35. udata/core/spatial/constants.py +9 -0
  36. udata/core/spatial/models.py +3 -14
  37. udata/core/topic/factories.py +1 -0
  38. udata/core/topic/parsers.py +24 -1
  39. udata/core/user/api_fields.py +1 -3
  40. udata/core/user/constants.py +2 -0
  41. udata/core/user/forms.py +1 -1
  42. udata/core/user/models.py +1 -1
  43. udata/tests/api/test_datasets_api.py +2 -3
  44. udata/tests/api/test_reuses_api.py +2 -1
  45. udata/tests/api/test_topics_api.py +40 -3
  46. udata/tests/apiv2/test_topics.py +42 -4
  47. udata/tests/dataset/test_dataset_model.py +3 -4
  48. udata/tests/site/test_site_metrics.py +2 -1
  49. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/METADATA +3 -2
  50. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/RECORD +54 -46
  51. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/LICENSE +0 -0
  52. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/WHEEL +0 -0
  53. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/entry_points.txt +0 -0
  54. {udata-7.0.7.dev28351.dist-info → udata-7.0.7.dev28426.dist-info}/top_level.txt +0 -0
udata/core/spam/api.py CHANGED
@@ -4,7 +4,7 @@ from udata.api import api, API
4
4
  from udata.auth import admin_permission
5
5
  from udata.core.discussions.models import Discussion
6
6
  from udata.core.spam.fields import potential_spam_fields
7
- from udata.core.spam.models import POTENTIAL_SPAM
7
+ from udata.core.spam.constants import POTENTIAL_SPAM
8
8
  from udata.utils import id_or_404
9
9
 
10
10
 
@@ -0,0 +1,5 @@
1
+ NOT_CHECKED = 'not_checked'
2
+ POTENTIAL_SPAM = 'potential_spam'
3
+ NO_SPAM = 'no_spam'
4
+
5
+ SPAM_STATUS_CHOICES = [NOT_CHECKED, POTENTIAL_SPAM, NO_SPAM]
udata/core/spam/fields.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from udata.api import api, fields
2
- from .models import SPAM_STATUS_CHOICES
2
+ from .constants import SPAM_STATUS_CHOICES
3
3
 
4
4
  spam_fields = api.model('Spam', {
5
5
  'status': fields.String(description='Status', enum=SPAM_STATUS_CHOICES, readonly=True),
udata/core/spam/models.py CHANGED
@@ -5,11 +5,7 @@ from udata.models import db
5
5
  from .signals import on_new_potential_spam
6
6
  from mongoengine import signals
7
7
 
8
- NOT_CHECKED = 'not_checked'
9
- POTENTIAL_SPAM = 'potential_spam'
10
- NO_SPAM = 'no_spam'
11
-
12
- SPAM_STATUS_CHOICES = [NOT_CHECKED, POTENTIAL_SPAM, NO_SPAM]
8
+ from .constants import NO_SPAM, POTENTIAL_SPAM, SPAM_STATUS_CHOICES, NOT_CHECKED
13
9
 
14
10
 
15
11
  class SpamInfo(db.EmbeddedDocument):
@@ -1,10 +1,10 @@
1
1
  import logging
2
2
  import pytest
3
3
  from udata.tests import TestCase
4
- from udata.tests.helpers import assert_not_emit
5
4
  from udata.models import db
6
5
 
7
- from ..models import POTENTIAL_SPAM, SpamMixin
6
+ from ..models import SpamMixin
7
+ from ..constants import POTENTIAL_SPAM
8
8
 
9
9
 
10
10
  log = logging.getLogger(__name__)
@@ -0,0 +1,9 @@
1
+ from udata.i18n import L_
2
+
3
+ BASE_GRANULARITIES = [
4
+ ('poi', L_('POI')),
5
+ ('other', L_('Other')),
6
+ ]
7
+
8
+ ADMIN_LEVEL_MIN = 1
9
+ ADMIN_LEVEL_MAX = 110
@@ -4,25 +4,14 @@ from werkzeug.utils import cached_property
4
4
 
5
5
  from udata.app import cache
6
6
  from udata.uris import endpoint_for
7
- from udata.i18n import _, L_, get_locale, language
7
+ from udata.i18n import _, get_locale, language
8
8
  from udata.models import db
9
9
 
10
10
  from . import geoids
11
+ from .constants import ADMIN_LEVEL_MIN, ADMIN_LEVEL_MAX, BASE_GRANULARITIES
11
12
 
12
13
 
13
- __all__ = (
14
- 'GeoLevel', 'GeoZone', 'SpatialCoverage', 'BASE_GRANULARITIES',
15
- 'spatial_granularities',
16
- )
17
-
18
-
19
- BASE_GRANULARITIES = [
20
- ('poi', L_('POI')),
21
- ('other', L_('Other')),
22
- ]
23
-
24
- ADMIN_LEVEL_MIN = 1
25
- ADMIN_LEVEL_MAX = 110
14
+ __all__ = ('GeoLevel', 'GeoZone', 'SpatialCoverage', 'spatial_granularities')
26
15
 
27
16
 
28
17
  class GeoLevel(db.Document):
@@ -16,6 +16,7 @@ class TopicFactory(ModelFactory):
16
16
  description = factory.Faker('text')
17
17
  tags = factory.LazyAttribute(lambda o: [utils.unique_string(16)
18
18
  for _ in range(3)])
19
+ private = False
19
20
 
20
21
  @factory.lazy_attribute
21
22
  def datasets(self):
@@ -1,15 +1,24 @@
1
+ from bson.objectid import ObjectId
2
+
3
+ from udata.api import api
1
4
  from udata.api.parsers import ModelApiParser
2
5
 
3
6
 
4
7
  class TopicApiParser(ModelApiParser):
5
8
  sorts = {
6
9
  'name': 'name',
7
- 'created': 'created_at'
10
+ 'created': 'created_at',
11
+ 'last_modified': 'last_modified',
8
12
  }
9
13
 
10
14
  def __init__(self):
11
15
  super().__init__()
12
16
  self.parser.add_argument('tag', type=str, location='args')
17
+ self.parser.add_argument('include_private', type=bool, location='args')
18
+ self.parser.add_argument('geozone', type=str, location='args')
19
+ self.parser.add_argument('granularity', type=str, location='args')
20
+ self.parser.add_argument('organization', type=str, location='args')
21
+ self.parser.add_argument('owner', type=str, location='args')
13
22
 
14
23
  @staticmethod
15
24
  def parse_filters(topics, args):
@@ -22,4 +31,18 @@ class TopicApiParser(ModelApiParser):
22
31
  topics = topics.search_text(phrase_query)
23
32
  if args.get('tag'):
24
33
  topics = topics.filter(tags=args['tag'])
34
+ if not args.get('include_private'):
35
+ topics = topics.filter(private=False)
36
+ if args.get('geozone'):
37
+ topics = topics.filter(spatial__zones=args['geozone'])
38
+ if args.get('granularity'):
39
+ topics = topics.filter(spatial__granularity=args['granularity'])
40
+ if args.get('organization'):
41
+ if not ObjectId.is_valid(args['organization']):
42
+ api.abort(400, 'Organization arg must be an identifier')
43
+ topics = topics.filter(organization=args['organization'])
44
+ if args.get('owner'):
45
+ if not ObjectId.is_valid(args['owner']):
46
+ api.abort(400, 'Owner arg must be an identifier')
47
+ topics = topics.filter(owner=args['owner'])
25
48
  return topics
@@ -1,9 +1,7 @@
1
1
  from udata.auth.helpers import current_user_is_admin_or_self
2
2
  from udata.api import api, fields, base_reference
3
3
 
4
- from .models import AVATAR_SIZES
5
-
6
- BIGGEST_AVATAR_SIZE = AVATAR_SIZES[0]
4
+ from .constants import BIGGEST_AVATAR_SIZE
7
5
 
8
6
 
9
7
  user_ref_fields = api.inherit('UserReference', base_reference, {
@@ -0,0 +1,2 @@
1
+ AVATAR_SIZES = [500, 200, 100, 32, 25]
2
+ BIGGEST_AVATAR_SIZE = AVATAR_SIZES[0]
udata/core/user/forms.py CHANGED
@@ -2,7 +2,7 @@ from udata.forms import ModelForm, fields, validators
2
2
  from udata.i18n import lazy_gettext as _
3
3
  from udata.models import User
4
4
 
5
- from .models import AVATAR_SIZES
5
+ from .constants import AVATAR_SIZES
6
6
 
7
7
 
8
8
  __all__ = ('UserProfileForm', 'UserProfileAdminForm')
udata/core/user/models.py CHANGED
@@ -19,10 +19,10 @@ from udata.i18n import lazy_gettext as _
19
19
  from udata.models import db, WithMetrics, Follow
20
20
  from udata.core.discussions.models import Discussion
21
21
  from udata.core.storages import avatars, default_image_basename
22
+ from .constants import AVATAR_SIZES
22
23
 
23
24
  __all__ = ('User', 'Role', 'datastore')
24
25
 
25
- AVATAR_SIZES = [500, 200, 100, 32, 25]
26
26
 
27
27
 
28
28
  # TODO: use simple text for role
@@ -25,9 +25,8 @@ from udata.core.spatial.factories import SpatialCoverageFactory
25
25
  from udata.core.topic.factories import TopicFactory
26
26
  from udata.core.user.factories import AdminFactory, UserFactory
27
27
  from udata.i18n import gettext as _
28
- from udata.models import (LEGACY_FREQUENCIES, RESOURCE_TYPES,
29
- UPDATE_FREQUENCIES, CommunityResource, Dataset,
30
- Follow, Member, db)
28
+ from udata.models import CommunityResource, Dataset, Follow, Member, db
29
+ from udata.core.dataset.constants import LEGACY_FREQUENCIES, RESOURCE_TYPES, UPDATE_FREQUENCIES
31
30
  from udata.tags import MAX_TAG_LENGTH, MIN_TAG_LENGTH
32
31
  from udata.tests.features.territories import create_geozones_fixtures
33
32
  from udata.tests.helpers import assert200, assert404, assert204
@@ -10,7 +10,8 @@ from udata.core.user.factories import AdminFactory
10
10
  from udata.core.reuse.factories import ReuseFactory
11
11
  from udata.core.organization.factories import OrganizationFactory
12
12
  from udata.core.user.factories import UserFactory
13
- from udata.models import Reuse, Follow, Member, REUSE_TOPICS, REUSE_TYPES
13
+ from udata.models import Reuse, Follow, Member
14
+ from udata.core.reuse.constants import REUSE_TOPICS, REUSE_TYPES
14
15
  from udata.utils import faker
15
16
 
16
17
  from udata.tests.helpers import (
@@ -1,9 +1,10 @@
1
1
  from flask import url_for
2
2
 
3
3
  from udata.core.organization.factories import OrganizationFactory
4
+ from udata.core.spatial.factories import SpatialCoverageFactory
4
5
  from udata.core.spatial.models import spatial_granularities
5
- from udata.core.topic.models import Topic
6
6
  from udata.core.topic.factories import TopicFactory
7
+ from udata.core.topic.models import Topic
7
8
  from udata.core.user.factories import UserFactory
8
9
  from udata.models import Member, Discussion
9
10
  from udata.tests.api.test_datasets_api import SAMPLE_GEOM
@@ -17,13 +18,23 @@ class TopicsAPITest(APITestCase):
17
18
 
18
19
  def test_topic_api_list(self):
19
20
  '''It should fetch a topic list from the API'''
20
- TopicFactory.create_batch(3)
21
+ owner = UserFactory()
22
+ org = OrganizationFactory()
23
+ paca, _, _ = create_geozones_fixtures()
24
+
21
25
  tag_topic = TopicFactory(tags=['energy'])
22
26
  name_topic = TopicFactory(name='topic-for-query')
27
+ private_topic = TopicFactory(private=True)
28
+ geozone_topic = TopicFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
29
+ granularity_topic = TopicFactory(
30
+ spatial=SpatialCoverageFactory(granularity='country')
31
+ )
32
+ owner_topic = TopicFactory(owner=owner)
33
+ org_topic = TopicFactory(organization=org)
23
34
 
24
35
  response = self.get(url_for('api.topics'))
25
36
  self.assert200(response)
26
- self.assertEqual(len(response.json['data']), 5)
37
+ self.assertEqual(len(response.json['data']), 6)
27
38
 
28
39
  response = self.get(url_for('api.topics', q='topic-for'))
29
40
  self.assert200(response)
@@ -49,6 +60,32 @@ class TopicsAPITest(APITestCase):
49
60
  self.assertIsNotNone(reuse['uri'])
50
61
  self.assertEqual(len(reuses), 3)
51
62
 
63
+ response = self.get(url_for('api.topics', include_private='true'))
64
+ self.assert200(response)
65
+ self.assertEqual(len(response.json['data']), 7)
66
+ self.assertIn(str(private_topic.id), [t['id'] for t in response.json['data']])
67
+
68
+ response = self.get(url_for('api.topics', geozone=paca.id))
69
+ self.assert200(response)
70
+ self.assertEqual(len(response.json['data']), 1)
71
+ self.assertIn(str(geozone_topic.id), [t['id'] for t in response.json['data']])
72
+
73
+ response = self.get(url_for('api.topics', granularity='country'))
74
+ self.assert200(response)
75
+ self.assertEqual(len(response.json['data']), 1)
76
+ self.assertIn(str(granularity_topic.id), [t['id'] for t in response.json['data']])
77
+
78
+ response = self.get(url_for('api.topics', owner=owner.id))
79
+ self.assert200(response)
80
+ self.assertEqual(len(response.json['data']), 1)
81
+ self.assertIn(str(owner_topic.id), [t['id'] for t in response.json['data']])
82
+
83
+ response = self.get(url_for('api.topics', organization=org.id))
84
+ self.assert200(response)
85
+ self.assertEqual(len(response.json['data']), 1)
86
+ self.assertIn(str(org_topic.id), [t['id'] for t in response.json['data']])
87
+
88
+
52
89
  def test_topic_api_get(self):
53
90
  '''It should fetch a topic from the API'''
54
91
  topic = TopicFactory()
@@ -1,10 +1,13 @@
1
1
  from flask import url_for
2
2
 
3
- from udata.tests.api import APITestCase
4
3
  from udata.core.dataset.factories import DatasetFactory
5
- from udata.core.topic.factories import TopicFactory
4
+ from udata.core.organization.factories import OrganizationFactory
5
+ from udata.core.spatial.factories import SpatialCoverageFactory
6
6
  from udata.core.reuse.factories import ReuseFactory
7
+ from udata.core.topic.factories import TopicFactory
7
8
  from udata.core.user.factories import UserFactory
9
+ from udata.tests.api import APITestCase
10
+ from udata.tests.features.territories import create_geozones_fixtures
8
11
 
9
12
 
10
13
  class TopicsAPITest(APITestCase):
@@ -12,14 +15,24 @@ class TopicsAPITest(APITestCase):
12
15
 
13
16
  def test_topic_api_list(self):
14
17
  '''It should fetch a topic list from the API'''
15
- TopicFactory.create_batch(3)
18
+ owner = UserFactory()
19
+ org = OrganizationFactory()
20
+ paca, _, _ = create_geozones_fixtures()
21
+
16
22
  tag_topic = TopicFactory(tags=['energy'])
17
23
  name_topic = TopicFactory(name='topic-for-query')
24
+ private_topic = TopicFactory(private=True)
25
+ geozone_topic = TopicFactory(spatial=SpatialCoverageFactory(zones=[paca.id]))
26
+ granularity_topic = TopicFactory(
27
+ spatial=SpatialCoverageFactory(granularity='country')
28
+ )
29
+ owner_topic = TopicFactory(owner=owner)
30
+ org_topic = TopicFactory(organization=org)
18
31
 
19
32
  response = self.get(url_for('apiv2.topics_list'))
20
33
  assert response.status_code == 200
21
34
  data = response.json['data']
22
- assert len(data) == 5
35
+ assert len(data) == 6
23
36
 
24
37
  hateoas_fields = ["rel", "href", "type", "total"]
25
38
  assert all(k in data[0]["datasets"] for k in hateoas_fields)
@@ -35,6 +48,31 @@ class TopicsAPITest(APITestCase):
35
48
  assert len(response.json['data']) == 1
36
49
  assert response.json['data'][0]['id'] == str(tag_topic.id)
37
50
 
51
+ response = self.get(url_for('api.topics', include_private='true'))
52
+ assert response.status_code == 200
53
+ assert len(response.json['data']) == 7
54
+ assert str(private_topic.id) in [t['id'] for t in response.json['data']]
55
+
56
+ response = self.get(url_for('api.topics', geozone=paca.id))
57
+ assert response.status_code == 200
58
+ assert len(response.json['data']) == 1
59
+ assert str(geozone_topic.id) in [t['id'] for t in response.json['data']]
60
+
61
+ response = self.get(url_for('api.topics', granularity='country'))
62
+ assert response.status_code == 200
63
+ assert len(response.json['data']) == 1
64
+ assert str(granularity_topic.id) in [t['id'] for t in response.json['data']]
65
+
66
+ response = self.get(url_for('api.topics', owner=owner.id))
67
+ assert response.status_code == 200
68
+ assert len(response.json['data']) == 1
69
+ assert str(owner_topic.id) in [t['id'] for t in response.json['data']]
70
+
71
+ response = self.get(url_for('api.topics', organization=org.id))
72
+ assert response.status_code == 200
73
+ assert len(response.json['data']) == 1
74
+ assert str(org_topic.id) in [t['id'] for t in response.json['data']]
75
+
38
76
  def test_topic_api_get(self):
39
77
  '''It should fetch a topic from the API'''
40
78
  topic = TopicFactory()
@@ -3,12 +3,11 @@ from datetime import datetime, timedelta
3
3
  import pytest
4
4
  import requests
5
5
  from flask import current_app
6
- from mongoengine import post_save, ValidationError
6
+ from mongoengine import post_save
7
7
 
8
8
  from udata.app import cache
9
- from udata.models import (
10
- db, Dataset, License, LEGACY_FREQUENCIES, ResourceSchema, UPDATE_FREQUENCIES, Schema, FieldValidationError
11
- )
9
+ from udata.models import db, Dataset, License, ResourceSchema, Schema
10
+ from udata.core.dataset.constants import LEGACY_FREQUENCIES, UPDATE_FREQUENCIES
12
11
  from udata.core.dataset.models import HarvestDatasetMetadata, HarvestResourceMetadata
13
12
  from udata.core.dataset.factories import (
14
13
  ResourceFactory, DatasetFactory, CommunityResourceFactory, LicenseFactory, ResourceSchemaMockData
@@ -4,7 +4,8 @@ from udata.core.dataset.factories import DatasetFactory, HiddenDatasetFactory, O
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
7
- from udata.models import Badge, PUBLIC_SERVICE
7
+ from udata.models import Badge
8
+ from udata.core.organization.constants import PUBLIC_SERVICE
8
9
 
9
10
 
10
11
  @pytest.mark.usefixtures('clean_db')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 7.0.7.dev28351
3
+ Version: 7.0.7.dev28426
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -138,7 +138,8 @@ It is collectively taken care of by members of the
138
138
 
139
139
  ## Current (in progress)
140
140
 
141
- - Nothing yet
141
+ - Topic: add filters in API [#3007](https://github.com/opendatateam/udata/pull/3007)
142
+ - Move constants outside `models.py` files to `constants.py` [#3001](https://github.com/opendatateam/udata/pull/3001)
142
143
 
143
144
  ## 7.0.6 (2024-03-29)
144
145
 
@@ -67,7 +67,7 @@ udata/core/badges/permissions.py,sha256=5jFKFG4OlVp0pL0xSa7AGO0Ttn0QMsy9xEY2jTfK
67
67
  udata/core/badges/signals.py,sha256=T12kgKO1lmIbdXlKnRmedYRnJzC2PZIMkrtcA1U2mNo,237
68
68
  udata/core/badges/tasks.py,sha256=LA1Sd0B0uUa6OANqmx0t-kDNK99uGePwwtilsdj9Evw,431
69
69
  udata/core/badges/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- udata/core/badges/tests/test_commands.py,sha256=yodBaD426tkGAc-HTAWl2v2wzwQ6WNoa-V6VtLdJk1Q,1319
70
+ udata/core/badges/tests/test_commands.py,sha256=BcfB0eo8ICCF5E0Z2ryu0pmp6istFZEt56mZkJMQTPo,1364
71
71
  udata/core/badges/tests/test_model.py,sha256=vM0j4mf0oj7tYGb9OkTK6wOx2uct8vj3C-7pM0jdn78,4929
72
72
  udata/core/contact_point/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  udata/core/contact_point/api.py,sha256=PyurW-Je4iRJlagyvDOkIhp_xINHqghNIiHjtqQTL0I,1918
@@ -78,29 +78,31 @@ udata/core/contact_point/models.py,sha256=sazF_oCe-Vdm-EQdQ6TfcHqmt11rKo36FT88ZX
78
78
  udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
79
  udata/core/dataset/actions.py,sha256=3pzBg_qOR-w7fwPpTOKUHXWC9lkjALbOn1UQFmmT-s0,1199
80
80
  udata/core/dataset/activities.py,sha256=qQnHNL0hOB1IGtQl7JsnVOiUsWT0gm-pts9uDyR3bvU,1536
81
- udata/core/dataset/api.py,sha256=UD9O_S3vO1kmrJzbcKuO88lcW8CYR2D66JLeYMUHjWk,28727
82
- udata/core/dataset/api_fields.py,sha256=u26bdsTwnSLkLpXcF068QwqeN69PvXuUtvvt1PUDnTE,14358
83
- udata/core/dataset/apiv2.py,sha256=3vz7t-T_2HXmqBKPxLYGoVHn8m95ikMEd8J8gfVUmLI,15737
84
- udata/core/dataset/commands.py,sha256=UO769j5PBjLNRDgy5pBEZVRgwuTBBhbwkhwmx4CEgdo,3673
81
+ udata/core/dataset/api.py,sha256=2vs6wbIhc1fN4mCZ88nK7kM5oQ9CZ5OwQXrSwc57Z8I,28750
82
+ udata/core/dataset/api_fields.py,sha256=6gSj6GP_PNQtsIcbLDMjC56GPNOtlm3IL_OlNGRIG2E,14335
83
+ udata/core/dataset/apiv2.py,sha256=XzEwtmC53Mw0mq8NEMCD2cN52pCmrUkPu0adUj4wGyw,15751
84
+ udata/core/dataset/commands.py,sha256=dbK7gMYH4G6pOPiYtmL3yomzg5MGqTaG97_UM9Smu_k,3712
85
+ udata/core/dataset/constants.py,sha256=Twml-I5mGiIdTkiDV1D4bXqi_TcNhcEc-QFxorUKHM4,3138
85
86
  udata/core/dataset/csv.py,sha256=d6JMuvlov_vR7EN10rJa6Q03Il0PfbzMTHQIud5H8qg,3240
86
87
  udata/core/dataset/events.py,sha256=DI71VfRc1eDTtgWQ3TJx5gtUw2MO0O_CVLCKLq0OIF0,3207
87
88
  udata/core/dataset/exceptions.py,sha256=uI_NvZRZMr_MtYQBYdLD8tk-BIUeDDfMMcrWwqV7mi8,494
88
89
  udata/core/dataset/factories.py,sha256=_sAW0FeEPC5bIKVCnjxnWmKBNU5jRss1AjVaQaMi8Lo,2737
89
- udata/core/dataset/forms.py,sha256=auVYxLrPMdtvf2uhgEpJviHiQOSfLpBJdpZ3dXwcjNs,6154
90
- udata/core/dataset/models.py,sha256=T9dBPoeex6ohQqPcDKxwAb6GhqGN0rED7Vjw6MLDz2s,39461
90
+ udata/core/dataset/forms.py,sha256=kICGBzoTal_ipXw9DqhnOWKQK8x7scQI9mEe0JGMt9g,6181
91
+ udata/core/dataset/models.py,sha256=E_n4E6f7_XUzovHs9KonwhO3cDUKjgenH_01_j_gsUk,36425
91
92
  udata/core/dataset/permissions.py,sha256=3F2J7le3_rEYNhh88o3hSRWHAAt01_yHJM6RPmvCrRo,1090
92
93
  udata/core/dataset/preview.py,sha256=puPKT3fBD7ezAcT6owh0JK1_rGNDFZOqgT223qGn3LY,2597
93
- udata/core/dataset/rdf.py,sha256=pwYQLzpWXAZWThOMVx70pusTb7SzLgk7wh_9-ldPFAY,22808
94
- udata/core/dataset/search.py,sha256=GAdXBI8RhBXPUxd9Mp-44QB-Evwk5Be5XZZJ64T8bQQ,5282
94
+ udata/core/dataset/rdf.py,sha256=oQqVpDvDCQKsfp5LKlIXACxLg89LpA2ydbkICxZCvT0,22830
95
+ udata/core/dataset/search.py,sha256=Ca23ljX7TZiKZKiAZQIH5xwS2tjXQcTDzieAJd-E22c,5314
95
96
  udata/core/dataset/signals.py,sha256=TK6dfrOUitZZkGGOh6XmhYqYvIjzZpI70JTLV4k-JRM,161
96
- udata/core/dataset/tasks.py,sha256=VB1sQ6Fwbax46IRLGyZUDPGgGOWBYrzAlKzV3npDCyM,8412
97
+ udata/core/dataset/tasks.py,sha256=UYdm_O9hA0yo7cCNQFvZE9pGzUshkc3Wr4Gpel2aupU,8434
97
98
  udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
99
  udata/core/discussions/actions.py,sha256=l8FaRpNdnwq5M7IYA9lh1qhhTlk2XOnYkgt0dLJpowU,789
99
100
  udata/core/discussions/api.py,sha256=YlLxVA3GFcek8Q9Qb-R8KbNza2Ia3a9zNTU9PGewims,8554
101
+ udata/core/discussions/constants.py,sha256=nbZgXESpg0TykIGPxW8xUtHtk7TwQoyOL0Ky4U4B7c8,27
100
102
  udata/core/discussions/factories.py,sha256=NQd_tD0Izrm67uO5HuuClmluteACrRd9PHrb2IkQ0P0,350
101
- udata/core/discussions/forms.py,sha256=PJ1z_q2erqG3aoRrbITKeUeuHcUO-iiL1pp7WU2lnb8,806
103
+ udata/core/discussions/forms.py,sha256=daDc8vPDhaXjiEyniugiRC6pyv6OsflgIyO-KoAn6i8,828
102
104
  udata/core/discussions/metrics.py,sha256=qtgyDhM1aPgh8bGU-h-962EKR3J44imC155JVi6jvJI,362
103
- udata/core/discussions/models.py,sha256=MTnUgcQgcX1K7GscYMvWdiS7EcTUbFljxM0QGoPNfUE,3391
105
+ udata/core/discussions/models.py,sha256=zU4EldaJtE-9pGlabetIlOFF_y3Kag2GxpNtwmk4jQ4,3361
104
106
  udata/core/discussions/notifications.py,sha256=1lsu8WyyOL4bdt0lx6IW5wTxmQ5gS_7FoncN53g3ToQ,927
105
107
  udata/core/discussions/permissions.py,sha256=q3tXNuNmuXCvZhKyudROcwXF53l-IeDR3pfKSh_hIL0,636
106
108
  udata/core/discussions/signals.py,sha256=zjuF-TiFwu9U_RcgZtHB2Z3W4oBx5hVZy6CCAl5Ekug,543
@@ -125,39 +127,42 @@ udata/core/metrics/signals.py,sha256=Xs_k-9lWzsoZU5Joli-41FNgvIVvbAejkjSFB6DHxh0
125
127
  udata/core/metrics/tasks.py,sha256=Z7La3-zPB5j6qJoPKr_MgjNZhqscZCmNLPa711ZBkdY,797
126
128
  udata/core/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
129
  udata/core/organization/activities.py,sha256=fOBujmduVoTxJph2C6Z4qHeQHOaJT9IsZooEDCWC4BA,1140
128
- udata/core/organization/api.py,sha256=dqXecBhVMvLb2xUcqno25oX1DwBDKg2qxjItDlvEtNQ,17429
129
- udata/core/organization/api_fields.py,sha256=x1UXdRnwNzJ4veyJJc-S5MxbnoArAM7rrUn1OIZXo7E,5426
130
+ udata/core/organization/api.py,sha256=kqcjsus3Mnso5dxnMACYIDWhSuXBTCVgYctFa7rhgT8,17451
131
+ udata/core/organization/api_fields.py,sha256=5NEePyZ515DqpDVHf1HWQJhUXsb8H74LVywlAC5_I44,5400
130
132
  udata/core/organization/apiv2.py,sha256=VAU_y9Zz-VhBgS-LWVbGOEZdSt3b44nZd5bzTV2wU8g,3206
131
133
  udata/core/organization/commands.py,sha256=FaSYxyWfQDR5tWvrAXmwcF2VMREOC13XTK8DD4vp_sY,1623
134
+ udata/core/organization/constants.py,sha256=XGVnItrJTG0hcVKRK5sPmx44KHC9r_EKtj_y0MmBt0o,563
132
135
  udata/core/organization/csv.py,sha256=x0afMfhWYvx_karwuw5jXqBhMbzkrsiEuAq1wTVurZI,1491
133
136
  udata/core/organization/factories.py,sha256=5BABVcDhEChRhJsDfCDm8WyJG4l9j3H1_OFZa3VtlVs,646
134
- udata/core/organization/forms.py,sha256=SLREg-Sfza7uQcFEOqfUBhCbP2U8Ek2gWX2xe5EUWpA,3540
137
+ udata/core/organization/forms.py,sha256=JXXv4tQGbIbICti7RXLVZdnc6VujATmLhDrHIsFxBME,3550
135
138
  udata/core/organization/metrics.py,sha256=nQiRscXRgpuzpfg5nNE6-kyJqk36KdRXKD_G5MmiJok,750
136
- udata/core/organization/models.py,sha256=gmsAtJQerGQZ6fNG3klDIe7NHL_LC31SOP3Itq6aP8Q,8750
139
+ udata/core/organization/models.py,sha256=Y7iFRQY6m87nKZNUMK9qsZJXZ6xzA6t2q_YxAm8K7Dg,8315
137
140
  udata/core/organization/notifications.py,sha256=j-2LIHZ5y5QuVietWAWOrAqf4v1HMCtSDZ0w7V-z_1c,763
138
141
  udata/core/organization/permissions.py,sha256=cNIPiPgXVW2hvKqbuKHA_62tX2xaT8jiVJ3BEfnsHn0,1299
139
142
  udata/core/organization/rdf.py,sha256=ZSoxyZDj_5g6hv7lbTIy6bIW3xwvQy27rWNgJwtZ6LE,1762
140
143
  udata/core/organization/search.py,sha256=8DdHqKv6jmLibfts667BoUjc0YrmnM8V4lBJnyRIaE0,2127
141
144
  udata/core/organization/signals.py,sha256=dm2fVzwX3TZV_c5qDx61glcWKgb7TSx2JaaMfBG0Q6o,488
142
- udata/core/organization/tasks.py,sha256=feZoRSGH9zSny3g6BsihPqhnn9kPC041UgP0lsr8L4E,5766
145
+ udata/core/organization/tasks.py,sha256=UKW1dDNUxuLPPwruayYujJJTcgfPx7PFfqW6i9wQxYE,5788
143
146
  udata/core/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
147
  udata/core/post/api.py,sha256=eH9dw8u7_Tx6FP19Dvv91nyRGHSWKPR1pTzSkVXIeA4,5369
148
+ udata/core/post/constants.py,sha256=ibocNUJ1s1mw88QCrKz8n1DSkOBnWuSqo7Y5-Yd75kg,196
145
149
  udata/core/post/factories.py,sha256=0aXYbf11Rl0KJyntNE0LjPaUnpvr4YqvqdTPfvGlyvM,619
146
- udata/core/post/forms.py,sha256=PKnuCHxjuDLwSZjYO2oxFhEPQ-9BA3UusIxNlYb8p7M,946
147
- udata/core/post/models.py,sha256=bfdvXreSaeUHBiy1RrDr6_a3L_PtwdjOwIIxexrZUpE,2021
150
+ udata/core/post/forms.py,sha256=ff1efEcFkPRVMWA9YtvCAx0Msy69I7P34WgZsh_jK1E,968
151
+ udata/core/post/models.py,sha256=7OyMCIiQzj2OXsYdQon1_HOyiA06nXj1VAqbNVf5EK4,1910
148
152
  udata/core/post/permissions.py,sha256=uofU0TehhOGYyUoRXf3wuy816_D3xwMmaJbDvV336sw,83
149
153
  udata/core/post/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
154
  udata/core/post/tests/test_api.py,sha256=LSJQQDUtUVdpwZNpnJaX3yNQYyjkjTTyO7mHnR5DR_I,3948
151
155
  udata/core/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
156
  udata/core/reuse/activities.py,sha256=rdl_CR3RJPBMonsHYmPnPVDvCYozNdXN2H1ILrTItNQ,1417
153
- udata/core/reuse/api.py,sha256=PUDfEKJD6MrNBQwu5q39ikIXs0mYKkzjI_-CBq9lHFc,10187
154
- udata/core/reuse/api_fields.py,sha256=tBzRduvfuqM0_t_9uMoCmPnzQp0MLDEozh01tBcwdl0,4865
157
+ udata/core/reuse/api.py,sha256=5z5tH7debD_rMmineB-fQ-lNKpZySA5u7TL7dd5hlag,10209
158
+ udata/core/reuse/api_fields.py,sha256=NF0bSKWepyNzzKtG2MibflZrqNwf1FPtNqjpbTSAONY,4868
155
159
  udata/core/reuse/apiv2.py,sha256=Op4f6pSMdUuLcCwNadojJfHfU6UYohrzSxlJbRn3wHc,824
160
+ udata/core/reuse/constants.py,sha256=pbCR1xX9v4tdewlOx8bgNmy1-5V9OXIbpNjJivnQ--A,1215
156
161
  udata/core/reuse/csv.py,sha256=k-syWGC7hJnqfaOtPRFFn8P8skCDcrnMWNWbJ3fUyXo,727
157
- udata/core/reuse/factories.py,sha256=JsV7arI2IteRpI6C2OpB4JnahhO5wHtQW1xFZG1UO4k,840
158
- udata/core/reuse/forms.py,sha256=cRkN7fUbR7issmkSDU0tTcvHXvPFsyCFol69q__nPl8,1764
162
+ udata/core/reuse/factories.py,sha256=lTABDzgyxDhgTQhjsJb54B0TtTyu2uXlcN_1fU29G_8,862
163
+ udata/core/reuse/forms.py,sha256=UI3dYNgx9r9QxN-f2voxIXE_Dsx7lpLxuOsmc0VtXj4,1805
159
164
  udata/core/reuse/metrics.py,sha256=uh0CxErJ8OxrQvajCSfKvQRbhB9rXKzTZ1AhyEMQvP0,161
160
- udata/core/reuse/models.py,sha256=JbqN9J7pN1DSBjYrF0m2iWZh8PTKoeCAl3-i5dhU5PU,6988
165
+ udata/core/reuse/models.py,sha256=qBbvgxPiLhgizpJ5XVFCixWjRub3NY_sg3WsQehTZZ0,5861
161
166
  udata/core/reuse/permissions.py,sha256=-7lq32HuhIswR-yGv3Mp02cuEdG0YNam4VB2OnZZVEs,560
162
167
  udata/core/reuse/search.py,sha256=I3FX-9YP_cEqw5GFwFv2iqLZExeaQXsak13RMSCN7t8,2886
163
168
  udata/core/reuse/signals.py,sha256=2vv668u8miJ9t6H-FwRgXcWwsYMQem3oLNXp36rKtno,155
@@ -169,20 +174,22 @@ udata/core/site/forms.py,sha256=lPnxm0MDhK7_ORzPgJLcCAPMj59hDrJ80gwRSW-jtIo,469
169
174
  udata/core/site/models.py,sha256=96IZHtPaMio7VMNCdP1Km_SL1GlMErwBuDqgUXfzKVY,5981
170
175
  udata/core/site/rdf.py,sha256=ONKksnuZTFH9Hdd6BE42a1769zJynna68rG-M30PAZQ,1858
171
176
  udata/core/spam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
- udata/core/spam/api.py,sha256=ehYtb6Dei1eZYcGbWhpSUDphZ7TMRZDjl4Zv-snZ5cA,1671
173
- udata/core/spam/fields.py,sha256=tzS2PSJrV0ebmp3X2Y0GUwUL8EVd0NtuUTTWq3Af-sM,307
174
- udata/core/spam/models.py,sha256=FQ7W36yJhQZa-uOxggJj8HtNuNxM4uW_8M1xW_u6uTQ,8032
177
+ udata/core/spam/api.py,sha256=8tVRPorw56kxgN64kme5nLkUfh8Gai9QyqT8aNQn9Xo,1674
178
+ udata/core/spam/constants.py,sha256=M-wvYlcFnpUDortccIKFHWZ45vbNuMPWSvqKm2itn4w,143
179
+ udata/core/spam/fields.py,sha256=ppazY9bGnz7mujmDndbxG3pPG_1HDUJCbIufxyD1UNQ,310
180
+ udata/core/spam/models.py,sha256=u07LqZbxyeGq68UVtpZzEM9ihqOp52jIX8oJwuVGK5Q,7969
175
181
  udata/core/spam/signals.py,sha256=4VVLyC2I39LFAot4P56nHzY0xumjMBDz_N0Ff_kgBd0,159
176
182
  udata/core/spam/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- udata/core/spam/tests/test_spam.py,sha256=IuSRVoVCLBjJuoCXnPZx8XjtRyt5q2LrSBtIp8Hovg4,702
183
+ udata/core/spam/tests/test_spam.py,sha256=CBXXnyKMlMFBpFLzSVL6yG8nZ8lV9RAElxWe4XFVdGA,677
178
184
  udata/core/spatial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
185
  udata/core/spatial/api.py,sha256=tlApg3JpqbO6CwEwp1LzZ1hyPQreVEgF3H5yrcAPE74,5848
180
186
  udata/core/spatial/api_fields.py,sha256=ymGK3FyE2KNlASOU5GiPgZGeBjjOqnOyCOcRCbuw3D8,2629
181
187
  udata/core/spatial/commands.py,sha256=qdJ4mUg3NUTrGx6L5MKPh1usvxmeCn8xMCZNGKyjWYE,6914
188
+ udata/core/spatial/constants.py,sha256=u_4OwAAVYqT0VX6nw_Hc4wIRUPcYww19EFJcnWuMZNo,146
182
189
  udata/core/spatial/factories.py,sha256=GxUU8nRtSoGPw2m3Q-al0PYps2oSnlqC-bM7Eeu14rk,3288
183
190
  udata/core/spatial/forms.py,sha256=tXlYKge5Rc8L8pOjfUo1-9howgVJZDAh7q8xTIlbBww,3218
184
191
  udata/core/spatial/geoids.py,sha256=UqCto4dtQYPXOxyG7sx_0npzM6yvId40ngw3eAlmioQ,1159
185
- udata/core/spatial/models.py,sha256=WA1jXgw6LYU_5uRrB8WXDIYYFZl4mzbRnJ5_VMkobRA,5105
192
+ udata/core/spatial/models.py,sha256=SSCnNtk7xyRx7n2v118rn4aD5aUvwvNbxlzk0XUCl6Y,5022
186
193
  udata/core/spatial/translations.py,sha256=7BjZAMPObm1fwM5U_wnrlpcG-1FtMoS6Z5E3h3Y3sog,533
187
194
  udata/core/spatial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
195
  udata/core/spatial/tests/test_api.py,sha256=BySPgLpHvWs3vBIX2_7vJkuqfrFBIsTHtdg6PXOsE_U,10171
@@ -203,20 +210,21 @@ udata/core/tags/views.py,sha256=BoBktrbx0tqkIu3yYLj_XJjB7ZHu_tq5vfEBrh0MUwI,384
203
210
  udata/core/topic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
211
  udata/core/topic/api.py,sha256=G3hN4e9rK5mIYvDLvPpAOo_DN2SySAGykVVvXGx4uMY,5105
205
212
  udata/core/topic/apiv2.py,sha256=cf-WUSZ7P6Tss3S8utS-uhreLgGI5XR3nn_1UWiZ_Xs,9846
206
- udata/core/topic/factories.py,sha256=Vy9dMVSI6XMeAWhxLH1OFJ0vbmEoOtStPDE6HF_nIc4,697
213
+ udata/core/topic/factories.py,sha256=ksWcIAoYiKCS48q2-RKMYbNJfz1z9H0fBYM9lswFr-8,717
207
214
  udata/core/topic/forms.py,sha256=XqGI4nANdsm2UkIiGAuVqEdZkN5N9sqJ4VaM_PhTaVQ,987
208
215
  udata/core/topic/models.py,sha256=PZsYfiuEU86iL1x-qvDevn4Io8lKGahAbqky03j1N2k,2071
209
- udata/core/topic/parsers.py,sha256=oe_4ehnlgPKre2GG1LA6hcQa6H5V5q1adUsQIzVqb_Q,876
216
+ udata/core/topic/parsers.py,sha256=p2JCGfjeqb5GQTstZssclzLRLqUHy7KWJ7TDcLSF51M,2103
210
217
  udata/core/topic/permissions.py,sha256=RtFPPlxuU_Bv7ip6LDO4AoPrKFnIOEs9cCMXaSSmEdk,118
211
218
  udata/core/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
219
  udata/core/user/activities.py,sha256=AMRbYgum8uJXAS3L-ddQN-xKtKRvsmesDZ0ItBY_jS0,2799
213
220
  udata/core/user/api.py,sha256=QQmTsUfm_RB698xkRPSSZduGPtvMM1WKGzupdUICFw4,12738
214
- udata/core/user/api_fields.py,sha256=1wIRNnux_MsaJnIAAJW79fIhoOZLc2YDRqfd_SDB-Ls,5081
221
+ udata/core/user/api_fields.py,sha256=aWw-vaLy5KqE8vr6HtWzoAbzHI8aoi9BV-m-oY7FJfo,5052
215
222
  udata/core/user/commands.py,sha256=DlNBFaojhhPHH4kZazp0NMwYWnzPZXBba_vqH-cfR1U,3156
223
+ udata/core/user/constants.py,sha256=aTluhTR2RGZ_cdG7-mkEoT5Ndbg8BNUwwzCOld0aLMY,77
216
224
  udata/core/user/factories.py,sha256=JiY-AghapelwhAVAExiUEHS1odyIu4PppWuhtZnkjBY,790
217
- udata/core/user/forms.py,sha256=3VmR3GE9gJQltMTWErh5YfAdw1NmEtSBnnR1oLi0K1Q,989
225
+ udata/core/user/forms.py,sha256=XKhZFiXtTp_o0J4feLI2RQAjsmrf2CsyRQJ8n_gFVVg,992
218
226
  udata/core/user/metrics.py,sha256=sHw76gkprLp0oKWJf1uQqShBbgC43lZm7A5OSCuueAw,895
219
- udata/core/user/models.py,sha256=THwBeGHqADTDyuP6Ym5UKzD8vxRlvcH16YmkC6cvzeg,9506
227
+ udata/core/user/models.py,sha256=VTIdPE4yROvcIUFpEd6GH0IA_v36pACWqFo3i1Ko-YM,9503
220
228
  udata/core/user/permissions.py,sha256=unBqNHcTAFYpN_kn0FTDLOYMPyWVeOvW7TQyeJkUI-M,436
221
229
  udata/core/user/rdf.py,sha256=pE0ISNBgQ3AnbtuzCE91XQmi5Cq_S0cMehbaqZFww7Q,867
222
230
  udata/core/user/tasks.py,sha256=drBhjauaydPcZb7y4ton6PhlXd5rmmZe5EbPWCzELkA,317
@@ -571,22 +579,22 @@ udata/tests/api/__init__.py,sha256=Tz_WigHLDlnJNKOKzEAnJswkKiLtHlIpCE54-wgocgM,9
571
579
  udata/tests/api/test_auth_api.py,sha256=3Zhn2A29poZIcCJ_R9_-LkR3xOFUTw1aTquiZVXQ2F0,20306
572
580
  udata/tests/api/test_base_api.py,sha256=DRX5nuFIj51GFmMIAxUzoW1yiq1apNgr1vS4U4agzeg,2319
573
581
  udata/tests/api/test_contact_points.py,sha256=MJm8B06iaUqIZCqxll3NViFwUCxwqZZ4u9e9s1h8MgU,1056
574
- udata/tests/api/test_datasets_api.py,sha256=Wdy0HfWKVtMBhMA9OJVs3WXOpmVi_dKlx1-OoekKNw0,81204
582
+ udata/tests/api/test_datasets_api.py,sha256=X4Mp4HZJ6CNkmsl49piIHY4ZpZZht18faC3ReoqakGc,81190
575
583
  udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
576
584
  udata/tests/api/test_follow_api.py,sha256=0h54P_Dfbo07u6tg0Rbai1WWgWb19ZLN2HGv4oLCWfg,3383
577
585
  udata/tests/api/test_me_api.py,sha256=8OthqVYQKZrFoGuJ7zAvoLJx1IclPNzPdD5Tnzmh3rM,14163
578
586
  udata/tests/api/test_organizations_api.py,sha256=HxeTqP14wlWGaQt4fpQljuRy98HWnmL1QelcxbJDmV0,32704
579
- udata/tests/api/test_reuses_api.py,sha256=gQ-o4JXK2S6z2yW13-i8e81pCdr9j2yyM1KinPbkc5g,16971
587
+ udata/tests/api/test_reuses_api.py,sha256=GSoZ6SBRdMg6o0xKSQWtCSfvzqz_vZxERU567Rq1_GY,17009
580
588
  udata/tests/api/test_swagger.py,sha256=tLg452rCD5Q0AgFXOVZKMM6jGiWwC5diX5PxbdYni0o,760
581
589
  udata/tests/api/test_tags_api.py,sha256=xSIx_x5gqKz6BJCXKEsTqA_CR4BF1nG5NxEyfp9dy0o,2579
582
- udata/tests/api/test_topics_api.py,sha256=BYkfBJpz58DbCZ_fgPvpH0unKPJ1PY8B5dm9Km4YWkQ,7586
590
+ udata/tests/api/test_topics_api.py,sha256=RItjoO7g2o2BZ34cOHJvPoSus_jIe-AYHFrX_iaHQ4o,9322
583
591
  udata/tests/api/test_transfer_api.py,sha256=aGGJp79YYHQQyMAKhp7urk4eD587v3kbIy-8rJ_kk1s,2901
584
592
  udata/tests/api/test_user_api.py,sha256=NVXsn-sRrMQYbbUyJ2_I2_C3UPfzgCZv-us6RvM5VE8,13597
585
593
  udata/tests/apiv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
586
594
  udata/tests/apiv2/test_datasets.py,sha256=j2cuaGtTnpF5TAvuzMEmx0uEXvuANlIKS5quupJocx4,17953
587
595
  udata/tests/apiv2/test_organizations.py,sha256=CpNG8xl13rZXxTN2-JRx9ZkyI7IuQUaOsNuumUxuB3I,6704
588
596
  udata/tests/apiv2/test_swagger.py,sha256=D8jpRqDUmqVkNVYkYaXfvMPUc7OBVs_dMsC13KZciWE,785
589
- udata/tests/apiv2/test_topics.py,sha256=d30tJU167B5r8WWBHvI9rKdjnGrVpf7-HyvKlWyaxtc,8260
597
+ udata/tests/apiv2/test_topics.py,sha256=UA5LcILq7zUa9TXi1iplrvtcY5C0u-0R8PvTCUWPs2Q,10106
590
598
  udata/tests/cli/test_cli_base.py,sha256=piqoq4Ib5bdZQpuUAJh583qfjCSglWZQclKzhO3Yr_0,321
591
599
  udata/tests/cli/test_db_cli.py,sha256=-hw9SU3RvNT7fvqVtQHxEpKstnjMU4L_DY9tiBH-ybs,1726
592
600
  udata/tests/data/image.jpg,sha256=hdmpaCjOhmAAfNGuTqWKEjv7IC4GXJx-nP_rT274hc8,337049
@@ -596,7 +604,7 @@ udata/tests/dataset/test_csv_adapter.py,sha256=2r5z4FuqG9pWgUyfDUw8afQYK5nIKE8XX
596
604
  udata/tests/dataset/test_dataset_actions.py,sha256=4_0F_TCSCfHpzqDt659c8hG4GpkWjVtmT4bAPgmE4B8,723
597
605
  udata/tests/dataset/test_dataset_commands.py,sha256=TAgVdimIcBVmcSNKXKXbhmCGYRo8Keh_InBNiS6UlkM,802
598
606
  udata/tests/dataset/test_dataset_events.py,sha256=zt6F4j_vOBfMxDW6vBVQ5PGwr0d4s6LGw0cGkt9BlvI,2835
599
- udata/tests/dataset/test_dataset_model.py,sha256=m-LtxaxNlXwNxtG_yoBYZ3lu6DdOR82ms4TDlK1a5KY,29776
607
+ udata/tests/dataset/test_dataset_model.py,sha256=Mgq_qFh7pY8QFDke9HWezXTO6dqjd8qoRI8i01Qan-o,29769
600
608
  udata/tests/dataset/test_dataset_rdf.py,sha256=0lyHiP9eZdIHUkvgQQ6Dw_LMaXX2SHTxiJdLIorizaw,29389
601
609
  udata/tests/dataset/test_dataset_tasks.py,sha256=BN5qcvq6753WcpPOZd7vL1iIEW36ZBZrb2Lszb4eWEM,2283
602
610
  udata/tests/dataset/test_resource_preview.py,sha256=q1C9W9dO3nLWaR3-hpUOPYW17hCmQ3raty9Bl4FX3hg,3947
@@ -639,7 +647,7 @@ udata/tests/search/test_query.py,sha256=wtgC4rkaxe8vIaWOcANZ1yFFkEKTdNHj2yiTaYI-
639
647
  udata/tests/search/test_results.py,sha256=yjeqxNKVbjMxxvUsZb7csfU3wsV_YNjBDnfYRw5QN-s,1998
640
648
  udata/tests/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
641
649
  udata/tests/site/test_site_api.py,sha256=XIjRH-iiwKdwmX145bQflxOatfIChi5RLikIMwJSbjQ,2276
642
- udata/tests/site/test_site_metrics.py,sha256=z0_kLpV5SNUBgvR5y3T_uv1m2xD9aBDdQc6tjI6ARXw,2218
650
+ udata/tests/site/test_site_metrics.py,sha256=Sn9dQORwe-fvoyA7ZAnF63Cq5CwUGq1myH8Xe0EtfDA,2263
643
651
  udata/tests/site/test_site_model.py,sha256=nAx9JjEKdfjdw1Kj5Rs7P5FEePoATtCuOYPiSXEnVD0,1313
644
652
  udata/tests/site/test_site_rdf.py,sha256=M360uq2A6hl1WhmyRmRjvzuSqz_YFIUQNPR4vqWnYnE,9687
645
653
  udata/tests/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -664,9 +672,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=zCVMB-a4-mLM1jNyYMk58rgVRaVIwQ
664
672
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=avfWczvlLBKSohyB55-4TLmUGMU_Rze4XmAo4OTk2v0,43513
665
673
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=ScuqdpaV4y1ZIpBAEfxeaKdzkyGZL0mJmKMoG6w0iRQ,28553
666
674
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=QpgEXh1eHjztPa7oNLXd_sds1DC95A-STTtZyTE4m-E,50093
667
- udata-7.0.7.dev28351.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
668
- udata-7.0.7.dev28351.dist-info/METADATA,sha256=O7c7cWQ0rDluGfxbKvfyguPOtWQl62dHJuKvWtCddmI,120163
669
- udata-7.0.7.dev28351.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
670
- udata-7.0.7.dev28351.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
671
- udata-7.0.7.dev28351.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
672
- udata-7.0.7.dev28351.dist-info/RECORD,,
675
+ udata-7.0.7.dev28426.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
676
+ udata-7.0.7.dev28426.dist-info/METADATA,sha256=jM0zNhnCckMsaLktRWBASo3c0izdaCtWWjM0tSAqCbc,120352
677
+ udata-7.0.7.dev28426.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
678
+ udata-7.0.7.dev28426.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
679
+ udata-7.0.7.dev28426.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
680
+ udata-7.0.7.dev28426.dist-info/RECORD,,