udata 13.0.1.dev10__py3-none-any.whl → 14.0.0__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 (93) hide show
  1. udata/api/__init__.py +2 -8
  2. udata/app.py +12 -30
  3. udata/auth/forms.py +6 -4
  4. udata/commands/__init__.py +2 -14
  5. udata/commands/db.py +13 -25
  6. udata/commands/info.py +0 -18
  7. udata/core/avatars/api.py +43 -0
  8. udata/core/avatars/test_avatar_api.py +30 -0
  9. udata/core/dataservices/models.py +14 -2
  10. udata/core/dataset/tasks.py +36 -8
  11. udata/core/metrics/__init__.py +0 -6
  12. udata/core/site/models.py +2 -6
  13. udata/core/spatial/commands.py +2 -4
  14. udata/core/spatial/models.py +0 -10
  15. udata/core/spatial/tests/test_api.py +1 -36
  16. udata/core/user/models.py +10 -1
  17. udata/cors.py +2 -5
  18. udata/db/migrations.py +279 -0
  19. udata/frontend/__init__.py +3 -122
  20. udata/harvest/actions.py +3 -8
  21. udata/harvest/api.py +5 -14
  22. udata/harvest/backends/__init__.py +21 -9
  23. udata/harvest/backends/base.py +2 -2
  24. udata/harvest/backends/ckan/harvesters.py +2 -0
  25. udata/harvest/backends/dcat.py +3 -0
  26. udata/harvest/backends/maaf.py +1 -0
  27. udata/harvest/commands.py +6 -4
  28. udata/harvest/forms.py +9 -6
  29. udata/harvest/tasks.py +3 -5
  30. udata/harvest/tests/ckan/test_ckan_backend.py +2 -2
  31. udata/harvest/tests/ckan/test_ckan_backend_errors.py +1 -1
  32. udata/harvest/tests/ckan/test_ckan_backend_filters.py +1 -1
  33. udata/harvest/tests/ckan/test_dkan_backend.py +1 -1
  34. udata/harvest/tests/dcat/udata.xml +6 -6
  35. udata/harvest/tests/factories.py +1 -1
  36. udata/harvest/tests/test_actions.py +5 -3
  37. udata/harvest/tests/test_api.py +2 -1
  38. udata/harvest/tests/test_base_backend.py +2 -0
  39. udata/harvest/tests/test_dcat_backend.py +3 -3
  40. udata/i18n.py +14 -273
  41. udata/migrations/2025-11-13-delete-user-email-index.py +25 -0
  42. udata/models/__init__.py +0 -8
  43. udata/routing.py +0 -8
  44. udata/sentry.py +4 -10
  45. udata/settings.py +16 -17
  46. udata/tasks.py +3 -3
  47. udata/tests/__init__.py +1 -10
  48. udata/tests/api/test_dataservices_api.py +29 -1
  49. udata/tests/api/test_datasets_api.py +1 -2
  50. udata/tests/api/test_security_api.py +2 -1
  51. udata/tests/api/test_user_api.py +12 -0
  52. udata/tests/apiv2/test_topics.py +1 -1
  53. udata/tests/dataset/test_resource_preview.py +0 -1
  54. udata/tests/helpers.py +12 -0
  55. udata/tests/test_cors.py +1 -1
  56. udata/tests/test_mail.py +2 -2
  57. udata/tests/test_migrations.py +181 -481
  58. udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
  59. udata/translations/ar/LC_MESSAGES/udata.po +267 -279
  60. udata/translations/de/LC_MESSAGES/udata.mo +0 -0
  61. udata/translations/de/LC_MESSAGES/udata.po +269 -281
  62. udata/translations/es/LC_MESSAGES/udata.mo +0 -0
  63. udata/translations/es/LC_MESSAGES/udata.po +267 -279
  64. udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
  65. udata/translations/fr/LC_MESSAGES/udata.po +278 -290
  66. udata/translations/it/LC_MESSAGES/udata.mo +0 -0
  67. udata/translations/it/LC_MESSAGES/udata.po +269 -281
  68. udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
  69. udata/translations/pt/LC_MESSAGES/udata.po +269 -281
  70. udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
  71. udata/translations/sr/LC_MESSAGES/udata.po +270 -282
  72. udata/utils.py +5 -0
  73. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/METADATA +1 -3
  74. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/RECORD +78 -89
  75. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/entry_points.txt +3 -5
  76. udata/core/followers/views.py +0 -15
  77. udata/entrypoints.py +0 -94
  78. udata/features/identicon/__init__.py +0 -0
  79. udata/features/identicon/api.py +0 -13
  80. udata/features/identicon/backends.py +0 -131
  81. udata/features/identicon/tests/__init__.py +0 -0
  82. udata/features/identicon/tests/test_backends.py +0 -18
  83. udata/features/territories/__init__.py +0 -49
  84. udata/features/territories/api.py +0 -25
  85. udata/features/territories/models.py +0 -51
  86. udata/migrations/__init__.py +0 -367
  87. udata/tests/cli/test_db_cli.py +0 -68
  88. udata/tests/features/territories/__init__.py +0 -20
  89. udata/tests/features/territories/test_territories_api.py +0 -185
  90. udata/tests/frontend/test_hooks.py +0 -149
  91. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/WHEEL +0 -0
  92. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/licenses/LICENSE +0 -0
  93. {udata-13.0.1.dev10.dist-info → udata-14.0.0.dist-info}/top_level.txt +0 -0
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:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: udata
3
- Version: 13.0.1.dev10
3
+ Version: 14.0.0
4
4
  Summary: Open data portal
5
5
  Author-email: Opendata Team <opendatateam@data.gouv.fr>
6
6
  Maintainer-email: Opendata Team <opendatateam@data.gouv.fr>
@@ -47,7 +47,6 @@ Requires-Dist: flask-cdn==1.5.3
47
47
  Requires-Dist: flask-gravatar==0.5.0
48
48
  Requires-Dist: flask-login==0.6.3
49
49
  Requires-Dist: flask-mail==0.10.0
50
- Requires-Dist: flask-navigation-temp-python-311==0.2.1
51
50
  Requires-Dist: flask-principal==0.4.0
52
51
  Requires-Dist: flask-restx==1.3.0
53
52
  Requires-Dist: flask-security-too==5.1.2
@@ -66,7 +65,6 @@ Requires-Dist: kombu[redis]==5.5.0
66
65
  Requires-Dist: langdetect==1.0.9
67
66
  Requires-Dist: levenshtein==0.27.1
68
67
  Requires-Dist: lxml==5.3.1
69
- Requires-Dist: markupsafe==2.1.2
70
68
  Requires-Dist: mistune==3.1.3
71
69
  Requires-Dist: mongoengine==0.29.1
72
70
  Requires-Dist: netaddr==1.3.0
@@ -1,25 +1,24 @@
1
1
  udata/__init__.py,sha256=U0HEYqKCLOY43O1UCVeuAb3b3SSX1pPhsJGpHJmK67k,75
2
2
  udata/api_fields.py,sha256=6FxR3HX-kzkgM1U_d6GLSdvpzXBFWu4-hJEYAQYLP1o,36960
3
- udata/app.py,sha256=By-eZvSVSCNtWeKm_lA8TF81qaHdzScvggvbgHCDHYI,8992
4
- udata/cors.py,sha256=JttAogsNVSFWEV9-1L2kdbwwsNewn3KjgBErXReNwfc,3801
5
- udata/entrypoints.py,sha256=90n21thjq-r7EEyWf6IJZ6DS1q404OoP_VDkpRjZMvs,2611
3
+ udata/app.py,sha256=yKOkCA8Jpy_G7N_z8Mpmt7i2HzrOewzAbXzrCNy_CCs,8511
4
+ udata/cors.py,sha256=7An9bsiNZk0PbNqDy8--ZJ0vmq1ubrtcfGB3DWAHBlA,3681
6
5
  udata/errors.py,sha256=E8W7b4PH7c5B85g_nsUMt8fHqMVpDFOZFkO6wMPl6bA,117
7
6
  udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
8
- udata/i18n.py,sha256=bC9ajf66YgcYoJffvresLZLa32rb6NsY-JGMtFiVsG4,8163
7
+ udata/i18n.py,sha256=1VM99qUImopfPGoGB5uCJcuKWq-Kp01qupQ4foSRKGQ,2740
9
8
  udata/mail.py,sha256=7bd_an28BLn_vDc50XEGfOxv0uju4p29cWmPvfbdzWE,3259
10
9
  udata/rdf.py,sha256=re5EVyBwWlzqm46FqBXVpqSehQGZNZzgFZnMuNT6nwM,21745
