udata 7.0.7.dev28426__py2.py3-none-any.whl → 7.0.7.dev28443__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 (60) hide show
  1. udata/api/oauth2.py +1 -1
  2. udata/app.py +2 -1
  3. udata/commands/db.py +1 -1
  4. udata/core/activity/models.py +1 -1
  5. udata/core/badges/models.py +1 -1
  6. udata/core/badges/tests/test_model.py +1 -1
  7. udata/core/contact_point/models.py +1 -1
  8. udata/core/discussions/models.py +1 -1
  9. udata/core/followers/models.py +1 -1
  10. udata/core/jobs/models.py +1 -1
  11. udata/core/metrics/models.py +1 -1
  12. udata/core/post/models.py +1 -1
  13. udata/core/spam/models.py +1 -1
  14. udata/core/spam/tests/test_spam.py +1 -1
  15. udata/core/spatial/models.py +1 -1
  16. udata/core/spatial/tests/test_fields.py +1 -1
  17. udata/core/tags/models.py +1 -1
  18. udata/factories.py +2 -2
  19. udata/features/transfer/models.py +1 -1
  20. udata/frontend/csv.py +1 -1
  21. udata/linkchecker/models.py +1 -1
  22. udata/models/__init__.py +1 -118
  23. udata/mongo/__init__.py +42 -0
  24. udata/mongo/engine.py +73 -0
  25. udata/routing.py +1 -1
  26. udata/search/__init__.py +1 -1
  27. udata/tests/dataset/test_dataset_rdf.py +1 -1
  28. udata/tests/forms/test_basic_fields.py +1 -1
  29. udata/tests/forms/test_daterange_field.py +1 -1
  30. udata/tests/forms/test_dict_field.py +1 -1
  31. udata/tests/forms/test_extras_fields.py +1 -1
  32. udata/tests/forms/test_form_field.py +1 -1
  33. udata/tests/forms/test_image_field.py +1 -1
  34. udata/tests/forms/test_model_field.py +1 -1
  35. udata/tests/forms/test_model_list_field.py +1 -1
  36. udata/tests/forms/test_nested_model_list_field.py +1 -1
  37. udata/tests/forms/test_reference_field.py +1 -1
  38. udata/tests/forms/test_uuid_field.py +1 -1
  39. udata/tests/frontend/test_csv.py +1 -1
  40. udata/tests/plugin.py +1 -1
  41. udata/tests/search/__init__.py +1 -1
  42. udata/tests/test_model.py +2 -1
  43. udata/tests/test_owned.py +1 -1
  44. udata/tests/test_routing.py +2 -2
  45. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/METADATA +3 -2
  46. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/RECORD +60 -58
  47. /udata/{models → mongo}/badges_field.py +0 -0
  48. /udata/{models → mongo}/datetime_fields.py +0 -0
  49. /udata/{models → mongo}/document.py +0 -0
  50. /udata/{models → mongo}/extras_fields.py +0 -0
  51. /udata/{models → mongo}/owned.py +0 -0
  52. /udata/{models → mongo}/queryset.py +0 -0
  53. /udata/{models → mongo}/slug_fields.py +0 -0
  54. /udata/{models → mongo}/taglist_field.py +0 -0
  55. /udata/{models → mongo}/url_field.py +0 -0
  56. /udata/{models → mongo}/uuid_fields.py +0 -0
  57. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/LICENSE +0 -0
  58. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/WHEEL +0 -0
  59. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/entry_points.txt +0 -0
  60. {udata-7.0.7.dev28426.dist-info → udata-7.0.7.dev28443.dist-info}/top_level.txt +0 -0
udata/api/oauth2.py CHANGED
@@ -35,7 +35,7 @@ from werkzeug.security import gen_salt
35
35
  from udata.app import csrf
36
36
  from udata.auth import current_user, login_required, login_user
37
37
  from udata.i18n import I18nBlueprint, lazy_gettext as _
38
- from udata.models import db
38
+ from udata.mongo import db
39
39
  from udata.core.user.models import User
40
40
  from udata.core.storages import images, default_image_basename
41
41
 
udata/app.py CHANGED
@@ -206,11 +206,12 @@ def standalone(app):
206
206
 
207
207
  def register_extensions(app):
208
208
  from udata import (
209
- models, routing, tasks, mail, i18n, auth, search, sitemap,
209
+ models, mongo, routing, tasks, mail, i18n, auth, search, sitemap,
210
210
  sentry, notifications
211
211
  )
212
212
  tasks.init_app(app)
213
213
  i18n.init_app(app)
214
+ mongo.init_app(app)
214
215
  models.init_app(app)
215
216
  routing.init_app(app)
216
217
  auth.init_app(app)
udata/commands/db.py CHANGED
@@ -9,7 +9,7 @@ from udata import migrations, models as core_models
9
9
  from udata.api import oauth2 as oauth2_models
10
10
  from udata.commands import cli, green, yellow, cyan, red, magenta, white, echo
11
11
  from udata.harvest import models as harvest_models
12
- from udata.models import db
12
+ from udata.mongo import db
13
13
 
14
14
 
15
15
  # Date format used to for display
@@ -3,7 +3,7 @@ from datetime import datetime
3
3
  from blinker import Signal
4
4
  from mongoengine.signals import post_save
5
5
 
6
- from udata.models import db
6
+ from udata.mongo import db
7
7
  from udata.auth import current_user
8
8
 
9
9
  from .signals import new_activity
@@ -6,7 +6,7 @@ from datetime import datetime
6
6
  from mongoengine.signals import post_save
7
7
 
8
8
  from udata.auth import current_user
9
- from udata.models import db
9
+ from udata.mongo import db
10
10
 
11
11
  from .signals import on_badge_added, on_badge_removed
12
12
 
@@ -1,5 +1,5 @@
1
1
  from udata.auth import login_user
2
- from udata.models import db
2
+ from udata.mongo import db
3
3
  from udata.tests import TestCase, DBTestMixin
4
4
  from udata.core.user.factories import UserFactory
5
5
 
@@ -1,4 +1,4 @@
1
- from udata.models import db
1
+ from udata.mongo import db
2
2
 
3
3
 
4
4
  __all__ = ('ContactPoint', )
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  from datetime import datetime
3
3
 
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from udata.core.spam.models import SpamMixin, spam_protected
6
6
  from .signals import (on_new_discussion, on_discussion_closed, on_new_discussion_comment)
7
7
 
@@ -1,6 +1,6 @@
1
1
  from datetime import datetime
2
2
 
3
- from udata.models import db
3
+ from udata.mongo import db
4
4
  from .signals import on_follow, on_unfollow
5
5
 
6
6
 
udata/core/jobs/models.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from celerybeatmongo.models import PeriodicTask as BasePeriodicTask, PERIODS
2
2
 
3
3
  from udata.i18n import lazy_gettext as _
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
 
6
6
 
7
7
  __all__ = ('PeriodicTask', 'PERIODS')
@@ -1,6 +1,6 @@
1
1
  from datetime import date, timedelta
2
2
 
3
- from udata.models import db
3
+ from udata.mongo import db
4
4
 
5
5
 
6
6
  __all__ = ('WithMetrics',)
udata/core/post/models.py CHANGED
@@ -2,7 +2,7 @@ from flask import url_for
2
2
 
3
3
  from udata.core.storages import images, default_image_basename
4
4
  from udata.i18n import lazy_gettext as _
5
- from udata.models import db
5
+ from udata.mongo import db
6
6
  from .constants import BODY_TYPES, IMAGE_SIZES
7
7
 
8
8
  __all__ = ('Post', )
udata/core/spam/models.py CHANGED
@@ -1,7 +1,7 @@
1
1
  from flask import current_app
2
2
  from langdetect import detect
3
3
 
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from .signals import on_new_potential_spam
6
6
  from mongoengine import signals
7
7
 
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  import pytest
3
3
  from udata.tests import TestCase
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
 
6
6
  from ..models import SpamMixin
7
7
  from ..constants import POTENTIAL_SPAM
@@ -5,7 +5,7 @@ from werkzeug.utils import cached_property
5
5
  from udata.app import cache
6
6
  from udata.uris import endpoint_for
7
7
  from udata.i18n import _, get_locale, language
8
- from udata.models import db
8
+ from udata.mongo import db
9
9
 
10
10
  from . import geoids
11
11
  from .constants import ADMIN_LEVEL_MIN, ADMIN_LEVEL_MAX, BASE_GRANULARITIES
@@ -5,7 +5,7 @@ from datetime import timedelta
5
5
  from werkzeug.datastructures import MultiDict
6
6
 
7
7
  from udata.forms import Form
8
- from udata.models import db
8
+ from udata.mongo import db
9
9
  from udata.tests import TestCase
10
10
  from udata.tests.helpers import assert_json_equal
11
11
  from udata.utils import faker
udata/core/tags/models.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
 
3
- from udata.models import db
3
+ from udata.mongo import db
4
4
 
5
5
  log = logging.getLogger(__name__)
6
6
 
udata/factories.py CHANGED
@@ -1,6 +1,6 @@
1
1
  import factory
2
2
 
3
- from .models import DateRange
3
+ from .models import db
4
4
 
5
5
 
6
6
  class ModelFactory(factory.mongoengine.MongoEngineFactory):
@@ -14,7 +14,7 @@ class ModelFactory(factory.mongoengine.MongoEngineFactory):
14
14
 
15
15
  class DateRangeFactory(ModelFactory):
16
16
  class Meta:
17
- model = DateRange
17
+ model = db.DateRange
18
18
 
