udata 13.0.1.dev12__py3-none-any.whl → 14.4.1.dev7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- udata/api/__init__.py +2 -8
- udata/api_fields.py +35 -4
- udata/app.py +30 -50
- udata/auth/__init__.py +29 -6
- udata/auth/forms.py +8 -6
- udata/auth/views.py +6 -3
- udata/commands/__init__.py +2 -14
- udata/commands/db.py +13 -25
- udata/commands/info.py +0 -16
- udata/commands/serve.py +3 -11
- udata/commands/tests/test_fixtures.py +9 -9
- udata/core/access_type/api.py +1 -1
- udata/core/access_type/constants.py +12 -8
- udata/core/activity/api.py +5 -6
- udata/core/avatars/api.py +43 -0
- udata/core/avatars/test_avatar_api.py +30 -0
- udata/core/badges/tests/test_commands.py +6 -6
- udata/core/csv.py +5 -0
- udata/core/dataservices/models.py +15 -3
- udata/core/dataservices/tasks.py +7 -0
- udata/core/dataset/api.py +2 -0
- udata/core/dataset/models.py +2 -2
- udata/core/dataset/permissions.py +31 -0
- udata/core/dataset/tasks.py +50 -10
- udata/core/discussions/models.py +1 -0
- udata/core/metrics/__init__.py +0 -6
- udata/core/organization/api.py +8 -5
- udata/core/organization/mails.py +1 -1
- udata/core/organization/models.py +9 -1
- udata/core/organization/notifications.py +84 -0
- udata/core/organization/permissions.py +1 -1
- udata/core/organization/tasks.py +3 -0
- udata/core/pages/tests/test_api.py +32 -0
- udata/core/post/api.py +24 -69
- udata/core/post/models.py +84 -16
- udata/core/post/tests/test_api.py +24 -1
- udata/core/reports/api.py +18 -0
- udata/core/reports/models.py +42 -2
- udata/core/reuse/models.py +1 -1
- udata/core/reuse/tasks.py +7 -0
- udata/core/site/models.py +2 -6
- udata/core/spatial/commands.py +2 -4
- udata/core/spatial/forms.py +2 -2
- udata/core/spatial/models.py +0 -10
- udata/core/spatial/tests/test_api.py +1 -36
- udata/core/user/models.py +15 -2
- udata/cors.py +2 -5
- udata/db/migrations.py +279 -0
- udata/features/notifications/api.py +7 -18
- udata/features/notifications/models.py +56 -0
- udata/features/notifications/tasks.py +25 -0
- udata/flask_mongoengine/engine.py +0 -4
- udata/frontend/__init__.py +3 -122
- udata/frontend/markdown.py +2 -1
- udata/harvest/actions.py +24 -9
- udata/harvest/api.py +30 -22
- udata/harvest/backends/__init__.py +21 -9
- udata/harvest/backends/base.py +29 -3
- udata/harvest/backends/ckan/harvesters.py +13 -2
- udata/harvest/backends/dcat.py +3 -0
- udata/harvest/backends/maaf.py +1 -0
- udata/harvest/commands.py +39 -4
- udata/harvest/filters.py +17 -6
- udata/harvest/forms.py +9 -6
- udata/harvest/models.py +16 -0
- udata/harvest/permissions.py +27 -0
- udata/harvest/tasks.py +3 -5
- udata/harvest/tests/ckan/test_ckan_backend.py +35 -2
- udata/harvest/tests/ckan/test_ckan_backend_errors.py +1 -1
- udata/harvest/tests/ckan/test_ckan_backend_filters.py +1 -1
- udata/harvest/tests/ckan/test_dkan_backend.py +1 -1
- udata/harvest/tests/dcat/udata.xml +6 -6
- udata/harvest/tests/factories.py +1 -1
- udata/harvest/tests/test_actions.py +63 -8
- udata/harvest/tests/test_api.py +278 -123
- udata/harvest/tests/test_base_backend.py +88 -1
- udata/harvest/tests/test_dcat_backend.py +60 -13
- udata/harvest/tests/test_filters.py +6 -0
- udata/i18n.py +11 -273
- udata/mail.py +5 -1
- udata/migrations/2025-10-31-create-membership-request-notifications.py +55 -0
- udata/migrations/2025-11-13-delete-user-email-index.py +25 -0
- udata/migrations/2025-12-04-add-uuid-to-discussion-messages.py +28 -0
- udata/models/__init__.py +0 -8
- udata/mongo/slug_fields.py +1 -1
- udata/rdf.py +45 -6
- udata/routing.py +2 -10
- udata/sentry.py +4 -10
- udata/settings.py +23 -17
- udata/tasks.py +4 -3
- udata/templates/mail/message.html +5 -31
- udata/tests/__init__.py +28 -12
- udata/tests/api/__init__.py +108 -21
- udata/tests/api/test_activities_api.py +36 -0
- udata/tests/api/test_auth_api.py +121 -95
- udata/tests/api/test_base_api.py +7 -4
- udata/tests/api/test_dataservices_api.py +29 -1
- udata/tests/api/test_datasets_api.py +45 -21
- udata/tests/api/test_organizations_api.py +192 -197
- udata/tests/api/test_reports_api.py +157 -0
- udata/tests/api/test_reuses_api.py +147 -147
- udata/tests/api/test_security_api.py +12 -12
- udata/tests/api/test_swagger.py +4 -4
- udata/tests/api/test_tags_api.py +8 -8
- udata/tests/api/test_user_api.py +13 -1
- udata/tests/apiv2/test_swagger.py +4 -4
- udata/tests/apiv2/test_topics.py +1 -1
- udata/tests/cli/test_cli_base.py +8 -9
- udata/tests/dataset/test_dataset_commands.py +4 -4
- udata/tests/dataset/test_dataset_model.py +66 -26
- udata/tests/dataset/test_dataset_rdf.py +99 -5
- udata/tests/dataset/test_resource_preview.py +0 -1
- udata/tests/frontend/test_auth.py +24 -1
- udata/tests/frontend/test_csv.py +0 -3
- udata/tests/helpers.py +37 -27
- udata/tests/organization/test_notifications.py +67 -2
- udata/tests/plugin.py +6 -261
- udata/tests/site/test_site_csv_exports.py +22 -10
- udata/tests/test_activity.py +9 -9
- udata/tests/test_cors.py +1 -1
- udata/tests/test_dcat_commands.py +2 -2
- udata/tests/test_discussions.py +5 -5
- udata/tests/test_migrations.py +181 -481
- udata/tests/test_notifications.py +15 -57
- udata/tests/test_notifications_task.py +43 -0
- udata/tests/test_owned.py +81 -1
- udata/tests/test_storages.py +25 -19
- udata/tests/test_topics.py +77 -61
- udata/tests/test_uris.py +33 -0
- udata/tests/workers/test_jobs_commands.py +23 -23
- udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
- udata/translations/ar/LC_MESSAGES/udata.po +187 -108
- udata/translations/de/LC_MESSAGES/udata.mo +0 -0
- udata/translations/de/LC_MESSAGES/udata.po +187 -108
- udata/translations/es/LC_MESSAGES/udata.mo +0 -0
- udata/translations/es/LC_MESSAGES/udata.po +187 -108
- udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/fr/LC_MESSAGES/udata.po +188 -109
- udata/translations/it/LC_MESSAGES/udata.mo +0 -0
- udata/translations/it/LC_MESSAGES/udata.po +187 -108
- udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
- udata/translations/pt/LC_MESSAGES/udata.po +187 -108
- udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/sr/LC_MESSAGES/udata.po +187 -108
- udata/translations/udata.pot +215 -106
- udata/uris.py +0 -2
- udata/utils.py +5 -0
- udata-14.4.1.dev7.dist-info/METADATA +109 -0
- {udata-13.0.1.dev12.dist-info → udata-14.4.1.dev7.dist-info}/RECORD +153 -166
- {udata-13.0.1.dev12.dist-info → udata-14.4.1.dev7.dist-info}/entry_points.txt +3 -5
- udata/core/followers/views.py +0 -15
- udata/core/post/forms.py +0 -30
- udata/entrypoints.py +0 -93
- udata/features/identicon/__init__.py +0 -0
- udata/features/identicon/api.py +0 -13
- udata/features/identicon/backends.py +0 -131
- udata/features/identicon/tests/__init__.py +0 -0
- udata/features/identicon/tests/test_backends.py +0 -18
- udata/features/territories/__init__.py +0 -49
- udata/features/territories/api.py +0 -25
- udata/features/territories/models.py +0 -51
- udata/flask_mongoengine/json.py +0 -38
- udata/migrations/__init__.py +0 -367
- udata/templates/mail/base.html +0 -105
- udata/templates/mail/base.txt +0 -6
- udata/templates/mail/button.html +0 -3
- udata/templates/mail/layouts/1-column.html +0 -19
- udata/templates/mail/layouts/2-columns.html +0 -20
- udata/templates/mail/layouts/center-panel.html +0 -16
- udata/tests/cli/test_db_cli.py +0 -68
- udata/tests/features/territories/__init__.py +0 -20
- udata/tests/features/territories/test_territories_api.py +0 -185
- udata/tests/frontend/test_hooks.py +0 -149
- udata-13.0.1.dev12.dist-info/METADATA +0 -133
- {udata-13.0.1.dev12.dist-info → udata-14.4.1.dev7.dist-info}/WHEEL +0 -0
- {udata-13.0.1.dev12.dist-info → udata-14.4.1.dev7.dist-info}/licenses/LICENSE +0 -0
- {udata-13.0.1.dev12.dist-info → udata-14.4.1.dev7.dist-info}/top_level.txt +0 -0
udata/uris.py
CHANGED
udata/utils.py
CHANGED
|
@@ -4,6 +4,7 @@ import math
|
|
|
4
4
|
import re
|
|
5
5
|
from collections import Counter
|
|
6
6
|
from datetime import date, datetime, timedelta
|
|
7
|
+
from importlib.metadata import version
|
|
7
8
|
from math import ceil
|
|
8
9
|
from typing import Any, Hashable
|
|
9
10
|
from uuid import UUID, uuid4
|
|
@@ -24,6 +25,10 @@ from mongoengine.fields import BaseQuerySet
|
|
|
24
25
|
from udata import tags
|
|
25
26
|
|
|
26
27
|
|
|
28
|
+
def get_udata_version() -> str:
|
|
29
|
+
return version("udata")
|
|
30
|
+
|
|
31
|
+
|
|
27
32
|
def get_by(lst, field, value):
|
|
28
33
|
"""Find an object in a list given a field value"""
|
|
29
34
|
for row in lst:
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: udata
|
|
3
|
+
Version: 14.4.1.dev7
|
|
4
|
+
Summary: Open data portal
|
|
5
|
+
Author-email: Opendata Team <opendatateam@data.gouv.fr>
|
|
6
|
+
Maintainer-email: Opendata Team <opendatateam@data.gouv.fr>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/opendatateam/udata
|
|
9
|
+
Project-URL: Repository, https://github.com/opendatateam/udata
|
|
10
|
+
Project-URL: Documentation, https://udata.readthedocs.io/
|
|
11
|
+
Project-URL: Bug Tracker, https://github.com/opendatateam/udata/issues
|
|
12
|
+
Keywords: udata,open data,portal,data
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Programming Language :: Python
|
|
15
|
+
Classifier: Environment :: Web Environment
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: Topic :: System :: Software Distribution
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
|
25
|
+
Requires-Python: <3.14,>=3.11
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: authlib<2.0.0,>=1.5.1
|
|
29
|
+
Requires-Dist: awesome-slugify<2.0.0,>=1.6.5
|
|
30
|
+
Requires-Dist: babel<3.0.0,>=2.17.0
|
|
31
|
+
Requires-Dist: bcrypt<5.0.0,>=4.0.0
|
|
32
|
+
Requires-Dist: bleach[css]<7.0.0,>=6.2.0
|
|
33
|
+
Requires-Dist: blinker<2.0,>=1.5
|
|
34
|
+
Requires-Dist: boto3<2.0.0,>=1.26.102
|
|
35
|
+
Requires-Dist: botocore<2.0.0,>=1.29.165
|
|
36
|
+
Requires-Dist: celery<6.0.0,>=5.4.0
|
|
37
|
+
Requires-Dist: celerybeat-mongo<1.0.0,>=0.2.0
|
|
38
|
+
Requires-Dist: click<9.0.0,>=8.1.8
|
|
39
|
+
Requires-Dist: email-validator<3.0.0,>=2.2.0
|
|
40
|
+
Requires-Dist: factory-boy<4.0.0,>=3.3.3
|
|
41
|
+
Requires-Dist: feedgenerator<3.0.0,>=2.1.0
|
|
42
|
+
Requires-Dist: flask<4.0.0,>=3.0.0
|
|
43
|
+
Requires-Dist: flask-babel<5.0.0,>=4.0.0
|
|
44
|
+
Requires-Dist: flask-caching<3.0.0,>=2.3.1
|
|
45
|
+
Requires-Dist: flask-cdn<2.0.0,>=1.5.3
|
|
46
|
+
Requires-Dist: flask-gravatar<1.0.0,>=0.5.0
|
|
47
|
+
Requires-Dist: flask-login<1.0.0,>=0.6.3
|
|
48
|
+
Requires-Dist: flask-mail<1.0.0,>=0.10.0
|
|
49
|
+
Requires-Dist: flask-principal<1.0.0,>=0.4.0
|
|
50
|
+
Requires-Dist: flask-restx<2.0.0,>=1.3.0
|
|
51
|
+
Requires-Dist: flask-security-too<6.0.0,>=5.1.2
|
|
52
|
+
Requires-Dist: flask-sitemap<1.0.0,>=0.4.0
|
|
53
|
+
Requires-Dist: flask-storage<2.0.0,>=1.4.0
|
|
54
|
+
Requires-Dist: flask-wtf<2.0.0,>=1.2.2
|
|
55
|
+
Requires-Dist: geojson<4.0.0,>=3.2.0
|
|
56
|
+
Requires-Dist: geomet<2.0.0,>=1.1.0
|
|
57
|
+
Requires-Dist: html2text==2025.4.15
|
|
58
|
+
Requires-Dist: humanfriendly<11.0.0,>=10.0
|
|
59
|
+
Requires-Dist: importlib-resources<7.0.0,>=6.5.2
|
|
60
|
+
Requires-Dist: itsdangerous<3.0.0,>=2.2.0
|
|
61
|
+
Requires-Dist: jinja2<4.0.0,>=3.1.6
|
|
62
|
+
Requires-Dist: jsonschema<5.0.0,>=4.23.0
|
|
63
|
+
Requires-Dist: kombu[redis]<6.0.0,>=5.5.0
|
|
64
|
+
Requires-Dist: langdetect<2.0.0,>=1.0.9
|
|
65
|
+
Requires-Dist: levenshtein<1.0.0,>=0.27.1
|
|
66
|
+
Requires-Dist: lxml<7.0.0,>=6.0.0
|
|
67
|
+
Requires-Dist: markupsafe<4.0.0,>=3.0.3
|
|
68
|
+
Requires-Dist: mistune<4.0.0,>=3.1.3
|
|
69
|
+
Requires-Dist: mongoengine<1.0.0,>=0.29.1
|
|
70
|
+
Requires-Dist: netaddr<2.0.0,>=1.3.0
|
|
71
|
+
Requires-Dist: pillow<13.0.0,>=11.0.0
|
|
72
|
+
Requires-Dist: pydenticon<1.0.0,>=0.3.1
|
|
73
|
+
Requires-Dist: pymongo<5.0.0,>=4.11.3
|
|
74
|
+
Requires-Dist: python-dateutil<3.0.0,>=2.9.0.post0
|
|
75
|
+
Requires-Dist: pytz
|
|
76
|
+
Requires-Dist: rdflib<8.0.0,>=7.1.3
|
|
77
|
+
Requires-Dist: redis<8.0.0,>=5.0.0
|
|
78
|
+
Requires-Dist: requests<3.0.0,>=2.32.4
|
|
79
|
+
Requires-Dist: saxonche<13.0.0,>=12.8.0
|
|
80
|
+
Requires-Dist: sentry-sdk[flask]<3.0.0,>=2.23.1
|
|
81
|
+
Requires-Dist: speaklater<2.0.0,>=1.3
|
|
82
|
+
Requires-Dist: tlds>=2025022800
|
|
83
|
+
Requires-Dist: typing-extensions<5.0.0,>=4.12.2
|
|
84
|
+
Requires-Dist: tzdata
|
|
85
|
+
Requires-Dist: urlextract<2.0.0,>=1.9.0
|
|
86
|
+
Requires-Dist: urllib3<3.0.0,>=2.0.0
|
|
87
|
+
Requires-Dist: voluptuous<1.0.0,>=0.15.2
|
|
88
|
+
Requires-Dist: werkzeug<4.0.0,>=3.0.0
|
|
89
|
+
Requires-Dist: wtforms[email]<4.0.0,>=3.2.1
|
|
90
|
+
Requires-Dist: wtforms-json<1.0.0,>=0.3.5
|
|
91
|
+
Dynamic: license-file
|
|
92
|
+
|
|
93
|
+
<p align="center"><img src="https://i.imgur.com/rlRox1c.png"></p>
|
|
94
|
+
|
|
95
|
+
udata
|
|
96
|
+
=====
|
|
97
|
+
|
|
98
|
+
Customizable and skinnable social platform dedicated to (open) data.
|
|
99
|
+
|
|
100
|
+
The [full documentation][readthedocs-url] is hosted on Read the Docs.
|
|
101
|
+
|
|
102
|
+
udata is maintained by [data.gouv.fr](https://data.gouv.fr/), the
|
|
103
|
+
French public agency in charge of open data. data.gouv.fr is responsible
|
|
104
|
+
for publishing udata's roadmap and for building consensus around it.
|
|
105
|
+
|
|
106
|
+
It is collectively taken care of by members of the
|
|
107
|
+
[OpenDataTeam](https://github.com/opendatateam).
|
|
108
|
+
|
|
109
|
+
[readthedocs-url]: https://udata.readthedocs.io/en/stable/
|