11
- udata/routing.py,sha256=Hnc1ktmKVS-RUHNKw2zYTft2HJ903FhjtlcenQ9igwI,8044
12
- udata/sentry.py,sha256=ekcxqUSqxfM98TtvCsPaOoX5i2l6PEcYt7kb4l3od-Q,3223
13
- udata/settings.py,sha256=m9Ynbgk_U-MjWm7E1tFzfa7f9JrzJKSbOby7Gwn28Xg,21893
10
+ udata/routing.py,sha256=CZEbYcEFnyquk7grnhOUNPjRHRggAy6xHB218b9UF3s,7750
11
+ udata/sentry.py,sha256=j_6PSHV1id21KFX1XvpQR-Ur4d24310HgIq7MynEZ2Q,2887
12
+ udata/settings.py,sha256=sksRTtceyoGtpx9P7jI5xV3aGlqH3JGHbQ979nqPGAQ,22054
14
13
  udata/sitemap.py,sha256=oRRWoPI7ZsFFnUAOqGT1YuXFFKHBe8EcRnUCNHD7xjM,979
15
14
  udata/tags.py,sha256=8R2gJieQtHgj7ZWIckMCkQu39fqzEUehxlYRfSD6bYQ,631
16
- udata/tasks.py,sha256=Sv01dhvATtq_oHOBp3J1j1VT1HQe0Pab7zxwIeIdKoo,5122
15
+ udata/tasks.py,sha256=FKuwIwJoBiS0zgrBw2eFL0xnSoig-gfZeCkWqDCf38A,5154
17
16
  udata/tracking.py,sha256=WOcqA1RlHN8EPFuEc2kNau54mec4-pvi-wUFrMXevzg,345
18
17
  udata/uris.py,sha256=u05ltyLv4ZolaNMbq58kcLizMXWC10mRpJFYzChUHJU,4440
19
- udata/utils.py,sha256=hKQQl3pMo7u8_8QFwsjbaoIQfjXDZYG3HtriGGzqYTI,13719
18
+ udata/utils.py,sha256=S8ViJSbQgzT3RYbcCW5JTkTjkI1hhifLinPXVuASvl4,13820
20
19
  udata/worker.py,sha256=K-Wafye5-uXP4kQlffRKws2J9YbJ6m6n2QjcVsY8Nsg,118
21
20
  udata/wsgi.py,sha256=MY8en9K9eDluvJYUxTdzqSDoYaDgCVZ69ZcUvxAvgqA,77
22
- udata/api/__init__.py,sha256=EqVogvRRE5M6kQZdFccndVXmrJTZjDNM5oqxT-4JV24,11994
21
+ udata/api/__init__.py,sha256=-It_El58MIQkV06KbNfc2RGeoknkGCBL6zNBgd0FAmo,11732
23
22
  udata/api/commands.py,sha256=LJ4u-yhGij7QuH7OR92u3n7BEptqWMjDwMnG8pqdBxo,3523
24
23
  udata/api/errors.py,sha256=P_UigBf6HAL73LbXKULagmp5Cuw-H1Ms6LmXxOmFIeg,211
25
24
  udata/api/fields.py,sha256=w3qpMGntcOQa5bwFenZNJrnIoEZGZkEhRq0OwWFHsgc,3801
@@ -27,19 +26,19 @@ udata/api/oauth2.py,sha256=1cSdZjCYT6W0XNKkvKA7LN38WaanLRu2NPUCYZt-AEM,12583
27
26
  udata/api/parsers.py,sha256=iQEwgMwdVz_gXlVZYaRCGrUFWvcf7_8uCIxw7Iw-hpw,1405
28
27
  udata/api/signals.py,sha256=t8s7tF1KYeAygqbR4GdA76_UYvthAsyRbJaqsMmFsK4,162
29
28
  udata/auth/__init__.py,sha256=JSSMTpscp0neTvnjoxn2xUxiDvw9EXrA0Gwzs2H-DPw,2567
30
- udata/auth/forms.py,sha256=80PtpAu8JwHuZUps7n9ga04Bxy6sslbhPbRnwdhURGI,4166
29
+ udata/auth/forms.py,sha256=GZxTalle0h9TcoNK8f9hOCHixPBSXtGp-Gj0P7gZjks,4145
31
30
  udata/auth/helpers.py,sha256=7Yr5k7ImdgqxVap4Bjq_ylTXmzq4NR0KgEOOhqSbaf4,267
32
31
  udata/auth/mails.py,sha256=-HbXbxSeertEfcpEo3FBG2JwZw-De3-annl-DiuS9PY,5101
33
32
  udata/auth/password_validation.py,sha256=ODVdEsiXbtq_8ws4Yf3hs5Sq7jz-IDa1RxAm_WPIJnA,1806
34
33
  udata/auth/proconnect.py,sha256=hsvQ71Hqy42NvwgYtcMniRXWax3Q7LX1INcmaS7gaIQ,5073
35
34
  udata/auth/views.py,sha256=equjMWhf45Me5Bcwn_LCgl6YXlukhxH7Frh-1oj7dYY,7637
36
- udata/commands/__init__.py,sha256=y0ncKCjOTuxm9Tn8A0WMvub1Mai0wLQ15dq9y8GRV7c,7692
35
+ udata/commands/__init__.py,sha256=-jwfKRGqbJMG-NcVG6AMRhVx2yPnwhAt8dzHAeVvy0k,7231
37
36
  udata/commands/cache.py,sha256=bLdrf_fCWFYX9ULlL2ADsZRwijkI4pArsJxfx24OivM,341
38
- udata/commands/db.py,sha256=OyVBcuSIqYqNywlZAi19F2yRJCAIdFKKyQ9H9alqbfI,20426
37
+ udata/commands/db.py,sha256=8Fe4f4qZwdq2hYaOx8pwIROqJo2FK2t4LFa5OjaPCRY,19823
39
38
  udata/commands/dcat.py,sha256=f6jT2AGZem-w1CaRH_ahfWB9A4oCDvjG13tPmBpeCqw,3910
40
39
  udata/commands/fixtures.py,sha256=Mo_Q0tARawiUK3ZidWlJLrO8uvqnSYcg_OeWMzCwkvk,11376
41
40
  udata/commands/images.py,sha256=0rVojLik5DYgJ6W4uNEfMP2g2QUU2V761tj3z6lo8no,2050
42
- udata/commands/info.py,sha256=A5WMo3_N_rlt3cySVJrZqKWrbIowX97ZLKMIFQE5178,1545
41
+ udata/commands/info.py,sha256=U8s5CnSG9NTA0UeeVJrBuWdfYEh3AwHSyx4NZjs1zas,832
43
42
  udata/commands/init.py,sha256=8CpH8MklzPkpxczs43lFM5ZNrHCJRbUtzHapgYNHs7M,1520
44
43
  udata/commands/purge.py,sha256=49_NQ-Qih2RTbXPY3ajYl00ZpFrLlu6vD-EBxRfspCs,1218
45
44
  udata/commands/serve.py,sha256=dl1ktePSKPPGr-byGDoYQtPScgHibYH8YdV8MHnxVIM,2498
@@ -61,6 +60,8 @@ udata/core/activity/api.py,sha256=dwdEkJxxwbQ2PsCSnv6fEE8Ps1FiJ4fEHpTog_gk4Rs,42
61
60
  udata/core/activity/models.py,sha256=Fq0w988HjfCg9ii0jPV1NM2rGIumgDKACCSfbo2cC14,4924
62
61
  udata/core/activity/signals.py,sha256=Io2A43as3yR-DZ5R3wzM_bTpn528pxWsZDUFZ9xtj2Y,191
63
62
  udata/core/activity/tasks.py,sha256=F3PY12dnpT5Z8VuYfuOyDP6VPKPJmq1Sm4lSiPfmUCA,1498
63
+ udata/core/avatars/api.py,sha256=VTdqaraVBx-pPrzQ66TTQJe7eV11iKLMIhyW-yv3AvA,1524
64
+ udata/core/avatars/test_avatar_api.py,sha256=qtoFvyKO8Go5ImzGkDdXtfMO9vC6hyhGVioEhoFkF9U,997
64
65
  udata/core/badges/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
66
  udata/core/badges/api.py,sha256=PkOx-bA9dFXIQZhUYg8r5OLBo1aNJiUJbKVCPOS7wm0,762
66
67
  udata/core/badges/commands.py,sha256=J6dKsoZmCbWM3HHOktPt-AHoMj-AhNPL0jxiV4yVlgw,1143
@@ -88,7 +89,7 @@ udata/core/dataservices/apiv2.py,sha256=-XfIjxx7LuzICtKvh1W8EbR8zWyrw13_nCKYiRgi
88
89
  udata/core/dataservices/constants.py,sha256=PlfoLJv1rqRSUHbCe80vGkfTl9B0hUYgCxrop_e5JUY,45
89
90
  udata/core/dataservices/csv.py,sha256=HWI2JrN_Vuw0te9FHlJ6eyqcRcKHOKXuzg45D4Ti6F0,1106
90
91
  udata/core/dataservices/factories.py,sha256=pKVoArNSCIbvGA-cWUc7vr8TmjYsUvOXzzcuUB5JyF4,964
91
- udata/core/dataservices/models.py,sha256=iezs33cB11zWaz8my6WXl-cGHaQEM0sJUpuSmiCPG-Y,11867
92
+ udata/core/dataservices/models.py,sha256=PPs5uvj5trf1dGYlP4n5FMsFbvm-JggI6VydeR3tZLM,12296
92
93
  udata/core/dataservices/permissions.py,sha256=98zM_R4v2ZtRubflB7ajaVQz-DVc-pZBMgtKUYy34oI,169
93
94
  udata/core/dataservices/rdf.py,sha256=7OZfWxfivrCTdaPd3Jw32V5ywYoOWwZ-8qMsBZcPTRw,8081
94
95
  udata/core/dataservices/search.py,sha256=9Ylg-veM6x1sv-xAugx-lHIHJSqiGAN60Ww8ZYikjzY,4708
@@ -114,7 +115,7 @@ udata/core/dataset/rdf.py,sha256=w3pY9kz2a8CqWJ-9cq1QTF5EFGFw1pZVv825V3zy8pQ,330
114
115
  udata/core/dataset/recommendations.py,sha256=DlGSLU8D0nW6Ds1rjBav1WxC-0VW5yOCjkO5w-ltFcI,7171
115
116
  udata/core/dataset/search.py,sha256=UEYMPwj4kDkGlGaUmsYECh1c3_BjCt1RDcMLDGrV_dA,6019
116
117
  udata/core/dataset/signals.py,sha256=WN4sV-lJlNsRkhcnhoy0SYJvCoYmK_5QFYZd1u-h4gs,161
117
- udata/core/dataset/tasks.py,sha256=iz23VUyXpt9I04IrObgZdaZrl-pMdZmgfxCvMMFbZko,9639
118
+ udata/core/dataset/tasks.py,sha256=5QLL7iFDwaj1jcYfQvHDi9PUJri-TU9-WKS5yvXOHik,10924
118
119
  udata/core/dataset/transport.py,sha256=ihCXirY1dZjOfXKbf9HRCJTfIOc75rM1McwbeGjsW6A,1296
119
120
  udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
121
  udata/core/discussions/actions.py,sha256=kjdBLDIeu0yWTSxQGgOpN1WoxUqbMygn4SiBk_S9T5I,1051
@@ -135,14 +136,13 @@ udata/core/followers/api.py,sha256=oCkEl_NUuizkssowlUyzCNK5IUq8GjNLVz1HN4HVqlg,2
135
136
  udata/core/followers/metrics.py,sha256=nKgoiM2Gu-XHrgEf9duW1My66zFSKbmw25BGqo5wWtY,190
136
137
  udata/core/followers/models.py,sha256=PvExrmKbdr0oFjoMYfg1ZUuFlPYGCKKwrE0_ouPaILs,1122
137
138
  udata/core/followers/signals.py,sha256=q0su1eArVO1pnCoNFDieG-kW3iL-hLuXTmnU1-NXNF0,528
138
- udata/core/followers/views.py,sha256=Znc8aGpP7y0_bmgbIJeVCTxQyDfeKZ1hSIWHi8gbwdw,406
139
139
  udata/core/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  udata/core/jobs/actions.py,sha256=AJORWf17ZS9vNc9A0OHETFg_Tc07J2iL9nhA02F1Mjs,804
141
141
  udata/core/jobs/api.py,sha256=Cml8mTEXFPw9SBd-1sYBH50YrVv4nvxo7R1o5VpPXE0,5959
142
142
  udata/core/jobs/commands.py,sha256=85P5hDPdKMJzV_xbobNT8nqEW71HchPjTUJ-1u5wddE,4402
143
143
  udata/core/jobs/forms.py,sha256=B-B6jXHZsYV-PWAkD8DLoOlh6trv4l1hGZ4HOPm-PD4,1495
144
144
  udata/core/jobs/models.py,sha256=xK8T3FCmhtERNbZmh1Tq_ZTO6vojM172tTc0oplNoQ0,1358
145
- udata/core/metrics/__init__.py,sha256=eCmFPBR01Np6iEoz5n8dkfkCPGeCpPGTBT0kJ0SfpTw,444
145
+ udata/core/metrics/__init__.py,sha256=lNvQZS4j-PTfN7kYOwaIW3qgxH2eSMdFc2zSYVqxHP0,329
146
146
  udata/core/metrics/commands.py,sha256=JmEBsjmvQl0W32g4m_n7OdtB3zcAvcMCvlzJa0DzZJ4,6191
147
147
  udata/core/metrics/helpers.py,sha256=DRefxJfpePuDcWmV7b-gaNE6tjEcttQaWmKpYNBSECM,4370
148
148
  udata/core/metrics/models.py,sha256=Sv2Qhmqdug_atfDc_pyOJCb-8ACpvU-_0FFVPVOFDGk,353
@@ -204,7 +204,7 @@ udata/core/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
204
  udata/core/site/api.py,sha256=GhSZfdv0rQgtmqG3h0uGcXrzbX9Zx3GuypgaxcAClsg,8139
205
205
  udata/core/site/factories.py,sha256=O0nLFmjrFyemzcs-YwNukq5nqd383KBGrgL5bOQsGbA,378
206
206
  udata/core/site/forms.py,sha256=avEZ4rJhibF7sKexqMlKt1qMFiUHNrmJGKjZqcAyjrc,459
207
- udata/core/site/models.py,sha256=mlSsnXUoMmIZ26-mvotWpICaoL1ScbYMsc85Dt-28cI,8322
207
+ udata/core/site/models.py,sha256=3RUZJfEo7X-5jLcfAmGQ53wjFqXzxG68n0aTNivrFNM,8248
208
208
  udata/core/site/rdf.py,sha256=CT4TIu9DMiYHaNugW873UAJsQLBtzqQIr_a24CMyEJ8,2037
209
209
  udata/core/spam/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  udata/core/spam/api.py,sha256=eqmDB4_VF5EM92675FqFmk4Be5TAnu87dmSVtgXKF4A,1740
@@ -217,16 +217,16 @@ udata/core/spam/tests/test_spam.py,sha256=Yu06Z3hU-XPX51mvdgH_nHQFeug_PXWy6P7QxN
217
217
  udata/core/spatial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
218
  udata/core/spatial/api.py,sha256=xuff3vcZjKm6z6FyFLFsuuVUDlCC8o0-JhUXkc-4pmc,5658
219
219
  udata/core/spatial/api_fields.py,sha256=6YVv7w6UyX_m7uGKNtexw8EOQk_I39GWlwCb3Qj_IiQ,3513
220
- udata/core/spatial/commands.py,sha256=BMYAZqueaU6QlfN4ny4fsMF9l7rcjPp73mj8CIilyZ0,6931
220
+ udata/core/spatial/commands.py,sha256=jvYwUnDwIN9NLJ4Xau3TIh4n4Lbs5vcONydZPGhyBQs,6917
221
221
  udata/core/spatial/constants.py,sha256=T024yKsXuBkaZ1MAFZPfLh2X_EFFVQ7Sfg4VHCmZQM4,147
222
222
  udata/core/spatial/factories.py,sha256=-eQupRrIOQLouw9Bvv4UBqizFKQ4l4CHZBht2cv7irE,3096
223
223
  udata/core/spatial/forms.py,sha256=a6bYpRpuPZ9pZvZiLBZrhYQwwL4c7g686-Mknk9R0ek,3041
224
224
  udata/core/spatial/geoids.py,sha256=-7MGX9Swe1Hfdla6QPL35xwm1dE3WVNmJaN3HPZQ99k,1159
225
- udata/core/spatial/models.py,sha256=QENGI1z8ovQaqI9zNx5WCKcfXOdVmpVw8bRebgEfM8M,5229
225
+ udata/core/spatial/models.py,sha256=RKZtBDPiCzc0NiYY631fES16I5O0Fx9dmF7KFSChIV0,4919
226
226
  udata/core/spatial/tasks.py,sha256=1WVZkmgTbgrJ2-IF479hBzeO_5xtqflTNxHh7nzwnIw,229
227
227
  udata/core/spatial/translations.py,sha256=eOK0RsaUR2Z77li6Co2E4_XYjG_Mmy8xHgBFoD-3U-E,527
228
228
  udata/core/spatial/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
- udata/core/spatial/tests/test_api.py,sha256=e814Xmwe8tJgmVcPwiCLGDs3FAQdMaHn0f8vg6PrPLY,13289
229
+ udata/core/spatial/tests/test_api.py,sha256=b8of6S_eZ5J8Q-H2YR65sW5xsc8SdlB7dbBPeAChhxs,11929
230
230
  udata/core/spatial/tests/test_fields.py,sha256=UOUE9NdQeoXaR_pWvoNQnZY2XYJBAFmU9AIFJ99Tf-g,9782
231
231
  udata/core/spatial/tests/test_geoid.py,sha256=5-NhtvrOs-eoN5f18G6uyI23OB2nc8wQz9xQl3pieXY,1533