19
19
  start = factory.Faker('date_between', start_date='-10y', end_date='-5y')
20
20
  end = factory.Faker('date_between', start_date='-5y', end_date='-2y')
@@ -3,7 +3,7 @@ import logging
3
3
  from datetime import datetime
4
4
 
5
5
  from udata.i18n import lazy_gettext as _
6
- from udata.models import db
6
+ from udata.mongo import db
7
7
 
8
8
  log = logging.getLogger(__name__)
9
9
 
udata/frontend/csv.py CHANGED
@@ -8,7 +8,7 @@ from datetime import datetime, date
8
8
 
9
9
  from flask import Response, stream_with_context
10
10
 
11
- from udata.models import db
11
+ from udata.mongo import db
12
12
  from udata.utils import recursive_get
13
13
 
14
14
 
@@ -1,4 +1,4 @@
1
- from udata.models import db
1
+ from udata.mongo import db
2
2
  from udata.core.dataset.models import ResourceMixin
3
3
 
4
4
  # Register harvest extras
udata/models/__init__.py CHANGED
@@ -1,81 +1,7 @@
1
- import logging
2
- import warnings
3
-
4
- from urllib.parse import urlparse
5
-
6
- from bson import ObjectId, DBRef
7
- from flask_mongoengine import MongoEngine, MongoEngineSessionInterface
8
- from mongoengine.base import TopLevelDocumentMetaclass, get_document
9
1
  from mongoengine.errors import ValidationError
10
- from mongoengine.signals import pre_save, post_save
11
-
12
- from flask_storage.mongo import FileField, ImageField
13
2
 
14
3
  from udata import entrypoints
15
- from udata.errors import ConfigError
16
-
17
- from .badges_field import BadgesField
18
- from .taglist_field import TagListField
19
- from .datetime_fields import DateField, DateRange, Datetimed
20
- from .extras_fields import ExtrasField, OrganizationExtrasField
21
- from .slug_fields import SlugField
22
- from .url_field import URLField
23
- from .uuid_fields import AutoUUIDField
24
- from .owned import Owned, OwnedQuerySet
25
- from .queryset import UDataQuerySet
26
- from .document import UDataDocument, DomainModel
27
-
28
- log = logging.getLogger(__name__)
29
-
30
- class UDataMongoEngine(MongoEngine):
31
- '''Customized mongoengine with extra fields types and helpers'''
32
- def __init__(self, app=None):
33
- super(UDataMongoEngine, self).__init__(app)
34
- self.BadgesField = BadgesField
35
- self.TagListField = TagListField
36
- self.DateField = DateField
37
- self.Datetimed = Datetimed
38
- self.ExtrasField = ExtrasField
39
- self.OrganizationExtrasField = OrganizationExtrasField
40
- self.SlugField = SlugField
41
- self.AutoUUIDField = AutoUUIDField
42
- self.Document = UDataDocument
43
- self.DomainModel = DomainModel
44
- self.DateRange = DateRange
45
- self.BaseQuerySet = UDataQuerySet
46
- self.BaseDocumentMetaclass = TopLevelDocumentMetaclass
47
- self.FileField = FileField
48
- self.ImageField = ImageField
49
- self.URLField = URLField
50
- self.ValidationError = ValidationError
51
- self.ObjectId = ObjectId
52
- self.DBRef = DBRef
53
- self.Owned = Owned
54
- self.OwnedQuerySet = OwnedQuerySet
55
- self.post_save = post_save
56
- self.pre_save = pre_save
57
-
58
- def resolve_model(self, model):
59
- '''
60
- Resolve a model given a name or dict with `class` entry.
61
-
62
- :raises ValueError: model specification is wrong or does not exists
63
- '''
64
- if not model:
65
- raise ValueError('Unsupported model specifications')
66
- if isinstance(model, str):
67
- classname = model
68
- elif isinstance(model, dict) and 'class' in model:
69
- classname = model['class']
70
- else:
71
- raise ValueError('Unsupported model specifications')
72
-
73
- try:
74
- return get_document(classname)
75
- except self.NotRegistered:
76
- message = 'Model "{0}" does not exist'.format(classname)
77
- raise ValueError(message)
78
-
4
+ from udata.mongo import *
79
5
 
80
6
  class FieldValidationError(ValidationError):
81
7
  field: str
@@ -84,11 +10,6 @@ class FieldValidationError(ValidationError):
84
10
  self.field = field
85
11
  super().__init__(*args, **kwargs)
86
12
 
87
-
88
- db = UDataMongoEngine()
89
- session_interface = MongoEngineSessionInterface(db)
90
-
91
-
92
13
  # Load all core models and mixins
93
14
  from udata.core.spatial.models import * # noqa
94
15
  from udata.core.metrics.models import * # noqa
@@ -117,43 +38,5 @@ from udata.harvest.models import HarvestSource as Harvest # noqa
117
38
  import udata.linkchecker.models # noqa
118
39
 
119
40
 
120
- MONGODB_DEPRECATED_SETTINGS = 'MONGODB_PORT', 'MONGODB_DB'
121
- MONGODB_DEPRECATED_MSG = '{0} is deprecated, use the MONGODB_HOST url syntax'
122
-
123
-
124
-
125
- def validate_config(config):
126
- for setting in MONGODB_DEPRECATED_SETTINGS:
127
- if setting in config:
128
- msg = MONGODB_DEPRECATED_MSG.format(setting)
129
- log.warning(msg)
130
- warnings.warn(msg, category=DeprecationWarning, stacklevel=2)
131
- url = config['MONGODB_HOST']
132
- parsed_url = urlparse(url)
133
- if not all((parsed_url.scheme, parsed_url.netloc)):
134
- raise ConfigError('{0} is not a valid MongoDB URL'.format(url))
135
- if len(parsed_url.path) <= 1:
136
- raise ConfigError('{0} is missing the database path'.format(url))
137
-
138
-
139
- def build_test_config(config):
140
- if 'MONGODB_HOST_TEST' in config:
141
- config['MONGODB_HOST'] = config['MONGODB_HOST_TEST']
142
- else:
143
- # use `{database_name}-test` database for testing
144
- parsed_url = urlparse(config['MONGODB_HOST'])
145
- parsed_url = parsed_url._replace(path='%s-test' % parsed_url.path)
146
- config['MONGODB_HOST'] = parsed_url.geturl()
147
- validate_config(config)
148
-
149
-
150
- # Avoid nose misdetecting this function as a test
151
- build_test_config.__test__ = False
152
-
153
-
154
41
  def init_app(app):
155
- validate_config(app.config)
156
- if app.config['TESTING']:
157
- build_test_config(app.config)
158
- db.init_app(app)
159
42
  entrypoints.get_enabled('udata.models', app)
@@ -0,0 +1,42 @@
1
+ import logging
2
+ import warnings
3
+ from urllib.parse import urlparse
4
+
5
+ from udata.errors import ConfigError
6
+
7
+ from .engine import db
8
+
9
+ log = logging.getLogger(__name__)
10
+
11
+ MONGODB_DEPRECATED_SETTINGS = 'MONGODB_PORT', 'MONGODB_DB'
12
+ MONGODB_DEPRECATED_MSG = '{0} is deprecated, use the MONGODB_HOST url syntax'
13
+
14
+ def validate_config(config):
15
+ for setting in MONGODB_DEPRECATED_SETTINGS:
16
+ if setting in config:
17
+ msg = MONGODB_DEPRECATED_MSG.format(setting)
18
+ log.warning(msg)
19
+ warnings.warn(msg, category=DeprecationWarning, stacklevel=2)
20
+ url = config['MONGODB_HOST']
21
+ parsed_url = urlparse(url)
22
+ if not all((parsed_url.scheme, parsed_url.netloc)):
23
+ raise ConfigError('{0} is not a valid MongoDB URL'.format(url))
24
+ if len(parsed_url.path) <= 1:
25
+ raise ConfigError('{0} is missing the database path'.format(url))
26
+
27
+
28
+ def build_test_config(config):
29
+ if 'MONGODB_HOST_TEST' in config:
30
+ config['MONGODB_HOST'] = config['MONGODB_HOST_TEST']
31
+ else:
32
+ # use `{database_name}-test` database for testing
33
+ parsed_url = urlparse(config['MONGODB_HOST'])
34
+ parsed_url = parsed_url._replace(path='%s-test' % parsed_url.path)
35
+ config['MONGODB_HOST'] = parsed_url.geturl()
36
+ validate_config(config)
37
+
38
+ def init_app(app):
39
+ validate_config(app.config)
40
+ if app.config['TESTING']:
41
+ build_test_config(app.config)
42
+ db.init_app(app)
udata/mongo/engine.py ADDED
@@ -0,0 +1,73 @@
1
+ from bson import ObjectId, DBRef
2
+ from flask_mongoengine import MongoEngine, MongoEngineSessionInterface
3
+ from mongoengine.base import TopLevelDocumentMetaclass, get_document
4
+ from mongoengine.errors import ValidationError
5
+ from mongoengine.signals import pre_save, post_save
6
+
7
+ from flask_storage.mongo import FileField, ImageField
8
+
9
+ from .badges_field import BadgesField
10
+ from .taglist_field import TagListField
11
+ from .datetime_fields import DateField, DateRange, Datetimed
12
+ from .extras_fields import ExtrasField, OrganizationExtrasField
13
+ from .slug_fields import SlugField
14
+ from .url_field import URLField
15
+ from .uuid_fields import AutoUUIDField
16
+ from .owned import Owned, OwnedQuerySet
17
+ from .queryset import UDataQuerySet
18
+ from .document import UDataDocument, DomainModel
19
+
20
+
21
+ class UDataMongoEngine(MongoEngine):
22
+ '''Customized mongoengine with extra fields types and helpers'''
23
+ def __init__(self, app=None):
24
+ super(UDataMongoEngine, self).__init__(app)
25
+ self.BadgesField = BadgesField
26
+ self.TagListField = TagListField
27
+ self.DateField = DateField
28
+ self.Datetimed = Datetimed
29
+ self.ExtrasField = ExtrasField
30
+ self.OrganizationExtrasField = OrganizationExtrasField
31
+ self.SlugField = SlugField
32
+ self.AutoUUIDField = AutoUUIDField
33
+ self.Document = UDataDocument
34
+ self.DomainModel = DomainModel
35
+ self.DateRange = DateRange
36
+ self.BaseQuerySet = UDataQuerySet
37
+ self.BaseDocumentMetaclass = TopLevelDocumentMetaclass
38
+ self.FileField = FileField
39
+ self.ImageField = ImageField
40
+ self.URLField = URLField
41
+ self.ValidationError = ValidationError
42
+ self.ObjectId = ObjectId
43
+ self.DBRef = DBRef
44
+ self.Owned = Owned
45
+ self.OwnedQuerySet = OwnedQuerySet
46
+ self.post_save = post_save
47
+ self.pre_save = pre_save
48
+
49
+ def resolve_model(self, model):
50
+ '''
51
+ Resolve a model given a name or dict with `class` entry.
52
+
53
+ :raises ValueError: model specification is wrong or does not exists
54
+ '''
55
+ if not model:
56
+ raise ValueError('Unsupported model specifications')
57
+ if isinstance(model, str):
58
+ classname = model
59
+ elif isinstance(model, dict) and 'class' in model:
60
+ classname = model['class']
61
+ else:
62
+ raise ValueError('Unsupported model specifications')
63
+
64
+ try:
65
+ return get_document(classname)
66
+ except self.NotRegistered:
67
+ message = 'Model "{0}" does not exist'.format(classname)
68
+ raise ValueError(message)
69
+
70
+
71
+
72
+ db = UDataMongoEngine()
73
+ session_interface = MongoEngineSessionInterface(db)
udata/routing.py CHANGED
@@ -8,7 +8,7 @@ from werkzeug.routing import BaseConverter, PathConverter
8
8
  from werkzeug.urls import url_quote