232
232
  udata/core/spatial/tests/test_models.py,sha256=ckFBRrVl6zCKk86wuUKAZlkYsaaqGoBqFP1u3PiQkWs,903
@@ -261,27 +261,20 @@ udata/core/user/factories.py,sha256=kkwaojciLzfuAOeRnL1E7XCcGPo8waAal_G2eeuVc0k,
261
261
  udata/core/user/forms.py,sha256=yotqZozH9ViKuNI8SwdKocDEi7NXVs_XUMpdr_bIe5s,966
262
262
  udata/core/user/mails.py,sha256=JPoPdjt38T3QECR7g7dqc5MbWxm1wwCNUYIO1I4VSaI,1945
263
263
  udata/core/user/metrics.py,sha256=J4zgjcAudQAi6NUIb47o2Pfe0xZ_Eu17ta9HjhE-HvE,1274
264
- udata/core/user/models.py,sha256=ABBmG13JAyOq5maIqPXAeZMaf8j-WQLgQI_G4Eh6W94,11246
264
+ udata/core/user/models.py,sha256=1pzgJXVtjau73iw32FMj7JFxDIRgIaSFT-nFhWFnUuQ,11502
265
265
  udata/core/user/permissions.py,sha256=Wbd8bLqSjqp9RHJ6ffLBj74L-LECcAhWazuw4Hq-2Gk,435
266
266
  udata/core/user/rdf.py,sha256=_tN8KlJHt8mYwJhLKoULhmZ3sapUGmX1Sl5W8uawxeU,718
267
267
  udata/core/user/tasks.py,sha256=iaL997_aYTvHSXekHWWHuYb6a1WNQkc48dtfOdE_4SI,2924
268
268
  udata/core/user/tests/test_user_model.py,sha256=UuCAePsd5F5fsD-TqE0b9uwpY9hG7q8C7Iv0d9ZzMtI,2835
269
269
  udata/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
+ udata/db/migrations.py,sha256=myolZDGfxzw7QIXv3VfCsgFO05t-Wunkjq2B6gzrEzI,7978
270
271
  udata/db/tasks.py,sha256=6PDnvvrE0lmQ3ss7sDLu8MUYHxUWW17NGgHCq9UnraY,151
271
272
  udata/event/__init__.py,sha256=2G9g1C_dp3yap4ehJE950Bnl1uQtD00TsvTFZhvhRS8,41
272
273
  udata/event/values.py,sha256=l68Qvb5jCMRZooHcgSGJLpCQSm4ouEO52-KNtxT4wdo,196
273
274
  udata/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
- udata/features/identicon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
- udata/features/identicon/api.py,sha256=R2ffdhP2QH3XIGhZMFQZpmhl83NOO66InZ3wbvk3xzs,376
276
- udata/features/identicon/backends.py,sha256=tYQq7Ara6-GxJShi2Ynlra9hYLj4J62rlC7McRHVol4,3691
277
- udata/features/identicon/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
- udata/features/identicon/tests/test_backends.py,sha256=009gkQJgxD-UvZGnVKrcXPW6KMq0TnR4raAFasqPRLY,655
279
275
  udata/features/notifications/__init__.py,sha256=R4-dHlQxCsLNWXhV05UnPiVuIpKEpV9KBboWnrdNSOo,352
280
276
  udata/features/notifications/actions.py,sha256=i8KvFbsC_JJnPOXSitfdNIdK6ABy8G88E5iwLiGYOyw,759
281
277
  udata/features/notifications/api.py,sha256=FEiFg-8L_ZxwUD5TvA5xPIUPV4PQFSd0XKyUuhsuGlc,932
282
- udata/features/territories/__init__.py,sha256=LHYFAv5obeX9S2rb9QCJu8giGyskJoBKEsQBnjwG_J4,1638
283
- udata/features/territories/api.py,sha256=I2FsKe5sOWn860f52wHiocdLr9tB0w8ttk9QNReJzZQ,884
284
- udata/features/territories/models.py,sha256=pLMa1_n0Msgw9pwO0qbxnIF_mkhlVCCZ1YO_XSuIONw,1205
285
278
  udata/features/transfer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
279
  udata/features/transfer/actions.py,sha256=u27rJU3E3ZCPYlIMzVesrR1jvIbJIqaJ7EuasXiG8lg,1811
287
280
  udata/features/transfer/api.py,sha256=64lJWb7hFusaGF3bCtJ17-VxhBymzyb7x886vkNProY,6715
@@ -302,46 +295,46 @@ udata/forms/__init__.py,sha256=WdBOu40HijJi0A6kjUkuT-WEP2YNW3k_ftSzQS_Zl9Y,789
302
295
  udata/forms/fields.py,sha256=7zPxvgvUG4X3Yt1nm1NvksY9RcgUtNsgPTHiZ8J_rVY,30042
303
296
  udata/forms/validators.py,sha256=CRgmB6oow5O8LDR45LajlJJ9HX3RBCI08fapoWMH1vo,2727
304
297
  udata/forms/widgets.py,sha256=7qymIpynrQmNlA8hrkcF0RB8eLwOJFkjca_KOZ0zqtE,1332
305
- udata/frontend/__init__.py,sha256=DkqncR72V9TRlA3QEcpVtCIkUMUlnTytBlJFQ4HfEiA,6454
298
+ udata/frontend/__init__.py,sha256=EzIwb8cQ1z4ItMAQO9EM9NOeKpOt7aXEHbbBCLnQQ2M,264
306
299
  udata/frontend/markdown.py,sha256=5kNMVOMLlGvJfpIVONaQv4JT1pi6qWNcnb_BVV_VNJQ,4324
307
300
  udata/harvest/__init__.py,sha256=C4y5w4vGb_F9Opy62lzV3eHo4DkNyRgPCq-wsarPXiQ,28
308
- udata/harvest/actions.py,sha256=COcr00jKUGyP85GSXK72o1nUrW7mRcOcxb204WzC9ug,9724
309
- udata/harvest/api.py,sha256=GuTcGyMxuuf5cHA4N4onJaM7p7EeDlZbaDehAJRx1mM,16695
310
- udata/harvest/commands.py,sha256=xzqSq2NeR6RoB3iZJUd8MFbpGIlkpNGZ1FxCZ6QNNg4,4906
301
+ udata/harvest/actions.py,sha256=ikTllRpJIgu-BFQd35PAfHtYfCI0nYHeLdp7-UcgHgQ,9598
302
+ udata/harvest/api.py,sha256=807CONm74QHECHcywNxsp_dFh8jOkJU9p9cTtdgJGuE,16525
303
+ udata/harvest/commands.py,sha256=tGbGTygiEQ9UFQo3zfnNf7rtPaOZLrIYpmXkSQUAmAQ,5077
311
304
  udata/harvest/csv.py,sha256=TcHWJLiEbK8ouwGGYZy9US4nMxfWk1Ydw8sMlPit1tk,392
312
305
  udata/harvest/exceptions.py,sha256=-sTbXece_YQstXlnpSZX5EJGTONYZ4J2RgByG0WlqAI,302
313
306
  udata/harvest/filters.py,sha256=7wEZ_JOFzYe9-3QmMuHo8jtFsOAnped1se0JrAloySU,2616
314
- udata/harvest/forms.py,sha256=eDDyrK0VuYgCsYo0HY0P6--RDVpWBCuTwktjFiwPQhw,4252
307
+ udata/harvest/forms.py,sha256=vLyIzsl4nXvPpeJrtnOoRyuvZW8-Hu5O6NISYpg2jrI,4327
315
308
  udata/harvest/models.py,sha256=Z-94kUMbT5rDcL5MEV2njw5bssFPKxiW2o9C3xoVnoE,7016
316
309
  udata/harvest/notifications.py,sha256=8WkHtD68v6rfZC6jCmAuuuRp4NN6q71ZkksZU5m9oJc,867
317
310
  udata/harvest/signals.py,sha256=3AhFHMPIFH5vz01NX5ycR_RWH14MXFWnCT6__LSa-QI,1338
318
- udata/harvest/tasks.py,sha256=id5YmHIhnkgez0LVC1fNg_6Yz1Sp0jrvQ1caslVOWdY,1722
319
- udata/harvest/backends/__init__.py,sha256=QjoFfBJfpw_xgk5YYWI1SgKJOMEmTMlxSfW79GNkSTI,459
320
- udata/harvest/backends/base.py,sha256=nFr8Bep5hqC4LR4sYg3CSMgn-RGkpiCeUJ7arFbl_mQ,18190
321
- udata/harvest/backends/dcat.py,sha256=Qa4lRoLaTMRS9OFlCyKfQXGQ2rEQf0VomqzsL14L03g,19432
322
- udata/harvest/backends/maaf.py,sha256=zplwjs9_Vafut6jXH-WPJNCJY0VjzDDc1ouQ0_zG3sI,8355
311
+ udata/harvest/tasks.py,sha256=OMc4Jw_M_UgOokxj9IfRKqEqjwi9t9Eih79X_uzr5FA,1676
312
+ udata/harvest/backends/__init__.py,sha256=HIr7kSdmMUMnfCYnkJ4MydC_GcqbYoBozSbee7l6Qs8,1031
313
+ udata/harvest/backends/base.py,sha256=CghIvDkmNz8n5m8WoVQeaWGjdbhtFdNOhsn3-QZErFA,18200
314
+ udata/harvest/backends/dcat.py,sha256=owVrY-WXBHWlZRNT_iY56y4tO-9ezFqwzsKP9FbahAs,19499
315
+ udata/harvest/backends/maaf.py,sha256=SN_831VeWphR63EC9v0n94bRH-9B5htTE70HSsVfzyc,8373
323
316
  udata/harvest/backends/maaf.xsd,sha256=vEyG8Vqw7Yn_acjRdXjqUJgxOj4pv8bibep-FX-f3BQ,18322
324
317
  udata/harvest/backends/ckan/__init__.py,sha256=JE7Qa7kX7Yd8OvmJnAO_NupZe0tqYyhhkgJ-iGNxX64,35
325
- udata/harvest/backends/ckan/harvesters.py,sha256=tSy9yIhKjCjPhks17tM10_s9-ntueco9HUwpxWQKMzQ,10596
318
+ udata/harvest/backends/ckan/harvesters.py,sha256=gXiQJuj5QpOvY7ddmpEwuW7kPaAZMM_DQ9OHfOo2bRA,10632
326
319
  udata/harvest/backends/ckan/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
320
  udata/harvest/backends/ckan/schemas/ckan.py,sha256=59VQoIxPBb5vOHFzzMtdnPcxHL4qNOTkPYa4cqn-7xQ,2353
328
321
  udata/harvest/backends/ckan/schemas/dkan.py,sha256=RyQGPEaKqnunIrr9yApcz7WEfgye0IT1bV85wa2E8Lc,2774
329
322
  udata/harvest/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
- udata/harvest/tests/factories.py,sha256=euEaDDXJzbctMOzgdiio7oq9AVVSLcvORNTi_fwQBpE,2283
323
+ udata/harvest/tests/factories.py,sha256=_V_RICVo33rhnZd5Kk7eZrxuIYHSBi8iWWGHFMLUdhU,2292
331
324
  udata/harvest/tests/person.jsonld,sha256=I7Ynh-PQlNeD51I1LrCgYOEjhL-WBeb65xzIE_sHuAA,3230
332
- udata/harvest/tests/test_actions.py,sha256=qaz30C2lp3h-GjLTjfHdVK49v_ZN6QEZxZkwMZVJndg,26011
333
- udata/harvest/tests/test_api.py,sha256=7QwuK_5A6O9oEKqCKDxs6Xmgh-YYGU5AtXN5lrgQNFo,21629
334
- udata/harvest/tests/test_base_backend.py,sha256=ejDRxDWqis1Bk3ajCwCrayTW56S-GHPB6staDbKIVB8,19252
335
- udata/harvest/tests/test_dcat_backend.py,sha256=auMhKmVKfD1E2gbrz5w_wGN8om9zYoIHkRd0uDRN9OY,53414
325
+ udata/harvest/tests/test_actions.py,sha256=26_cH1B_J2DIVrBaHPhKIz0DLB1znMQztk3Dq5tRWVU,26158
326
+ udata/harvest/tests/test_api.py,sha256=Wtj0jO3jOPZxliAk1V87xUsZUxz8239HJ9N6yb6shFQ,21684
327
+ udata/harvest/tests/test_base_backend.py,sha256=yvAxO5XFnEpibVi9gUYbqhwdMupJbuwjfajwGqC19OA,19312
328
+ udata/harvest/tests/test_dcat_backend.py,sha256=0yoIw-I1nFJr36FEtintYMWBJOJYYeGTzXEStdgZKb0,53449
336
329
  udata/harvest/tests/test_filters.py,sha256=PT2qopEIoXsqi8MsNDRuhNH7jGXiQo8r0uJrCOUd4aM,2465
337
330
  udata/harvest/tests/test_models.py,sha256=TIpNRx3gjwI5wznr_y2Ad5fdESfhqhPoOOOSBfvyfQI,850
338
331
  udata/harvest/tests/test_notifications.py,sha256=i4TZo-hFN6aIi1c9MouqS-ElihccBnqKb_Ed0QQWgyo,835
339
332
  udata/harvest/tests/test_tasks.py,sha256=rPyrqfQllcMZYeRmBg-a1zsY7ofWQvJmqyQ_MI2oPVo,701
340
333
  udata/harvest/tests/ckan/conftest.py,sha256=SNIRJ7uh6ssIB56mwIdDgteHKUY040yX4gzaGMREjJw,1893
341
- udata/harvest/tests/ckan/test_ckan_backend.py,sha256=R13q0lETLcNwBZt30TvFNaKJ1n2xjuUh5oJSpthV830,22216
342
- udata/harvest/tests/ckan/test_ckan_backend_errors.py,sha256=1MBNxAno5cf9azYCrdXEdYeoVgGbxyHoLWuoooVumbU,4285
343
- udata/harvest/tests/ckan/test_ckan_backend_filters.py,sha256=eohf2dnBl9WIqfSuQn0sT9jrMnjuoSbAMskdvn5w8G0,4287
344
- udata/harvest/tests/ckan/test_dkan_backend.py,sha256=D-ww2Cv_vpANy8gG6m_k-E4ZhEJSMQtedqBAMHgaizI,2002
334
+ udata/harvest/tests/ckan/test_ckan_backend.py,sha256=TQ7GYXxjcBWaVHzADmVkdjM03PeIs44B3NUEHM0M5dY,22238
335
+ udata/harvest/tests/ckan/test_ckan_backend_errors.py,sha256=f1bMtFmHDTD1tX52I7TzadVWV_ttL6sIjtxqLsefgT4,4296
336
+ udata/harvest/tests/ckan/test_ckan_backend_filters.py,sha256=Ck-A-oLePMkC3yuRosCl1YoijOtc4yNurep9HcEOG5w,4298
337
+ udata/harvest/tests/ckan/test_dkan_backend.py,sha256=WDUNcbhvfNXeSquALQmcv33tRo1OLMRWygmaL5gJQPs,2013
345
338
  udata/harvest/tests/ckan/data/dkan-french-w-license.json,sha256=ud6wxyV3uvPSouY0-QB0qf88djamFW_WR6CbZzDCacs,7905
346
339
  udata/harvest/tests/csw_dcat/XSLT.xml,sha256=vnJF2rom7oPVpzI9jwzwG6ek1TDXTY8GfbuQq_3vFxs,180475
347
340
  udata/harvest/tests/csw_dcat/geo-ide_single-dataset.xml,sha256=WLaL46XspKW0ams4SJ4MiHLbDTNgPfTeolMYQrybbTg,42837
@@ -365,7 +358,7 @@ udata/harvest/tests/dcat/paged-collection-2.jsonld,sha256=YDn6-BVGuofbhJArGriUpL
365
358
  udata/harvest/tests/dcat/partial-collection-1.jsonld,sha256=emPZGvpdaqgIVTgtmlWNm-zusKjADNe_NhNidCnT-7Y,7056
366
359
  udata/harvest/tests/dcat/partial-collection-2.jsonld,sha256=zJ1ggcs2b4IJBDJ6zKJn8w5arjJBU_EHr6qFd8tu0I8,3691
367
360
  udata/harvest/tests/dcat/sig.oreme.rdf,sha256=6F1P-hPyE8bZC-5uQTskTawRd19U0opIy9LCDwp0sd4,6315
368
- udata/harvest/tests/dcat/udata.xml,sha256=co7tLKinEdPOwEScHUXSqSAKAFSgLElYOCI3uu50Sgo,14532
361
+ udata/harvest/tests/dcat/udata.xml,sha256=gj1jzEAEOc1PF4xyA8QZtbe1MyryZGSApeJq53Jn3_Q,14514
369
362
  udata/migrations/2020-07-24-remove-s-from-scope-oauth.py,sha256=bCfBRcd4azHSV-fpZQaiHkWu7likHoWNpq9PeJvi5S0,665
370
363
  udata/migrations/2020-08-24-add-fs-filename.py,sha256=7mz5ufFvY67NDKEmQn0HS3u1SdR9uH077ngJfd2uot4,1819
371
364
  udata/migrations/2020-09-28-update-reuses-datasets-metrics.py,sha256=d7zizz1fwy-jCOJWmfveBpBZJSHJu46HSIBf3Xnd0eI,407
@@ -409,8 +402,8 @@ udata/migrations/2025-09-04-update-legacy-frequencies.py,sha256=8YAROAHhytf6Kses
409
402
  udata/migrations/2025-10-01-delete-orphaned-topic-elements.py,sha256=Mhx5ANOihZL4botxtjvfsll-xKBtkVQBkPcSq0BJ-Ec,788
410
403
  udata/migrations/2025-10-21-remove-ckan-harvest-modified-at.py,sha256=85oGDAOLB7K9KzPRHHokc36EeMKLdWaOb3IkpwYkL3E,837
411
404
  udata/migrations/2025-10-29-harvesters-sources-integrity.py,sha256=tt8ThVhtgiBSvRxZEO4LQiDPW4RKZDsOkPepTntOVew,571
412
- udata/migrations/__init__.py,sha256=RBCBDaTlLjuMs_Qzwji6Z6T4r7FCGXhESKoxQbT5qAA,11221
413
- udata/models/__init__.py,sha256=RT0WaPKm2linlYnTmD0xck7M2XuIoIJ94E0ErzNGzaw,1418
405
+ udata/migrations/2025-11-13-delete-user-email-index.py,sha256=3fSkKzDxaA-DDHRUAMg-IVFNsQrEHw8cFsDsZPX6dqE,569
406
+ udata/models/__init__.py,sha256=Z3RLj1KIFNc4RZCqHNtIrMm7RZ_5_60HLL9H5nS4lUk,1198
414
407
  udata/mongo/__init__.py,sha256=y4Rv-kq3o_kcEulcNpePLzocXPBNpx3Jd82G-VZPaMc,1421
415
408
  udata/mongo/datetime_fields.py,sha256=xACagQZu1OKPvpcznI-bMC1tJfAvo-VBUe7OOadnBdg,2089
416
409
  udata/mongo/document.py,sha256=yJl4rzE0L69SvNbtmnmyCALTGhXwBPrj7nvM-J6sDpE,1792
@@ -451,19 +444,19 @@ udata/templates/security/login_user.html,sha256=5RwWWRYi_IhZWPkihfpXXYXPli52_Bdo
451
444
  udata/templates/security/register_user.html,sha256=U-d9C2muW3FK5zKMLR-6LBLg1dnK0Gf6qeuLpfyoI6g,688
452
445
  udata/templates/security/reset_password.html,sha256=R0AMqkmPulFZpCoqP6NzP-dSTcdxwvcCOLOj465pV7k,868
453
446
  udata/templates/security/send_confirmation.html,sha256=llnEawIMXWP8Wu9EUL2czY38Z7URk-hRCEK9A4cxVJQ,784
454
- udata/tests/__init__.py,sha256=Fl7DPbfsP8vVyC6Nj_OlQIk2A5jfyn_WOxIRreVS_GU,2493
447
+ udata/tests/__init__.py,sha256=HwgRQmzyEvYds1tQghCl2EqXlUY8q0aDxFrK4CrQa9Q,1887
455
448
  udata/tests/es-fake-result.json,sha256=z0CX9Gs-NRj49dmtdFvw8ZKsAbMhDt97Na6JX3ucX34,3155
456
- udata/tests/helpers.py,sha256=nG-AcwIP9qRd_8N9A3mE7dJn-3lX-tnlmKuwnrmKEvc,5825
449
+ udata/tests/helpers.py,sha256=VHcHWVUbO4sW4x240911D5ff70uUyHfc57SjservlGs,6290
457
450
  udata/tests/models.py,sha256=5oTC-cgKSL0sUdlqjUiJ6U8-YZBQanObb-MhZhQIV3M,238
458
451
  udata/tests/plugin.py,sha256=tq-Tlfx0SVgFkfg-SteEdA5Zpl2_mhkOkbBvc943JN0,8775
459
452
  udata/tests/schemas.json,sha256=szM1jDpkogfOG4xWbjIGjLgG8l9-ZyE3JKQtecJyD1E,4990
460
453
  udata/tests/test_activity.py,sha256=k6TqUl0PAO39CwTkxptgz40juwySTPadU6rkoLTTjMM,9803
461
454
  udata/tests/test_api_fields.py,sha256=BAgxSQjgMQ6B3ZUamhdg5GDXfP5ZpFUfRUPJLfooIzw,12886
462
- udata/tests/test_cors.py,sha256=2VwwDMRv4DVGCPRuH8ALvbtCo5-OOIxTTcHceFjyUUU,2914
455
+ udata/tests/test_cors.py,sha256=6_YNrn_zwve2eiRjBskBu7fO3NTpxewFlAhl06po5mg,2911
463
456
  udata/tests/test_dcat_commands.py,sha256=9TgG5grwNLeG5d12KKIL15WLSNA_Cw_m98yLxu2tlc8,939
464
457
  udata/tests/test_discussions.py,sha256=u7TN4tHaWllF1JusZ18p2WI9JTgTNHb7QMmCGNjCvww,47614
465
- udata/tests/test_mail.py,sha256=DS0lmac-O6chrmvI6IAfEIy8YQjN_NV066tIthTj90U,5904
466
- udata/tests/test_migrations.py,sha256=ITab59WgR-yuvqYBpyVeWb6-IIKLEU8SN9UjF8Fsq0M,17395
458
+ udata/tests/test_mail.py,sha256=IvWCtRJ1qikJp4rSu-q8bqYbQTSkW8GOawuwsgSR7io,5906
459
+ udata/tests/test_migrations.py,sha256=9SxwUQILJa3BJJi1IeVPjyxrKtGY7u-lntjZaIPTSgU,7708
467
460
  udata/tests/test_model.py,sha256=j9_9xiLLPAFibL5Rz6uMD7Npjz0bS1Nu88A3fQF_3UI,22194
468
461
  udata/tests/test_notifications.py,sha256=sc_tlkTqIYx3mYK3X3n10PUEo-ctExLXsBSWJ8vutW4,2298
469
462
  udata/tests/test_owned.py,sha256=K0bsPi-A6MGsGNS_IDpZgGYiIx5KuHQGsGYdYDCV3ks,9669
@@ -480,27 +473,26 @@ udata/tests/api/test_activities_api.py,sha256=uUsNW2udb6zU-i21MV9qKjws2-xbubcWHl
480
473
  udata/tests/api/test_auth_api.py,sha256=oUfzFRGCidDbnj6B4W81FB5w9eLKu2G3DmGzPhbt3lY,25587
481
474
  udata/tests/api/test_base_api.py,sha256=2w_vz0eEuq3P3aN-ByvxGc3VZAo7XtgatFfcrzf2uEU,2244
482
475
  udata/tests/api/test_contact_points.py,sha256=QmnTmJZ5oIohsUH_E_wfFalRx-Fx91jO7gs7PErpLqQ,8690
483
- udata/tests/api/test_dataservices_api.py,sha256=MzoJ0AlSbGl5NgrlolhFO6LY8SDIWBFVBaVo2JR0iEs,28744
484
- udata/tests/api/test_datasets_api.py,sha256=MU9zqiEEVDbRsJr3cYemTzLyW6Osn_EP4SUpDw-65YE,110516
476
+ udata/tests/api/test_dataservices_api.py,sha256=UPMH6OEEczYvebyV7thf7LjrEYFctgIm1TuJV1VC-OI,29914
477
+ udata/tests/api/test_datasets_api.py,sha256=HCFDaUFBSjI52akHuD3wrwaqqCCnT8v86ZabVIv9PRg,110472
485
478
  udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
486
479
  udata/tests/api/test_follow_api.py,sha256=4nFXG5pZ_Hf2PJ4KEdHJX_uggjc9RpB8v0fidkAcw9I,5792
487
480
  udata/tests/api/test_me_api.py,sha256=MiKN9P75h2HyMxepuxt2SiLs3Yhgl22iQXKbvTR42sg,13796
488
481
  udata/tests/api/test_organizations_api.py,sha256=xu2S02_PC5BadHY5Ovt8Z7B5o1cJla0KQS9ycKQ3IxU,44040
489
482
  udata/tests/api/test_reports_api.py,sha256=lOG0JZZxCtFggNHAx7CMR-MlbfPKgJ2lg3ARuX3HzMA,6181
490
483
  udata/tests/api/test_reuses_api.py,sha256=ova8uiUNgTo__GLVGdGIw57So-xnA2CZA0lo7E7Q7QU,30753
491
- udata/tests/api/test_security_api.py,sha256=dEWZuYuGMYU-II7oHvKorSHibXmikxcC9GKP2CV5m9k,4549
484
+ udata/tests/api/test_security_api.py,sha256=I7Pu1sNSh8zh1YVrdHREwIK7bNIpNxKkN_mAEuziD0A,4593
492
485
  udata/tests/api/test_swagger.py,sha256=IezTry6A0FnwbJMhbkVjbE6jgVLQqqlebZbotwHW2gQ,815
493
486
  udata/tests/api/test_tags_api.py,sha256=1xqUNOs7K4Asn7CLV-p95bw03uXqnM0hQkqLMrKLsR0,2410
494
487
  udata/tests/api/test_transfer_api.py,sha256=uYeouDL42X8ruzclgaVOa6VCA3_wc8Hq8HLa8jgpZyM,7485
495
- udata/tests/api/test_user_api.py,sha256=BtNS042u5mDi-h8r1moCi_S3lncMsmzmPSrebUUxmUA,16469
488
+ udata/tests/api/test_user_api.py,sha256=J84iZv1aIigq2EjCcF1PjmKIIQM4VUPuZu0nIhJtN3E,16855
496
489
  udata/tests/apiv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
497
490
  udata/tests/apiv2/test_datasets.py,sha256=lugL_CE2MlP4R--GEersBIwJOn66xVmLz5lU8L4YpcA,23216
498
491
  udata/tests/apiv2/test_me_api.py,sha256=YxSCtZBlSXgzQPgwMJoZHMcpSoKjL6IKz2jhJi8xL5I,1399
499
492
  udata/tests/apiv2/test_organizations.py,sha256=JqQHnOzRLR4l19P-EC9k2VToLbebU7jYESY4T-Y9LS8,6370
500
493
  udata/tests/apiv2/test_swagger.py,sha256=L1rXS5KADgPr40mcpyl9cHkqI1vG86YMrIYgxNl1peI,840
501
- udata/tests/apiv2/test_topics.py,sha256=oRKUN0ruF1VcD4e8BFT_DFD9rzSe92hGFXVPjBwCROw,37983
494
+ udata/tests/apiv2/test_topics.py,sha256=pHHsPo7Qs8DoDqLBBcB0GtoptkHHXT25Jo96B2Vg_4k,37970
502
495
  udata/tests/cli/test_cli_base.py,sha256=WvWaxChNYPzkZv9SVjhGBGtRQV8KRrrdT-AyDUvDfjI,469
503
- udata/tests/cli/test_db_cli.py,sha256=L8QaaKxfORPPPlNJmxwzLhJGbQL6WrDucjzqZPz_9uI,2529
504
496
  udata/tests/contact_point/test_contact_point_models.py,sha256=qPAEXd9BN9q-H0PSxQ7g6yUHG8xKZ0AElOsqeOaVL7U,957
505
497
  udata/tests/data/image.jpg,sha256=hdmpaCjOhmAAfNGuTqWKEjv7IC4GXJx-nP_rT274hc8,337049
506
498
  udata/tests/data/image.png,sha256=GAqXz7w_u7CapODIUF45UpVddmqelnGQkcrwKZq3448,266488
@@ -516,11 +508,9 @@ udata/tests/dataset/test_dataset_model.py,sha256=2cxxPFajasz864BM_uzCLn0IFBYYAe2
516
508
  udata/tests/dataset/test_dataset_rdf.py,sha256=fP7wJNSxAqwsa30WcUORgKnOzcLgqCVi5CDhUy1ew6c,53887
517
509
  udata/tests/dataset/test_dataset_recommendations.py,sha256=UMwAsLHs6_XA1vp7-lnTjaPOc9E6zQYqw9VIuSCNUtk,7102
518
510
  udata/tests/dataset/test_dataset_tasks.py,sha256=iOoP4JlQGC7JawvPRvU_wEM245ny0jlQp-2PQVUzXO0,3524
519
- udata/tests/dataset/test_resource_preview.py,sha256=mHzopnBSKU-E3nzhHVjfCt-plNOHSmw-ovp1GWfszzU,2250
511
+ udata/tests/dataset/test_resource_preview.py,sha256=387FEdNHWZyEeOlmSETMIFlnhVuKQ-U4o2RkWgxXwik,2208
520
512
  udata/tests/dataset/test_transport_tasks.py,sha256=GgXu_MXGKmVzugi-7SUVNJ_PkTo36kJsASapYaxlcQw,2998
521
513
  udata/tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
522
- udata/tests/features/territories/__init__.py,sha256=cqOT5bEvic6RIcGxY44HGvqwq3xL84TpQfFRBLXJZeE,773
523
- udata/tests/features/territories/test_territories_api.py,sha256=Rm_N08ebVQb18UFAEY5fbubDm99UXMFg7354L5qvkio,7435
524
514
  udata/tests/forms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
525
515
  udata/tests/forms/test_basic_fields.py,sha256=RPVdW3fQF6hhxpqF6FPr6GEpDoFO7-hAptDNXvajA_Q,2096
526
516
  udata/tests/forms/test_current_user_field.py,sha256=Z3QYQe2yC0XkYn4ubQeXPXCijUEXB64Hi1ZfmoJ2kTY,6467
@@ -539,7 +529,6 @@ udata/tests/forms/test_uuid_field.py,sha256=256hFDZSWBeoRQuKIAF5RBt4hAKssSHFVAqM
539
529
  udata/tests/frontend/test_auth.py,sha256=JbZiBe8vOY2gUMG3CffwNktrqskWKj-8dXJorK0fwTk,730
540
530
  udata/tests/frontend/test_csv.py,sha256=C9jNq5MR-08DNm5A1uTWN1dnQ02OcUoMYeckHKaBULI,11739
541
531
  udata/tests/frontend/test_error_handlers.py,sha256=oUk-x5uUwDDDv1b7_wMBWVu26Dolh5tH_ScrnOIFRxA,3106
542
- udata/tests/frontend/test_hooks.py,sha256=N5MWphXI4dAvN0zW6aUHkfiPSaNK_xBPNRlygPLhWP0,4151
543
532
  udata/tests/frontend/test_markdown.py,sha256=khpmtc9cvBAFSuSZhy8P1hg-8ILRW171_Jue00Aps_0,13875
544
533
  udata/tests/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
545
534
  udata/tests/metrics/helpers.py,sha256=1l5SvbWkWkXiJHmAAbf7VzSGhJY9eJxTtJ2S4cVB8To,1938
@@ -574,23 +563,23 @@ udata/tests/workers/test_tasks_routing.py,sha256=7FJUVcSPKkqA3tcFjjgCnbl4vC-4iGu
574
563
  udata/tests/workers/test_workers_api.py,sha256=x8EkULR9G5TKl5WwjdVwfFEttbudpiWIYN2umETrCzY,8805
575
564
  udata/tests/workers/test_workers_helpers.py,sha256=_983ChRxas3gsjykaEpXWQUbk2qTMJgeFZpIAHTuhLk,647
576
565
  udata/translations/udata.pot,sha256=SmIBCAdmbjM_zmAfvV4hsDkjX9pHOgTW20YIZggxwTM,41394
577
- udata/translations/ar/LC_MESSAGES/udata.mo,sha256=NpCad3DDRm73IheA7eSme2v-fVDWdZ4KesZARE3iiOQ,10934
578
- udata/translations/ar/LC_MESSAGES/udata.po,sha256=EV6tcezr7-KqJbUfiuWaYbIb72tzGOHykLRZyP5EiOw,46666
579
- udata/translations/de/LC_MESSAGES/udata.mo,sha256=dqRaG6jNA--EXdEhDKtJI-IHRf7OjByfMTXtfTLIE_0,14182
580
- udata/translations/de/LC_MESSAGES/udata.po,sha256=kB3Fs5kD-jWownsvMZQXYe6pABONcroRgLNHfwU7G6I,47193
581
- udata/translations/es/LC_MESSAGES/udata.mo,sha256=2QfSGKJUZ5HbAx51pwlu8AgohiuZJAQmTUlSQ8LBNRY,10437
582
- udata/translations/es/LC_MESSAGES/udata.po,sha256=fPCJwWmrrNvYySWY_WX9qZBM9mxIeNyV3qyLYBLLOEQ,45846
583
- udata/translations/fr/LC_MESSAGES/udata.mo,sha256=0RtmpyC9VzpzIVQ5zARK7VPI5hTptSFpB9mMNZ4JAgI,31942
584
- udata/translations/fr/LC_MESSAGES/udata.po,sha256=GlscDoN-aKEcyirVQ-4wcasTShUH0RFISYFbCEJ1RiA,55256
585
- udata/translations/it/LC_MESSAGES/udata.mo,sha256=aYZHqdQk_y2xd57C9xvCMfX3VMx0v88uM5F7xcsT2rY,13918
586
- udata/translations/it/LC_MESSAGES/udata.po,sha256=nIJfOX5lM-7rtdz3jYe_EIMn3SSc5X7JOUqUAR5Zrzc,47003
587
- udata/translations/pt/LC_MESSAGES/udata.mo,sha256=2b-HzdA9hy3KAHFH0up-UF0UirUDG3uj88Q6Yn15yJk,18281
588
- udata/translations/pt/LC_MESSAGES/udata.po,sha256=fqJ5-j3wIGQLxepZQzhazN21rU6d-JdiDSOoQGqx8Es,48877
589
- udata/translations/sr/LC_MESSAGES/udata.mo,sha256=UXrktIsPbdMCW31S1i3oQa9xQ-zRL-ppg005Scs0PNk,25482
590
- udata/translations/sr/LC_MESSAGES/udata.po,sha256=KAe1Ydtzk8m1N2HZRzn6VlPnBWOaGxZl-7o3WD7qivQ,54816
591
- udata-13.0.1.dev10.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
592
- udata-13.0.1.dev10.dist-info/METADATA,sha256=rJLqq2J2jj0tzErWsKdGpzeftsWC3AaUTXIxQWlPMfY,5174
593
- udata-13.0.1.dev10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
594
- udata-13.0.1.dev10.dist-info/entry_points.txt,sha256=v2u12qO11i2lyLNIp136WmLJ-NHT-Kew3Duu8J-AXPM,614
595
- udata-13.0.1.dev10.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
596
- udata-13.0.1.dev10.dist-info/RECORD,,
566
+ udata/translations/ar/LC_MESSAGES/udata.mo,sha256=O8keis1Pw3XvdeMS_lt_mdDuK_G2TDZNrp-thSHzOCw,10510
567
+ udata/translations/ar/LC_MESSAGES/udata.po,sha256=bJnRJzmGmm0bCgQ4_MJ6wZLtRWetcFf3xomBnogzLwM,45777
568
+ udata/translations/de/LC_MESSAGES/udata.mo,sha256=h-7gcx31SIJLrq5nv_ainmI0k7VAZ7UGqZQQOVwmxZQ,12499
569
+ udata/translations/de/LC_MESSAGES/udata.po,sha256=IMS88uBKrUxRw7NtqSY3vxT7L37V6tAeCHOqjAmxmUo,45773
570
+ udata/translations/es/LC_MESSAGES/udata.mo,sha256=hJL2zpFKoDPoFqKg2T4xA0UW_fBip7yrc2pFg6zxV6Y,8414
571
+ udata/translations/es/LC_MESSAGES/udata.po,sha256=qIvfnaM6t8p94cQsFI-RdGHqfwMgKjj96eJHHJ36taE,44244
572
+ udata/translations/fr/LC_MESSAGES/udata.mo,sha256=4MwDABqZ-r99aj10G_6CKvwsE98puqsvPsQlyXjFRZ4,32177
573
+ udata/translations/fr/LC_MESSAGES/udata.po,sha256=gh0hIWPS5PVvZtOEmOojeQZTnFXmUt1XvoL-ptLkdNQ,54654
574
+ udata/translations/it/LC_MESSAGES/udata.mo,sha256=23YVn8RdIWxWKj0VkAWMZ071wtcm5pq-88UiASrCvgo,13256
575
+ udata/translations/it/LC_MESSAGES/udata.po,sha256=IF2lOizjPk7eEh_phwvarvhz8Lrc3haT6IbUwAjskaU,46011
576
+ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=u5JAz24MHYW96FFn_h7lZejdNLc3N5s68vNVzkTFgzM,14228
577
+ udata/translations/pt/LC_MESSAGES/udata.po,sha256=KflmyEYuCeT9ZzQ2NEy3VtgI1CUUwV4z7xESewVMnCs,46371
578
+ udata/translations/sr/LC_MESSAGES/udata.mo,sha256=lbVQpVrSh-0xSUOhSyd-ADdhuNH9nd6Eo_T-zk-4Vrk,20441
579
+ udata/translations/sr/LC_MESSAGES/udata.po,sha256=As8H3QOp3cCd0TgwhHqIH2CRBCFfPoEnbU4dfcBsACM,51344
580
+ udata-14.0.0.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
581
+ udata-14.0.0.dist-info/METADATA,sha256=_S6lrONUtUUp959QkMWgHJB3z29ikas7O940Jn-nTe0,5080
582
+ udata-14.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
583
+ udata-14.0.0.dist-info/entry_points.txt,sha256=XwrEzP-n_6CKnwTsrNHzyCTWbMwg2FkvxVVB686f_C0,476
584
+ udata-14.0.0.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
585
+ udata-14.0.0.dist-info/RECORD,,
@@ -4,11 +4,6 @@ udata = udata.commands:cli
4
4
  [pytest11]
5
5
  udata = udata.tests.plugin
6
6
 
7
- [udata.avatars]
8
- adorable = udata.features.identicon.backends:adorable
9
- internal = udata.features.identicon.backends:internal
10
- robohash = udata.features.identicon.backends:robohash
11
-
12
7
  [udata.harvesters]
13
8
  ckan = udata.harvest.backends.ckan.harvesters:CkanBackend
14
9
  csw-dcat = udata.harvest.backends.dcat:CswDcatBackend
@@ -16,3 +11,6 @@ csw-iso-19139 = udata.harvest.backends.dcat:CswIso19139DcatBackend
16
11
  dcat = udata.harvest.backends.dcat:DcatBackend
17
12
  dkan = udata.harvest.backends.ckan.harvesters:DkanBackend
18
13
  maaf = udata.harvest.backends.maaf:MaafBackend
14
+
15
+ [udata.i18n]
16
+ udata = udata.translations
@@ -1,15 +0,0 @@
1
- # from udata.auth import current_user
2
-
3
- # from udata.i18n import I18nBlueprint
4
-
5
- # from .models import Follow
6
-
7
- # blueprint = I18nBlueprint('followers', __name__)
8
-
9
-
10
- # @blueprint.app_template_global()
11
- # @blueprint.app_template_filter()
12
- # def is_following(obj):
13
- # if not current_user.is_authenticated:
14
- # return False
15
- # return Follow.objects.is_following(current_user._get_current_object(), obj)
udata/entrypoints.py DELETED
@@ -1,94 +0,0 @@
1
- import pkg_resources
2
-
3
- # Here for documentation purpose
4
- ENTRYPOINTS = {
5
- "udata.avatars": "Avatar rendering backends",
6
- "udata.harvesters": "Harvest backends",
7
- "udata.metrics": "Extra metrics",
8
- "udata.models": "Models and migrations",
9
- "udata.plugins": "Generic plugin",
10
- "udata.tasks": "Tasks and jobs",
11
- "udata.themes": "Themes",
12
- "udata.views": "Extra views",
13
- }
14
-
15
-
16
- class EntrypointError(Exception):
17
- pass
18
-
19
-
20
- def iter_all(name):
21
- """Iter all entrypoints registered on a given key"""
22
- return pkg_resources.iter_entry_points(name)
23
-
24
-
25
- def get_all(entrypoint_key):
26
- """Load all entrypoints registered on a given key"""
27
- return dict(_ep_to_kv(e) for e in iter_all(entrypoint_key))
28
-
29
-
30
- def get_enabled(name, app):
31
- """
32
- Get (and load) entrypoints registered on name
33
- and enabled for the given app.
34
- """
35
- plugins = app.config["PLUGINS"]
36
- return dict(
37
- _ep_to_kv(e)
38
- for e in iter_all(name)
39
- if e.name in plugins or e.name.startswith(tuple(plugins))
40
- )
41
-
42
-
43
- def get_plugin_module(name, app, plugin):
44
- """
45
- Get the module for a given plugin
46
- """
47
- return next((m for p, m in get_enabled(name, app).items() if p == plugin), None)
48
-
49
-
50
- def _ep_to_kv(entrypoint):
51
- """
52
- Transform an entrypoint into a key-value tuple where:
53
- - key is the entrypoint name
54
- - value is the entrypoint class with the name attribute
55
- matching from entrypoint name
56
- """
57
- cls = entrypoint.load()
58
- cls.name = entrypoint.name
59
- return (entrypoint.name, cls)
60
-
61
-
62
- def known_dists():
63
- """Return a list of all Distributions exporting udata.* entrypoints"""
64
- return (
65
- dist
66
- for dist in pkg_resources.working_set
67
- if any(k in ENTRYPOINTS for k in dist.get_entry_map().keys())
68
- )
69
-
70
-
71
- def get_plugins_dists(app, name=None):
72
- """Return a list of Distributions with enabled udata plugins"""
73
- if name:
74
- plugins = set(e.name for e in iter_all(name) if e.name in app.config["PLUGINS"])
75
- else:
76
- plugins = set(app.config["PLUGINS"])
77
- return [
78
- d for d in known_dists() if any(set(v.keys()) & plugins for v in d.get_entry_map().values())
79
- ]
80
-
81
-
82
- def get_roots(app=None):
83
- """
84
- Returns the list of root packages/modules exposing endpoints.
85
-
86
- If app is provided, only returns those of enabled plugins
87
- """
88
- roots = set()
89
- plugins = app.config["PLUGINS"] if app else None
90
- for name in ENTRYPOINTS.keys():
91
- for ep in iter_all(name):
92
- if plugins is None or ep.name in plugins:
93
- roots.add(ep.module_name.split(".", 1)[0])
94
- return list(roots)
File without changes
@@ -1,13 +0,0 @@
1
- from udata.api import API, api
2
-
3
- from . import backends
4
-
5
- ns = api.namespace("avatars", "Avatars")
6
-
7
-
8
- @ns.route("/<identifier>/<int:size>/", endpoint="avatar")
9
- class IdenticonAPI(API):
10
- @api.doc("avatars")
11
- def get(self, identifier, size):
12
- """Get a deterministic avatar given an identifier at a given size"""
13
- return backends.get_identicon(identifier, size)