9
9
 
10
10
  from udata import models
11
- from udata.models import db
11
+ from udata.mongo import db
12
12
  from udata.core.spatial.models import GeoZone
13
13
  from udata.i18n import ISO_639_1_CODES
14
14
 
udata/search/__init__.py CHANGED
@@ -6,7 +6,7 @@ import udata.event # noqa
6
6
  from flask import current_app
7
7
  from mongoengine.signals import post_save, post_delete
8
8
 
9
- from udata.models import db
9
+ from udata.mongo import db
10
10
  from udata.tasks import task, as_task_param
11
11
 
12
12
  log = logging.getLogger(__name__)
@@ -10,7 +10,7 @@ from rdflib import Graph, URIRef, Literal, BNode
10
10
  from rdflib.namespace import FOAF, RDF
11
11
  from rdflib.resource import Resource as RdfResource
12
12
 
13
- from udata.models import db
13
+ from udata.mongo import db
14
14
  from udata.core.dataset.models import Dataset, Resource, License, Checksum, HarvestDatasetMetadata
15
15
  from udata.core.dataset.factories import (
16
16
  DatasetFactory, ResourceFactory, LicenseFactory
@@ -1,7 +1,7 @@
1
1
  from werkzeug.datastructures import MultiDict
2
2
 
3
3
  from udata.forms import Form, fields
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from udata.tests import TestCase
6
6
  from udata.utils import faker
7
7
 
@@ -3,7 +3,7 @@ from datetime import date, timedelta
3
3
  from werkzeug.datastructures import MultiDict
4
4
 
5
5
  from udata.forms import Form, fields
6
- from udata.models import db
6
+ from udata.mongo import db
7
7
  from udata.tests import TestCase
8
8
  from udata.utils import to_iso_date
9
9
 
@@ -5,7 +5,7 @@ from datetime import date, datetime
5
5
  from werkzeug.datastructures import MultiDict
6
6
 
7
7
  from udata.forms import fields, ModelForm
8
- from udata.models import db
8
+ from udata.mongo import db
9
9
 
10
10
  pytestmark = [
11
11
  pytest.mark.usefixtures('app')
@@ -6,7 +6,7 @@ from uuid import UUID
6
6
  from werkzeug.datastructures import MultiDict
7
7
 
8
8
  from udata.forms import fields, ModelForm
9
- from udata.models import db
9
+ from udata.mongo import db
10
10
 
11
11
  pytestmark = [
12
12
  pytest.mark.usefixtures('app')
@@ -1,7 +1,7 @@
1
1
  from werkzeug.datastructures import MultiDict
2
2
 
3
3
  from udata.forms import ModelForm, fields
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from udata.tests import TestCase
6
6
  from udata.utils import faker
7
7
 
@@ -4,7 +4,7 @@ import pytest
4
4
 
5
5
  import flask_storage as fs
6
6
 
7
- from udata.models import db
7
+ from udata.mongo import db
8
8
  from udata.forms import Form
9
9
  from udata.forms.fields import ImageField
10
10
  from udata.tests.helpers import data_path
@@ -4,7 +4,7 @@ from werkzeug.datastructures import MultiDict
4
4
 
5
5
  from udata.forms import ModelForm, fields
6
6
  from udata.i18n import gettext as _
7
- from udata.models import db
7
+ from udata.mongo import db
8
8
 
9
9
 
10
10
  pytestmark = [
@@ -1,7 +1,7 @@
1
1
  from werkzeug.datastructures import MultiDict
2
2
 
3
3
  from udata.forms import ModelForm, fields
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from udata.tests import TestCase
6
6
  from udata.utils import faker
7
7
 
@@ -1,7 +1,7 @@
1
1
  from werkzeug.datastructures import MultiDict
2
2
 
3
3
  from udata.forms import ModelForm, fields
4
- from udata.models import db
4
+ from udata.mongo import db
5
5
  from udata.tests import TestCase
6
6
  from udata.utils import faker
7
7
 
@@ -2,7 +2,7 @@ from bson import ObjectId
2
2
  from werkzeug.datastructures import MultiDict
3
3
 
4
4
  from udata.forms import ModelForm, fields
5
- from udata.models import db
5
+ from udata.mongo import db
6
6
  from udata.tests import TestCase
7
7
  from udata.utils import faker
8
8
 
@@ -3,7 +3,7 @@ import uuid
3
3
  from werkzeug.datastructures import MultiDict
4
4
 
5
5
  from udata.forms import Form, fields
6
- from udata.models import db
6
+ from udata.mongo import db
7
7
  from udata.tests import TestCase
8
8
 
9
9
 
@@ -9,7 +9,7 @@ from factory.mongoengine import MongoEngineFactory
9
9
 
10
10
  from flask import url_for, Blueprint
11
11
 
12
- from udata.models import db
12
+ from udata.mongo import db
13
13
  from udata.frontend import csv
14
14
  from udata.utils import faker
15
15
 
udata/tests/plugin.py CHANGED
@@ -12,7 +12,7 @@ from werkzeug.urls import url_encode
12
12
  from udata import settings
13
13
  from udata.app import create_app
14
14
  from udata.core.user.factories import UserFactory
15
- from udata.models import db
15
+ from udata.mongo import db
16
16
 
17
17
  from .helpers import assert200, assert_command_ok
18
18
 
@@ -3,7 +3,7 @@ import factory
3
3
  from factory.mongoengine import MongoEngineFactory
4
4
 
5
5
  from udata import search
6
- from udata.models import db
6
+ from udata.mongo import db
7
7
 
8
8
 
9
9
  #############################################################################
udata/tests/test_model.py CHANGED
@@ -7,7 +7,8 @@ from mongoengine.errors import ValidationError
7
7
  from mongoengine.fields import BaseField
8
8
 
9
9
  from udata.settings import Defaults
10
- from udata.models import db, Dataset, validate_config, build_test_config
10
+ from udata.models import Dataset
11
+ from udata.mongo import db, validate_config, build_test_config
11
12
  from udata.errors import ConfigError
12
13
  from udata.tests.helpers import assert_json_equal, assert_equal_dates
13
14
 
udata/tests/test_owned.py CHANGED
@@ -5,7 +5,7 @@ from udata.core.organization.models import Organization
5
5
  from udata.core.user.factories import UserFactory
6
6
  from udata.core.user.models import User
7
7
 
8
- from udata.models import db
8
+ from udata.mongo import db
9
9
 
10
10
  from udata.tests import TestCase, DBTestMixin
11
11
 
@@ -8,8 +8,8 @@ from flask import url_for
8
8
  from udata import routing
9
9
  from udata.core.spatial.models import GeoZone
10
10
  from udata.core.spatial.factories import GeoZoneFactory
11
- from udata.models import db
12
- from udata.models.slug_fields import SlugFollow
11
+ from udata.mongo import db
12
+ from udata.mongo.slug_fields import SlugFollow
13
13
  from udata.tests.helpers import assert200, assert404, assert_redirects
14
14
 
15
15
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 7.0.7.dev28426
3
+ Version: 7.0.7.dev28443
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -140,6 +140,7 @@ It is collectively taken care of by members of the
140
140
 
141
141
  - Topic: add filters in API [#3007](https://github.com/opendatateam/udata/pull/3007)
142
142
  - Move constants outside `models.py` files to `constants.py` [#3001](https://github.com/opendatateam/udata/pull/3001)
143
+ - Move `db` and Mongo fields classes outside `udata.models` [#3005](https://github.com/opendatateam/udata/pull/3005)
143
144
 
144
145
  ## 7.0.6 (2024-03-29)
145
146
 
@@ -998,7 +999,6 @@ Search refactor [#2680](https://github.com/opendatateam/udata/pull/2680)
998
999
 
999
1000
  - Harvest sources are now filterable through the harvest source create/edit admin form [#1812](https://github.com/opendatateam/udata/pull/1812)
1000
1001
  - Harvest sources can now enable or disable some optional backend features [#1875](https://github.com/opendatateam/udata/pull/1875)
1001
- - Static assets are now compatible with long-term caching (ie. their hash is present in the filename) [#1826](https://github.com/opendatateam/udata/pull/1826)
1002
1002
  - Post UIs have been reworked: publication date, publish/unpublish action, save and continue editing, dynamic sidebar, alignments fixes... [#1857](https://github.com/opendatateam/udata/pull/1857)
1003
1003
 
1004
1004
  ### Minor changes
@@ -1014,6 +1014,7 @@ Search refactor [#2680](https://github.com/opendatateam/udata/pull/2680)
1014
1014
 
1015
1015
  ### Breaking changes
1016
1016
 
1017
+ - Static assets are now compatible with long-term caching (ie. their hash is present in the filename). :warning: On your development environment you need to run `inv assets-build` to generate an initial `manifest.json`, both in `udata` and in your theme extension if it uses manifest. See [#1826](https://github.com/opendatateam/udata/pull/1826) for full details.
1017
1018
  - Theme are now responsible for adding their CSS markup on template (no more assumptions on `theme.css` and `admin.css`). Most of the time, overriding `raw.html` and `admin.html` should be sufficient
1018
1019
  - The discussions API `posted_by` attribute is now an embedded user instead of an user ID to avoid extra API calls [#1839](https://github.com/opendatateam/udata/pull/1839)
1019
1020
 
@@ -1,15 +1,15 @@
1
1
  tasks/__init__.py,sha256=CnVhb_TV-6nMhxVR6itnBmvuU2OSCs02AfNB4irVBTE,8132
2
2
  tasks/helpers.py,sha256=k_HiuiEJNgQLvWdeHqczPOAcrYpFjEepBeKo7EQzY8M,994
3
3
  udata/__init__.py,sha256=V_wOfdL3uuCrM0YJcmiJ4f5IVvQWBmB_GxJ5P8RHyBI,101
4
- udata/app.py,sha256=u7bnTZp4VJVkq-yxnlUNXSkwlh04wVF7jXL7ic2LxKk,7142
4
+ udata/app.py,sha256=-S_MfxoGU8j7uzjQeqpeUte57VvEJ4NZNxsM2QfN1JE,7173
5
5
  udata/assets.py,sha256=aMa-MnAEXVSTavptSn2V8sUE6jL_N0MrYCQ6_QpsuHs,645
6
6
  udata/entrypoints.py,sha256=8bZUvZ8ICO3kZxa8xDUaen6YS_OAGNKHFvaD7d8BOk0,2687
7
7
  udata/errors.py,sha256=chc1880TPGteIL-Rfb9hdeAyZI4vdWZQU3JQ_5VF5t0,116
8
- udata/factories.py,sha256=KKPQeYzMdCxwGVLu9_Y-LxMx14cIgXA0jG2pHZ7uvFY,496
8
+ udata/factories.py,sha256=6en2qdHHoR6rEvNEUeH_0-T-vR7x7GUBGgNEm9vuylE,492
9
9
  udata/i18n.py,sha256=E-JoY57Cv4vgPvChkWjpwZAbuYVI8e6BO6raeu_3_Pw,8352
10
10
  udata/mail.py,sha256=dAMcbEtk5e54alpQezvF5adDrRPgdaT36QEdHD_5v50,2145
11
11
  udata/rdf.py,sha256=eu_tKOGQ9Bs8yyf5QGQNE9yyXGiUxevDYAIIun_KqqI,9919
12
- udata/routing.py,sha256=ztmFx4YzqlEqa-HG9a43WfGYfULC95ZxTlkr4iHkzVQ,7045
12
+ udata/routing.py,sha256=lU1XNL-YQgx1GN3pjKue1tIjHzjO3QdTiF9aaLNLitg,7044
13
13
  udata/sentry.py,sha256=KiZz0PpmYpZMvykH9UAbHpF4xBY0Q-8DeiEbXEHDUdw,2683
14
14
  udata/settings.py,sha256=nnFcD1DBt3IbO2a10kE5ux9Q2KyeyOvXYLSOLWlF7nw,17142
15
15
  udata/sitemap.py,sha256=pjtR2lU3gRHvK8l1Lw8B9wrqMMTYC5adUfFh0pUp_Q4,977
@@ -27,7 +27,7 @@ udata/api/__init__.py,sha256=Vj3a3gZZt4ySjV7k6iau64pFvLkxZfcmJWkLyH-iH78,10851
27
27
  udata/api/commands.py,sha256=oK2p1VdUvULDdYuvYYpYvY_bdkPJy-KfROfoX71oOuA,3277
28
28
  udata/api/errors.py,sha256=Sy_f3WVrNTUPZjCOogIVgocDdUjnKz149KDi4mMA_Lg,240
29
29
  udata/api/fields.py,sha256=l-Fa27-easR86qgof2bk130jq1N1pNUgGmQzok1UI3Q,3094
30
- udata/api/oauth2.py,sha256=a_f96DLxT5B71j_E5F7-8Ew8nDdbbX7-aSgooOPWnUs,11718
30
+ udata/api/oauth2.py,sha256=mRX5BpPp5dVBKoigrybmulvqsB4E9AzYYMCR_ukAZtE,11717
31
31
  udata/api/parsers.py,sha256=Fo4krCaFao0D1QNqKpjWiFVvKVLd9b_2mon6RbbOXls,1485
32
32
  udata/api/signals.py,sha256=9zcw4NDdpJwhgsS5UyLtnls1w_RfqghYFULza6d4-cw,162
33
33
  udata/auth/__init__.py,sha256=ziR6gzkE1V4__3ynjE-_IPWHzmapOsZIrnaDAjDijsM,1958
@@ -38,7 +38,7 @@ udata/auth/password_validation.py,sha256=KMr5T5HLeo-tYF-oVxJ-PAMPgkE0h2z0xcXZX2y
38
38
  udata/auth/views.py,sha256=wxk2GEBHHqgyUk81RdeZMBWPjDn69crmtb_blkhXsNs,6164
39
39
  udata/commands/__init__.py,sha256=mTRAsySo7lH4BlLs_IP0obyhU_hUMxLNB7N8Vh1HkMY,7756
40
40
  udata/commands/cache.py,sha256=uVpb3WQdqg8NZRSiWEa7cYdcx3QyFF53UAI_f2pXtV8,341
41
- udata/commands/db.py,sha256=1gQwffdopW2l6BMfj0MiJ7cKLN8zfi3WLFRaIrPxQn8,11131
41
+ udata/commands/db.py,sha256=0gYBzmTOWbQaGVU3Rv4EWsd2GavvN1LIe3_HbfR79Uc,11130
42
42
  udata/commands/dcat.py,sha256=F8GVCT_arz5R_xwIygxbiis6cUSPM89C79Wlu46fR6g,3354
43
43
  udata/commands/fixtures.py,sha256=RrzRdUBJ2FbS-iDsEMPu5Nfp0WJXzU2rk3GB9t6JlRc,5852
44
44
  udata/commands/images.py,sha256=bzVvLj9LZ_nkyTdPlPe4g5U26k53VTH5ADCWmOfM8e4,2037
@@ -54,7 +54,7 @@ udata/commands/tests/fixtures.py,sha256=h78grSpZDgOwvmezyD3qBpiSnpxaQ9tDeQOr3sB8
54
54
  udata/core/__init__.py,sha256=n7TBP0lkYJl-BLoc67V5fyaawrWmsrWG_mLIF49UFOY,385
55
55
  udata/core/activity/__init__.py,sha256=4vB92owvzwn2VVxbFWGNcfESb6izDzvbj6lmLH4ssrU,299
56
56
  udata/core/activity/api.py,sha256=ohDEbzhbsmJ6YHQh3Aa8wYctaDQGuwKdg0kjh3lC028,3276
57
- udata/core/activity/models.py,sha256=oxv8U45WNbzyZy8hgm8OGSn1zcRobOkhvOYTKpBwmrs,2119
57
+ udata/core/activity/models.py,sha256=kzy9kcixX3DUo-2YpVjGXVHR4cOZMl7AsPiDBZ52EDs,2118
58
58
  udata/core/activity/signals.py,sha256=nplrZFDDuGVXwLWpI_Lhe64mBRMRtwooJG1KcCH6Ses,191
59
59
  udata/core/activity/tasks.py,sha256=yKkDgBXYmVX-DS4P9hBgZcweEOU8mlihSj7pqQYOmkg,1242
60
60
  udata/core/badges/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -62,19 +62,19 @@ udata/core/badges/api.py,sha256=BVHULesVK3godViXVOFSjGPCLYmHqLXXywsf0EaJpr8,993
62
62
  udata/core/badges/commands.py,sha256=NMihQH6ABUlkYpR2lNFW4dkeaWOjpijW7voudww8zW4,1129
63
63
  udata/core/badges/factories.py,sha256=rDQC28fKLtYA6l69EqiyOQyN4C2jVj87EdKBEo4sYsw,297
64
64
  udata/core/badges/forms.py,sha256=8z28_rln9duvJ7IvKx9IFO9DAMe3cU2bv0FQRdiMFEw,511
65
- udata/core/badges/models.py,sha256=5U9TbqDzwIMRB6nM8QCJY5LzB0MqehcJclqR_FaKsLw,3177
65
+ udata/core/badges/models.py,sha256=cQBpLudR-cRxlbN68z_05UbX0BXRu97n1vMMdat4Ry4,3176
66
66
  udata/core/badges/permissions.py,sha256=5jFKFG4OlVp0pL0xSa7AGO0Ttn0QMsy9xEY2jTfKVmE,552
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
70
  udata/core/badges/tests/test_commands.py,sha256=BcfB0eo8ICCF5E0Z2ryu0pmp6istFZEt56mZkJMQTPo,1364
71
- udata/core/badges/tests/test_model.py,sha256=vM0j4mf0oj7tYGb9OkTK6wOx2uct8vj3C-7pM0jdn78,4929
71
+ udata/core/badges/tests/test_model.py,sha256=Qkx2ymq_AqEp7l6JrOnoTHsc9CWbfEPBVhyLuKt3whI,4928
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
74
74
  udata/core/contact_point/api_fields.py,sha256=KQADF7Drnd1uT9ZWjLRKQPJh6GdGUXJkYf1LV_9ZFIE,939
75
75
  udata/core/contact_point/factories.py,sha256=ATuV1seBCGKY3CzvPDG5nxfBBqHu-3YtER0_fiQJx6c,248
76
76
  udata/core/contact_point/forms.py,sha256=ggLhSJ1IRn5MclrhydckjAxwr4fFZxgAD4huSSucSsA,598
77
- udata/core/contact_point/models.py,sha256=sazF_oCe-Vdm-EQdQ6TfcHqmt11rKo36FT88ZXdNiNw,282
77
+ udata/core/contact_point/models.py,sha256=iwXsJgmsRiLWOaUbSqZe7Oyjcr6W6zhGwrmVzoY2PR0,281
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
@@ -102,7 +102,7 @@ udata/core/discussions/constants.py,sha256=nbZgXESpg0TykIGPxW8xUtHtk7TwQoyOL0Ky4
102
102
  udata/core/discussions/factories.py,sha256=NQd_tD0Izrm67uO5HuuClmluteACrRd9PHrb2IkQ0P0,350
103
103
  udata/core/discussions/forms.py,sha256=daDc8vPDhaXjiEyniugiRC6pyv6OsflgIyO-KoAn6i8,828
104
104
  udata/core/discussions/metrics.py,sha256=qtgyDhM1aPgh8bGU-h-962EKR3J44imC155JVi6jvJI,362
105
- udata/core/discussions/models.py,sha256=zU4EldaJtE-9pGlabetIlOFF_y3Kag2GxpNtwmk4jQ4,3361
105
+ udata/core/discussions/models.py,sha256=9DQ9pYyYdc1VVilaY44TKL_OMJP9_FgYwuo0w9ZZw5s,3360
106
106
  udata/core/discussions/notifications.py,sha256=1lsu8WyyOL4bdt0lx6IW5wTxmQ5gS_7FoncN53g3ToQ,927
107
107
  udata/core/discussions/permissions.py,sha256=q3tXNuNmuXCvZhKyudROcwXF53l-IeDR3pfKSh_hIL0,636
108
108
  udata/core/discussions/signals.py,sha256=zjuF-TiFwu9U_RcgZtHB2Z3W4oBx5hVZy6CCAl5Ekug,543
@@ -110,7 +110,7 @@ udata/core/discussions/tasks.py,sha256=T_Pi7xgbNH0ulQsxRETZvMIoWikh4QKuwA2jW8rLK
110
110
  udata/core/followers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  udata/core/followers/api.py,sha256=9777c3RQUNOemQgL5SQI_U6ya4-Mwm8T2hXaXm_B_RM,2601
112
112
  udata/core/followers/metrics.py,sha256=nKgoiM2Gu-XHrgEf9duW1My66zFSKbmw25BGqo5wWtY,190
113
- udata/core/followers/models.py,sha256=WkZuSjmM6Gk9_SoeQcF-6IHVO2tC45wCvW5p3GDjCjk,1124
113
+ udata/core/followers/models.py,sha256=8n0o5nJBmGX41OOFKUWxiH6cE3PyV1QlvBfqn-AD2KM,1123
114
114
  udata/core/followers/signals.py,sha256=m12PTe9wDVVVD7OkodrX7o_rfk6TALY7PEmd0_jvWPM,528
115
115
  udata/core/followers/views.py,sha256=Znc8aGpP7y0_bmgbIJeVCTxQyDfeKZ1hSIWHi8gbwdw,406
116
116
  udata/core/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -118,11 +118,11 @@ udata/core/jobs/actions.py,sha256=2-UCuSxAbN6DVArDI427qklkxlYIcr1Yprr8xXsaJUU,80
118
118
  udata/core/jobs/api.py,sha256=z2NYBLisa-9XG8y0AIGB1oo10fUG6ZMhNxS--213fII,5776
119
119
  udata/core/jobs/commands.py,sha256=kYoSluhbIG7MwnCSyO7ptD1V9LGwNjlabqlXSQ4hZq4,4413
120
120
  udata/core/jobs/forms.py,sha256=CB_z8JSyvSSJX1XhohsQ1S3kdOhTMgzsFTofso7AD60,1495
121
- udata/core/jobs/models.py,sha256=bE8QO0zhEkkw6tEHC3_LkDjgMglgfh-u17ciDZH4yAc,1326
121
+ udata/core/jobs/models.py,sha256=3vRfBp8e7KqJgKxTSSeMgfsMu07rAz1o_IfsYBFk9o4,1325
122
122
  udata/core/metrics/__init__.py,sha256=Q3nZVl7no0E1ygz7zNJH-KCa-m9FV6wAH2_y6zimcek,397
123
123
  udata/core/metrics/api.py,sha256=vHfH-4n2QR-HE6bXMeAlj1Ma3RR6DRPWDj1LAFukDAM,262
124
124
  udata/core/metrics/commands.py,sha256=_365QvZ1Kt3qJPGlMg2CkBE4gwe7ZM5ye6_O43FFt28,4493
125
- udata/core/metrics/models.py,sha256=PHoxAU2eu3r3x5cJr3IXecvS7f4Hyo5x-2wDrht83r8,288
125
+ udata/core/metrics/models.py,sha256=v0xlLxl2Y9QdILW4DTZ1WzUy2a4XTNepdLNKmb8T8LY,287
126
126
  udata/core/metrics/signals.py,sha256=Xs_k-9lWzsoZU5Joli-41FNgvIVvbAejkjSFB6DHxh0,176
127
127
  udata/core/metrics/tasks.py,sha256=Z7La3-zPB5j6qJoPKr_MgjNZhqscZCmNLPa711ZBkdY,797
128
128
  udata/core/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -148,7 +148,7 @@ udata/core/post/api.py,sha256=eH9dw8u7_Tx6FP19Dvv91nyRGHSWKPR1pTzSkVXIeA4,5369
148
148
  udata/core/post/constants.py,sha256=ibocNUJ1s1mw88QCrKz8n1DSkOBnWuSqo7Y5-Yd75kg,196
149
149
  udata/core/post/factories.py,sha256=0aXYbf11Rl0KJyntNE0LjPaUnpvr4YqvqdTPfvGlyvM,619
150
150
  udata/core/post/forms.py,sha256=ff1efEcFkPRVMWA9YtvCAx0Msy69I7P34WgZsh_jK1E,968
151
- udata/core/post/models.py,sha256=7OyMCIiQzj2OXsYdQon1_HOyiA06nXj1VAqbNVf5EK4,1910
151
+ udata/core/post/models.py,sha256=KYx3PiheMYk8z-LqkfJ80hewrYK7lDpGMa1uUP00Ats,1909
152
152
  udata/core/post/permissions.py,sha256=uofU0TehhOGYyUoRXf3wuy816_D3xwMmaJbDvV336sw,83
153
153
  udata/core/post/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
154
154
  udata/core/post/tests/test_api.py,sha256=LSJQQDUtUVdpwZNpnJaX3yNQYyjkjTTyO7mHnR5DR_I,3948
@@ -177,10 +177,10 @@ udata/core/spam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
177
  udata/core/spam/api.py,sha256=8tVRPorw56kxgN64kme5nLkUfh8Gai9QyqT8aNQn9Xo,1674
178
178
  udata/core/spam/constants.py,sha256=M-wvYlcFnpUDortccIKFHWZ45vbNuMPWSvqKm2itn4w,143
179
179
  udata/core/spam/fields.py,sha256=ppazY9bGnz7mujmDndbxG3pPG_1HDUJCbIufxyD1UNQ,310
180
- udata/core/spam/models.py,sha256=u07LqZbxyeGq68UVtpZzEM9ihqOp52jIX8oJwuVGK5Q,7969
180
+ udata/core/spam/models.py,sha256=4ylTXJ0EbjvwlPUTCwTMDERe26fCqLjAstuvt2EwGN0,7968
181
181
  udata/core/spam/signals.py,sha256=4VVLyC2I39LFAot4P56nHzY0xumjMBDz_N0Ff_kgBd0,159
182
182
  udata/core/spam/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- udata/core/spam/tests/test_spam.py,sha256=CBXXnyKMlMFBpFLzSVL6yG8nZ8lV9RAElxWe4XFVdGA,677
183
+ udata/core/spam/tests/test_spam.py,sha256=W1Ck_rsnURhFi0fy5xOO0CPpW9MuUFbr-NmPZdk5R4Q,676
184
184
  udata/core/spatial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
185
  udata/core/spatial/api.py,sha256=tlApg3JpqbO6CwEwp1LzZ1hyPQreVEgF3H5yrcAPE74,5848
186
186
  udata/core/spatial/api_fields.py,sha256=ymGK3FyE2KNlASOU5GiPgZGeBjjOqnOyCOcRCbuw3D8,2629
@@ -189,11 +189,11 @@ udata/core/spatial/constants.py,sha256=u_4OwAAVYqT0VX6nw_Hc4wIRUPcYww19EFJcnWuMZ
189
189
  udata/core/spatial/factories.py,sha256=GxUU8nRtSoGPw2m3Q-al0PYps2oSnlqC-bM7Eeu14rk,3288
190
190
  udata/core/spatial/forms.py,sha256=tXlYKge5Rc8L8pOjfUo1-9howgVJZDAh7q8xTIlbBww,3218
191
191
  udata/core/spatial/geoids.py,sha256=UqCto4dtQYPXOxyG7sx_0npzM6yvId40ngw3eAlmioQ,1159
192
- udata/core/spatial/models.py,sha256=SSCnNtk7xyRx7n2v118rn4aD5aUvwvNbxlzk0XUCl6Y,5022
192
+ udata/core/spatial/models.py,sha256=8yvjj6SjQcBqPVfmBdRzQRHi9RZNTqdENYzkjlAeSN8,5021
193
193
  udata/core/spatial/translations.py,sha256=7BjZAMPObm1fwM5U_wnrlpcG-1FtMoS6Z5E3h3Y3sog,533
194
194
  udata/core/spatial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
195
  udata/core/spatial/tests/test_api.py,sha256=BySPgLpHvWs3vBIX2_7vJkuqfrFBIsTHtdg6PXOsE_U,10171
196
- udata/core/spatial/tests/test_fields.py,sha256=MjMsx-2ejsXDvo2iaGewZsOEbSuKwudmA5nKLOdPdTc,9745
196
+ udata/core/spatial/tests/test_fields.py,sha256=23MBhrkGhYkQtWcRbj8TsPsUPT5QWhR-C9sohEKpQrU,9744
197
197
  udata/core/spatial/tests/test_geoid.py,sha256=ovVphCxHb5a-iWl7eoLASRAFUY0CGfNEq-MuqHqTPgE,1533
198
198
  udata/core/spatial/tests/test_models.py,sha256=SZx3NhngXWgVon5BKtP0pPPEdvxGTvHQlYFE-fewzTU,951
199
199
  udata/core/storages/__init__.py,sha256=f_41HjVu_4j4JR5LASQd8En9VkqFEDzBgTD3cQqkSqs,1210
@@ -204,7 +204,7 @@ udata/core/storages/views.py,sha256=kADmUH8PPnmhWFVWlhlSrOkhjZ9JCP0RCj0Ohre6PVk,
204
204
  udata/core/tags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
205
  udata/core/tags/api.py,sha256=27aSFH1ZBZKLzeeM5GeNSMsW3-PEiOW3IEtTZyFlabw,867
206
206
  udata/core/tags/csv.py,sha256=LnNLKvptaD9BnvjHbd8rjzVy7TDFIW_gWEO5svbh-LQ,294
207
- udata/core/tags/models.py,sha256=qOvZPBT7d_sSy2iaEDBQs5LK3ksTo6Oim04THO8ftMM,530
207
+ udata/core/tags/models.py,sha256=JjvsjQHCGT4szkiNjvMOsyV2hV-ZRSxfRKyhcFdzfaQ,529
208
208
  udata/core/tags/tasks.py,sha256=BXBJF45t2DmbWsNgLYkuUC9vBGqJ_Dftye5SmHEOttk,1055
209
209
  udata/core/tags/views.py,sha256=BoBktrbx0tqkIu3yYLj_XJjB7ZHu_tq5vfEBrh0MUwI,384
210
210
  udata/core/topic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -247,7 +247,7 @@ udata/features/transfer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
247
247
  udata/features/transfer/actions.py,sha256=E2LMndyhwzVrf8Z4bYUcOdXKKlUNZfWRZFelZdmaDDA,1776
248
248
  udata/features/transfer/api.py,sha256=S2X9-pLPbR6aIicYSJopQ_GtB7PMfN2raT0BD32VInI,4798
249
249
  udata/features/transfer/factories.py,sha256=E05PcdE0EclvUiiC98zl9TyVKRUOw2IOWU0U25PmztY,207
250
- udata/features/transfer/models.py,sha256=YjX0O53DQS8jUU9pb6hFCsBx-eo8g8DOAD7EHZMsHiQ,923
250
+ udata/features/transfer/models.py,sha256=oItut3YeNJB2Nx_XJ_UBilB0LQF5pZil2Tp6TsGpw5w,922
251
251
  udata/features/transfer/notifications.py,sha256=oh_uP0XlEEeT7747A292WkjAjAyO4d0YK28oBICN24Y,1003
252
252
  udata/features/transfer/permissions.py,sha256=-iEgQkIfLYDGarhDVp3TMas4ABl_Pc4KJTSP8pcewws,953
253
253
  udata/forms/__init__.py,sha256=ZxakXdJMwsM_YFT96Z2X24J5YpbpnP_VZ_VEh15gK3w,820
@@ -255,7 +255,7 @@ udata/forms/fields.py,sha256=WTCAc4KVPS6EanpUPuan_reDM9gwx4K2wdvJBxu_pTY,29129
255
255
  udata/forms/validators.py,sha256=EqCJloDOR3BonrR34N_ZaMGBXr0iuliDc82khc98e20,2816
256
256
  udata/forms/widgets.py,sha256=P-D3uYfNH5OhAa-SqNoXROg_DuDlnpv_DaO_e4LcJ5I,1380
257
257
  udata/frontend/__init__.py,sha256=Xc71TI6a8b_QR_wqEOc1tty2y1CwHVbV4tS04nElme0,3494
258
- udata/frontend/csv.py,sha256=N6tINSqZ2wq66F1z0qL2KsAD8NV-bRVOOkpToOUKeCM,8258
258
+ udata/frontend/csv.py,sha256=SDV8GMhNpHyE9NYy9cfHulsFUzwclfc7roWAAm-PZ9M,8257
259
259
  udata/frontend/markdown.py,sha256=41bOiU6AKng4U-5v3otBed3dyCu63NI9fnznUQThbIk,4377
260
260
  udata/harvest/__init__.py,sha256=C4y5w4vGb_F9Opy62lzV3eHo4DkNyRgPCq-wsarPXiQ,28
261
261
  udata/harvest/actions.py,sha256=6f9bkIITLHes0vGU-yioRGfFOghAS3nXThXEVKaHFpA,10082
@@ -305,7 +305,7 @@ udata/linkchecker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
305
305
  udata/linkchecker/backends.py,sha256=Ga0QX7aDLTOmWnhah6_qlmecybCkQk1WaZ60Muf6yVk,1116
306
306
  udata/linkchecker/checker.py,sha256=YU3CBAIy-Cnd03k0PCwoMxN0lgLx8mHZVeOsaoZV_cI,2899
307
307
  udata/linkchecker/commands.py,sha256=sge1zYzbaheAtCV2HFEi0GKc8QLzjKQpd3hVkk8FdQY,469
308
- udata/linkchecker/models.py,sha256=-T130bnMb_Z-XYVyGoyCqCVqxRAKi1bW0-VW0MQPl9I,424
308
+ udata/linkchecker/models.py,sha256=gnTiSZ1VZLga3fH3PR-ayhBlFTvBta7n8lweSh4sUP4,423
309
309
  udata/linkchecker/tasks.py,sha256=u4cvUXOVvnyIMdvA6nfd-1UpQPLpAujmZxAFyJzNwxI,1955
310
310
  udata/migrations/2020-07-24-remove-s-from-scope-oauth.py,sha256=7jCWv_tycQFL3LUd-29FWm0PyIGTUvIXtbMBe_RWl-k,664
311
311
  udata/migrations/2020-08-24-add-fs-filename.py,sha256=yHKU5l704gWmMYjlBO-ODQ7ahgaJCPfLULs8AS7Emnk,1818
@@ -329,20 +329,22 @@ udata/migrations/2023-02-08-rename-internal-dates.py,sha256=AYewRwdVCfHsJ5APbhQW
329
329
  udata/migrations/2024-01-29-fix-reuse-and-dataset-with-private-None.py,sha256=173Zf67G-oJgLwXeQUpzoCzcpAOu1ifcLb4eUMJ9nfU,590
330
330
  udata/migrations/2024-03-22-migrate-activity-kwargs-to-extras.py,sha256=n5-udd1IdaD-e3q5cZx9nC4uMUSyJyT1TkI6I4gFgh0,400
331
331
  udata/migrations/__init__.py,sha256=3YP8ppVG5Jx_u6fWJ099X6m3JDYsbd_wetpu4arl6_U,10882
332
- udata/models/__init__.py,sha256=1jVsYyZqtPKOuGgbhHmJd3rWJjAv5t7k51_j5C43m8c,5528
333
- udata/models/badges_field.py,sha256=NnHA6OT40UysQzO3qnxiDNLR-SCj19KlqD1c-p1DP2Q,984
334
- udata/models/datetime_fields.py,sha256=f3Q4LYa9pKRdB2W2yZVFIuIqd7_ELim1djr6xjPhEZg,1932
335
- udata/models/document.py,sha256=fqqzrj3Q85iYDJ3biwU-Dv_QJqS31IBf_TGqvppCSz4,1200
336
- udata/models/extras_fields.py,sha256=OQD-V2h2I9mrL7nP2YPx3QtsDt4TDZYxxjKEQNe5kug,3961
337
- udata/models/owned.py,sha256=LToJQ6UsC65QPXYEbHbPi8U0AmH55tNDqpKIAWZqAz4,2707
338
- udata/models/queryset.py,sha256=2EH9BikDbQXkUsL9c0SotZKYAwkWXUTlk1fi9aJlX8Q,3118
339
- udata/models/slug_fields.py,sha256=WOHfj1I7kIRxtEBYR83IirqLLhVX2WwqZQ0pKMODEmQ,6423
340
- udata/models/taglist_field.py,sha256=R7C2wpRdeDP_gyYs5r5JjTz7tNm4jrrT9h6dv_pdcfw,551
341
- udata/models/url_field.py,sha256=a7FEaDpZKbox8OVfLl4dYno1DFmvxUvHmhzUK2ekSfM,1361
342
- udata/models/uuid_fields.py,sha256=6OUr6yFtoFK5lUZPTjQPF5qSsiP7D79z3DNOffGPCo4,481
332
+ udata/models/__init__.py,sha256=ObDl28eHct3v0sBKoP58drXbIhys7q31w5pjvD2iTXk,1472
333
+ udata/mongo/__init__.py,sha256=_ubmmhJuo6_fpuoMPEAat9Pv-5K_8rDbUuXmhe62zvU,1419
334
+ udata/mongo/badges_field.py,sha256=NnHA6OT40UysQzO3qnxiDNLR-SCj19KlqD1c-p1DP2Q,984
335
+ udata/mongo/datetime_fields.py,sha256=f3Q4LYa9pKRdB2W2yZVFIuIqd7_ELim1djr6xjPhEZg,1932
336
+ udata/mongo/document.py,sha256=fqqzrj3Q85iYDJ3biwU-Dv_QJqS31IBf_TGqvppCSz4,1200
337
+ udata/mongo/engine.py,sha256=zfV5XLpRcK3ri6unRCshDe1k8lnZ_ETyNztPNVKEbJs,2662
338
+ udata/mongo/extras_fields.py,sha256=OQD-V2h2I9mrL7nP2YPx3QtsDt4TDZYxxjKEQNe5kug,3961
339
+ udata/mongo/owned.py,sha256=LToJQ6UsC65QPXYEbHbPi8U0AmH55tNDqpKIAWZqAz4,2707
340
+ udata/mongo/queryset.py,sha256=2EH9BikDbQXkUsL9c0SotZKYAwkWXUTlk1fi9aJlX8Q,3118
341
+ udata/mongo/slug_fields.py,sha256=WOHfj1I7kIRxtEBYR83IirqLLhVX2WwqZQ0pKMODEmQ,6423
342
+ udata/mongo/taglist_field.py,sha256=R7C2wpRdeDP_gyYs5r5JjTz7tNm4jrrT9h6dv_pdcfw,551
343
+ udata/mongo/url_field.py,sha256=a7FEaDpZKbox8OVfLl4dYno1DFmvxUvHmhzUK2ekSfM,1361
344
+ udata/mongo/uuid_fields.py,sha256=6OUr6yFtoFK5lUZPTjQPF5qSsiP7D79z3DNOffGPCo4,481
343
345
  udata/notifications/__init__.py,sha256=cM-wpmzBESXhdac_SNjRIHcexJK8eknmB4MR8L7K3v0,51
344
346
  udata/notifications/mattermost.py,sha256=WAmhG86u2ppQyQ8LPGpWyjPmnhrIrJm-kf_bD-8IjwM,782
345
- udata/search/__init__.py,sha256=Nq4S30860SR3YtCycuA1JEUOEzLGyTAcSAd0lS7Z7u4,3975
347
+ udata/search/__init__.py,sha256=2P_r5aVSaKz34JUOJUqiuqBZ1K7MmDvoazMQ6xB13X4,3974
346
348
  udata/search/adapter.py,sha256=ggtr-_BaO1M40CGKnkAgy2XFNPX57ONusoC4UqJa8bE,2264
347
349
  udata/search/commands.py,sha256=UvxfSTmWj1Je72dE25TpmBhn6KPpDm-PlQlsfi0cc10,5577
348
350
  udata/search/fields.py,sha256=_bT_AcIOmuJEhnnatScRsPYNWsK_ZWpl2yT8ZnK7-dc,1843
@@ -556,7 +558,7 @@ udata/tests/__init__.py,sha256=BezijRRI6dPPiEWWjLsJFLrhhfsTZgcctcxhVfp4j70,2332
556
558
  udata/tests/es-fake-result.json,sha256=z0CX9Gs-NRj49dmtdFvw8ZKsAbMhDt97Na6JX3ucX34,3155
557
559
  udata/tests/helpers.py,sha256=aaifyevJ1Z8CZ8htRrl8OCG5hGcaHfj0lL8iMEKds9w,6022
558
560
  udata/tests/models.py,sha256=_V0smMb1Z6p3aZv6PorzNN-HiNt_B46Ox1fqXrTJEqk,238
559
- udata/tests/plugin.py,sha256=hI9Z5SIxUT8UhqZMLcNPzBqdM8-nUgtCW6Pbw2bnNsQ,11045
561
+ udata/tests/plugin.py,sha256=puoSIbE5vL6eum0YAeGhE2ARwxWstC6ua-rXJC9Z5fI,11044
560
562
  udata/tests/schemas.json,sha256=ZRHijbvYaQBrKuTJzCY5ZeQXdIdaZkv3fo7VMbDjsNg,3483
561
563
  udata/tests/test_activity.py,sha256=spWfhueuLze0kD-pAnegiL3_Kv5io155jQuFI4sjN7I,3258
562
564
  udata/tests/test_discussions.py,sha256=zPvKOdcTNGXrvHFp9zqjhKE2fqgUkhb_1F98egXYCL0,31036
@@ -564,11 +566,11 @@ udata/tests/test_i18n.py,sha256=BU9E7OoIkJw5tv5JYGLjDGBDsti2HuQ_3OWDKnBxnaM,3191
564
566
  udata/tests/test_linkchecker.py,sha256=KxV1-PuuuqogkHf3jP6JhRsc2QG2dFmFB-vSHOiHkuU,10374
565
567
  udata/tests/test_mail.py,sha256=LK_fOBbFoqbwdaIEXO9XyGPzxY9nrT9FjyD_dlglUdQ,1643
566
568
  udata/tests/test_migrations.py,sha256=IG2o13B3sgkfg3PAqrbOTkS2iqGubNxa_JD-LHL9zxc,15317
567
- udata/tests/test_model.py,sha256=UwjL0HVqAYr1mNXYsnDTGojpoaMbBoUinXElifNECDk,20264
569
+ udata/tests/test_model.py,sha256=DoJxj5E_jmWMWQXS44XsZ0Fza3ymSQC5yWnekjMXjGs,20287
568
570
  udata/tests/test_notifications.py,sha256=El5i56LCn0PwJc1PYx7g8onUk2i47dfjlcdMohCXGAQ,2333
569
- udata/tests/test_owned.py,sha256=LOk8CJxFgi3gKqd0bPIjwi8bgGMUSPW6WWzJFWzI38I,5622
571
+ udata/tests/test_owned.py,sha256=JNkJswesmlx2qvrTBX6YNZx1wzxBxM2i8TIqrTYWH0A,5621
570
572
  udata/tests/test_rdf.py,sha256=osRAX9U9v5Hm3Tar-FqKUe7wCuTx4jHI7sYJxJVIhaQ,2813
571
- udata/tests/test_routing.py,sha256=iulqXvEWo7ykprUTY0BTAt_gTeHi4cs_dLAPokQ3Iv8,10041
573
+ udata/tests/test_routing.py,sha256=zoPmmiEakFRK32ZHWKC6N1FOzwsS3x65-Iw4nhw2FYM,10039
572
574
  udata/tests/test_storages.py,sha256=V1yaaa2z_cJuy5tIP9uBPeUZxYXqccpYZ_bMVOUQ0c0,9329
573
575
  udata/tests/test_tags.py,sha256=zd-w9rZ_Iaj6Z2S1diCWzNrEtOSuBGakTHhD_pIUE1o,3754
574
576
  udata/tests/test_topics.py,sha256=r7Y0BW0Z5obld9ASs2Ck9AhykgBtmMedZmL2Bfz_rDw,1323
@@ -605,7 +607,7 @@ udata/tests/dataset/test_dataset_actions.py,sha256=4_0F_TCSCfHpzqDt659c8hG4GpkWj
605
607
  udata/tests/dataset/test_dataset_commands.py,sha256=TAgVdimIcBVmcSNKXKXbhmCGYRo8Keh_InBNiS6UlkM,802
606
608
  udata/tests/dataset/test_dataset_events.py,sha256=zt6F4j_vOBfMxDW6vBVQ5PGwr0d4s6LGw0cGkt9BlvI,2835
607
609
  udata/tests/dataset/test_dataset_model.py,sha256=Mgq_qFh7pY8QFDke9HWezXTO6dqjd8qoRI8i01Qan-o,29769
608
- udata/tests/dataset/test_dataset_rdf.py,sha256=0lyHiP9eZdIHUkvgQQ6Dw_LMaXX2SHTxiJdLIorizaw,29389
610
+ udata/tests/dataset/test_dataset_rdf.py,sha256=2Wt4TQsJcH4w1CAFSW8H2O40Fh8hO--r3H9eSC89z7o,29388
609
611
  udata/tests/dataset/test_dataset_tasks.py,sha256=BN5qcvq6753WcpPOZd7vL1iIEW36ZBZrb2Lszb4eWEM,2283
610
612
  udata/tests/dataset/test_resource_preview.py,sha256=q1C9W9dO3nLWaR3-hpUOPYW17hCmQ3raty9Bl4FX3hg,3947
611
613
  udata/tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -613,23 +615,23 @@ udata/tests/features/territories/__init__.py,sha256=tRlFbldRkomeqjYi_QdfDOfvuC12
613
615
  udata/tests/features/territories/commands.py,sha256=LMestg7oCC52GSHmrpD4l10MRgquLnS_TsjPzy72enQ,240
614
616
  udata/tests/features/territories/test_territories_api.py,sha256=OJ6MIcrc0Ttiw0a0jE9etKX1IN3SAP2kp4juQF0Yo6c,7888
615
617
  udata/tests/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
616
- udata/tests/forms/test_basic_fields.py,sha256=Pj75ZebQk1dEKe11XapyYNKH59l8RCP2erT0Ew7LwS0,2097
618
+ udata/tests/forms/test_basic_fields.py,sha256=r76-GROpiHyrhYJH5Olr58A441hRbg93f35Dl7jxbpc,2096
617
619
  udata/tests/forms/test_current_user_field.py,sha256=RiXw_Rj56qJHnafPyjcNGq8CIRsp395wxRkWax-fei0,6763
618
- udata/tests/forms/test_daterange_field.py,sha256=FGvgDfvXhBThRwrQgx8M6kdbnjd3AmszKLXtzAvdK3k,3801
619
- udata/tests/forms/test_dict_field.py,sha256=tmulCmvWPprp_NuPAUcMwDbSzt-EnRtMruP_17drYW4,1645
620
- udata/tests/forms/test_extras_fields.py,sha256=bKEazLilrm8gcLtgvOryoGvXB2RC24dq3--tJ3Jeglo,4464
621
- udata/tests/forms/test_form_field.py,sha256=QrxecT9gp9Eq1TVlHoP_zWK82ZSHAD9Smd3qIBASOQs,3607
622
- udata/tests/forms/test_image_field.py,sha256=VKOc5i9gs3VeQ-LxELWVJilFeS1u1TPjEwX_l04cuoI,3484
623
- udata/tests/forms/test_model_field.py,sha256=KEq3hhvoSonYIAlweATwMsemXd3hu_Kg2P-gVB_zgs4,9404
624
- udata/tests/forms/test_model_list_field.py,sha256=HZzSwEGoBrFAukpg_QN7r66aQTb544jYWwjSArDe0OE,3571
625
- udata/tests/forms/test_nested_model_list_field.py,sha256=NKikOt9r9sjQpqntzRe2sCvMNAeezZfgpSzDKY93QpU,9663
620
+ udata/tests/forms/test_daterange_field.py,sha256=HZklcuJCsb6diZ3-7bf2GxMVb2BsRSE8dstQaE1sXCI,3800
621
+ udata/tests/forms/test_dict_field.py,sha256=9G05rUOYSFteHz_fQcyKmzSIENAx48E2e4cw4AYG1D8,1644
622
+ udata/tests/forms/test_extras_fields.py,sha256=DbL4itUiUX-VxBt9gLY2XO4htjAJ5ULqf35xDJW1y1Y,4463
623
+ udata/tests/forms/test_form_field.py,sha256=wzGhYXMQNcUX2d-3ritEaOISyrfdtIZqoEhwfQNGKv4,3606
624
+ udata/tests/forms/test_image_field.py,sha256=tcDkunJYkGXxSDQVSu9BXhaWCeDEWpcMImsudthuVuA,3483
625
+ udata/tests/forms/test_model_field.py,sha256=bNJK8Z94CCZ1wMwMQKcEA3syoMQKmPbCx1oPt-iaPwg,9403
626
+ udata/tests/forms/test_model_list_field.py,sha256=m4NXlssAZhG-OJF1ljWqJsWmuby9hL6PbtJ3BQDWcrE,3570
627
+ udata/tests/forms/test_nested_model_list_field.py,sha256=ECOm864hdvo6et5aSclOUe16AUo0-pX3tVXp2BNnlFg,9662
626
628
  udata/tests/forms/test_publish_as_field.py,sha256=OqLLRdK8XDvlCixahWbEWGaOxGfYeaZXi8LALJWaFt0,11817
627
- udata/tests/forms/test_reference_field.py,sha256=qwRBjRntK_A-R59pagtZ9r15FKH4EJPXkgq_V-QiRDo,6525
629
+ udata/tests/forms/test_reference_field.py,sha256=CHRxrgf1se286YZIxPP7QqO-29802Rk-yo9rXaZzJos,6524
628
630
  udata/tests/forms/test_user_forms.py,sha256=3JJAUWdLn1-oij2AoD_PeJuJHDKbMQTKgBmkoPvBy84,944
629
- udata/tests/forms/test_uuid_field.py,sha256=KrEAo930bzhH0O9wDxjsrm8j1f4ah8QkVXmOID_Se_0,1833
631
+ udata/tests/forms/test_uuid_field.py,sha256=-Amb-yzf_QVDs7iJgjlJkmE1Ng8p-XWo9o3ggT6cKhA,1832
630
632
  udata/tests/frontend/__init__.py,sha256=nv8LXpGd2y4yi7kLEbhsJMEmtkUs8QMcriMCXQoxwtA,793
631
633
  udata/tests/frontend/test_auth.py,sha256=5jPBmzdxEy_1NCuCmbK1D3ax656DQ6fGYwdixpGQ71c,995
632
- udata/tests/frontend/test_csv.py,sha256=mBJdEwXc6YQSzSqrnup_v76Ct_LGRRhO2wxheoOXG_s,11944
634
+ udata/tests/frontend/test_csv.py,sha256=Sxub7sfItDsT7chUxEsIDj9sdK2eCJwuFPdx1-u9oVI,11943
633
635
  udata/tests/frontend/test_hooks.py,sha256=ZTIHWjtqzBXNQK-5EH4zmqLeBBX0S617i4A_dnO3xIw,4077
634
636
  udata/tests/frontend/test_markdown.py,sha256=KHh0rFfWHqzes0qvLPPFc7uV_IPSS7ymVsQeVpjpPA4,12689
635
637
  udata/tests/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -641,7 +643,7 @@ udata/tests/organization/test_organization_tasks.py,sha256=GZMqwJa8gZj1EiQjm6z-O
641
643
  udata/tests/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
642
644
  udata/tests/reuse/test_reuse_model.py,sha256=HWa4_8c3zI-7BMJ3dH_x9Yj7p2sSRCVyT1uyYD0_9Qo,3709
643
645
  udata/tests/reuse/test_reuse_task.py,sha256=_aGLPhvFunsNv7_tV8UmLT0obxDegxurchiZ0N_trbs,1396
644
- udata/tests/search/__init__.py,sha256=tSM40xpdgP9bj3299GEDJVCIaxvNj-hklCS50SuTQL0,1495
646
+ udata/tests/search/__init__.py,sha256=chVakmBqfB3JXL10vlIZp50Rj-zEdnQLuTVqqGSPxs4,1494
645
647
  udata/tests/search/test_adapter.py,sha256=RpQo3tjaV3G2tnLw1vxRWhSZzOqIb-RM0s4U0oN9fEI,7091
646
648
  udata/tests/search/test_query.py,sha256=wtgC4rkaxe8vIaWOcANZ1yFFkEKTdNHj2yiTaYI-R-M,1406
647
649
  udata/tests/search/test_results.py,sha256=yjeqxNKVbjMxxvUsZb7csfU3wsV_YNjBDnfYRw5QN-s,1998
@@ -672,9 +674,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=zCVMB-a4-mLM1jNyYMk58rgVRaVIwQ
672
674
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=avfWczvlLBKSohyB55-4TLmUGMU_Rze4XmAo4OTk2v0,43513
673
675
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=ScuqdpaV4y1ZIpBAEfxeaKdzkyGZL0mJmKMoG6w0iRQ,28553
674
676
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=QpgEXh1eHjztPa7oNLXd_sds1DC95A-STTtZyTE4m-E,50093
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,,
677
+ udata-7.0.7.dev28443.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
678
+ udata-7.0.7.dev28443.dist-info/METADATA,sha256=kvdXpC9KqzqEeSOMKlS9FdtWxsD4ex641B2faeCD8O8,120674
679
+ udata-7.0.7.dev28443.dist-info/WHEEL,sha256=-G_t0oGuE7UD0DrSpVZnq1hHMBV9DD2XkS5v7XpmTnk,110
680
+ udata-7.0.7.dev28443.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
681
+ udata-7.0.7.dev28443.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
682
+ udata-7.0.7.dev28443.dist-info/RECORD,,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes