udata 11.1.2.dev7__py3-none-any.whl → 11.1.2.dev11__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 (53) hide show
  1. udata/api/oauth2.py +22 -3
  2. udata/app.py +3 -0
  3. udata/auth/__init__.py +11 -0
  4. udata/auth/forms.py +70 -3
  5. udata/auth/mails.py +6 -0
  6. udata/auth/proconnect.py +127 -0
  7. udata/auth/views.py +57 -2
  8. udata/commands/db.py +2 -3
  9. udata/core/__init__.py +2 -0
  10. udata/core/captchetat.py +80 -0
  11. udata/core/dataservices/api.py +1 -2
  12. udata/core/dataset/api.py +3 -4
  13. udata/core/dataset/api_fields.py +3 -4
  14. udata/core/dataset/apiv2.py +6 -6
  15. udata/core/dataset/commands.py +0 -10
  16. udata/core/dataset/constants.py +124 -38
  17. udata/core/dataset/factories.py +2 -1
  18. udata/core/dataset/forms.py +14 -10
  19. udata/core/dataset/models.py +8 -36
  20. udata/core/dataset/preview.py +3 -3
  21. udata/core/dataset/rdf.py +84 -65
  22. udata/core/dataset/tasks.py +2 -50
  23. udata/core/metrics/helpers.py +6 -7
  24. udata/core/metrics/tasks.py +3 -6
  25. udata/core/post/api.py +1 -2
  26. udata/core/reuse/api.py +1 -2
  27. udata/core/user/api.py +1 -3
  28. udata/cors.py +19 -2
  29. udata/harvest/backends/ckan/harvesters.py +10 -14
  30. udata/harvest/backends/maaf.py +15 -14
  31. udata/harvest/tests/ckan/test_ckan_backend.py +4 -3
  32. udata/harvest/tests/test_dcat_backend.py +3 -2
  33. udata/i18n.py +7 -32
  34. udata/migrations/2025-01-05-dataservices-fields-changes.py +1 -2
  35. udata/migrations/2025-09-04-update-legacy-frequencies.py +36 -0
  36. udata/settings.py +27 -0
  37. udata/templates/security/email/reset_instructions.html +1 -1
  38. udata/templates/security/email/reset_instructions.txt +1 -1
  39. udata/tests/api/test_datasets_api.py +41 -12
  40. udata/tests/dataset/test_dataset_model.py +17 -53
  41. udata/tests/dataset/test_dataset_rdf.py +27 -28
  42. udata/translations/udata.pot +226 -150
  43. udata/uris.py +1 -2
  44. udata/utils.py +8 -1
  45. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/METADATA +3 -4
  46. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/RECORD +50 -50
  47. udata/templates/mail/frequency_reminder.html +0 -34
  48. udata/templates/mail/frequency_reminder.txt +0 -18
  49. udata/tests/test_i18n.py +0 -93
  50. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/WHEEL +0 -0
  51. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/entry_points.txt +0 -0
  52. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/licenses/LICENSE +0 -0
  53. {udata-11.1.2.dev7.dist-info → udata-11.1.2.dev11.dist-info}/top_level.txt +0 -0
udata/uris.py CHANGED
@@ -1,5 +1,4 @@
1
1
  import re
2
- from typing import Optional
3
2
  from urllib.parse import urlencode, urljoin, urlparse, urlunparse
4
3
 
5
4
  from flask import current_app, url_for
@@ -78,7 +77,7 @@ def homepage_url(**kwargs) -> str:
78
77
  return "/"
79
78
 
80
79
 
81
- def cdata_url(uri: str, **kwargs) -> Optional[str]:
80
+ def cdata_url(uri: str, **kwargs) -> str | None:
82
81
  base_url = current_app.config["CDATA_BASE_URL"]
83
82
  if not base_url:
84
83
  return None
udata/utils.py CHANGED
@@ -18,7 +18,7 @@ from faker import Faker
18
18
  from faker.config import PROVIDERS
19
19
  from faker.providers import BaseProvider
20
20
  from faker.providers.lorem.la import Provider as LoremProvider
21
- from flask import abort
21
+ from flask import abort, request
22
22
 
23
23
  from udata import tags
24
24
 
@@ -380,3 +380,10 @@ def id_or_404(object_id):
380
380
  return object_id
381
381
  except InvalidId:
382
382
  abort(404)
383
+
384
+
385
+ def wants_json() -> bool:
386
+ if request.is_json:
387
+ return True
388
+
389
+ return request.accept_mimetypes.best == "application/json"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: udata
3
- Version: 11.1.2.dev7
3
+ Version: 11.1.2.dev11
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>
@@ -17,13 +17,12 @@ Classifier: Operating System :: OS Independent
17
17
  Classifier: Intended Audience :: Developers
18
18
  Classifier: Topic :: System :: Software Distribution
19
19
  Classifier: Programming Language :: Python :: 3
20
- Classifier: Programming Language :: Python :: 3.9
21
- Classifier: Programming Language :: Python :: 3.10
22
20
  Classifier: Programming Language :: Python :: 3.11
23
21
  Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
24
23
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
24
  Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
26
- Requires-Python: <3.14,>=3.9
25
+ Requires-Python: <3.14,>=3.11
27
26
  Description-Content-Type: text/markdown
28
27
  License-File: LICENSE
29
28
  Requires-Dist: amqp==5.3.1
@@ -1,24 +1,24 @@
1
1
  udata/__init__.py,sha256=U0HEYqKCLOY43O1UCVeuAb3b3SSX1pPhsJGpHJmK67k,75
2
2
  udata/api_fields.py,sha256=XI0XoM1fxO4DEzxGptOAB5SL_fJr-u58-bfQVAvzgBg,36549
3
- udata/app.py,sha256=YSIzBCfgtqu0Ttde10rtMvavjE9qqSJhL_jy5jAdDFs,8924
3
+ udata/app.py,sha256=By-eZvSVSCNtWeKm_lA8TF81qaHdzScvggvbgHCDHYI,8992
4
4
  udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
5
- udata/cors.py,sha256=gPTIXnO5nWziCKAHqU9GNuBKaIzr7RRtbjZBd2RdE2k,3155
5
+ udata/cors.py,sha256=JttAogsNVSFWEV9-1L2kdbwwsNewn3KjgBErXReNwfc,3801
6
6
  udata/entrypoints.py,sha256=mbAAUVT8ZenzSYdang2PbAwZcK1pENtA3axBmPRiWCw,2717
7
7
  udata/errors.py,sha256=E8W7b4PH7c5B85g_nsUMt8fHqMVpDFOZFkO6wMPl6bA,117
8
8
  udata/factories.py,sha256=MoklZnU8iwNL25dm3JsoXhoQs1PQWSVYL1WvcUBtJqM,492
9
- udata/i18n.py,sha256=64hqiocxRC5eRhCxYWeNAxMT5E7sFlv1Esie-MfaW3c,8989
9
+ udata/i18n.py,sha256=bC9ajf66YgcYoJffvresLZLa32rb6NsY-JGMtFiVsG4,8163
10
10
  udata/mail.py,sha256=Huhx_1QthJkLvuRUuP6jqb5Qq5R4iSmqeEpLVO9ZkQ4,2671
11
11
  udata/rdf.py,sha256=aJKmnE1r6YyMKXLo-VRlUvOXoZSJuvNeNbMCqEl0kdY,19370
12
12
  udata/routing.py,sha256=Hnc1ktmKVS-RUHNKw2zYTft2HJ903FhjtlcenQ9igwI,8044
13
13
  udata/sentry.py,sha256=ekcxqUSqxfM98TtvCsPaOoX5i2l6PEcYt7kb4l3od-Q,3223
14
- udata/settings.py,sha256=Nz7P1tcYoSY_1pJz43CroZOmjAlWYiA153mJPwyYvQw,20044
14
+ udata/settings.py,sha256=xDsib8oPUEHrOFRlfFRAZAn0V2EV9AOrMHX1IkzJdmc,22104
15
15
  udata/sitemap.py,sha256=oRRWoPI7ZsFFnUAOqGT1YuXFFKHBe8EcRnUCNHD7xjM,979
16
16
  udata/tags.py,sha256=ydq4uokd6bzdeGVSpEXASVtGvDfO2LfQs9mptvvKJCM,631
17
17
  udata/tasks.py,sha256=Sv01dhvATtq_oHOBp3J1j1VT1HQe0Pab7zxwIeIdKoo,5122
18
18
  udata/terms.md,sha256=nFx978tUQ3vTEv6POykXaZvcQ5e_gcvmO4ZgcfbSWXo,187
19
19
  udata/tracking.py,sha256=WOcqA1RlHN8EPFuEc2kNau54mec4-pvi-wUFrMXevzg,345
20
- udata/uris.py,sha256=eIu41ZvHg124fL2aBZ49ye4gMmBSChrLBDZMdz-MbLg,4471
21
- udata/utils.py,sha256=mtosjF91SPuSM-63EyxjLLnxs5DT0iSBdz-ECNeTYGU,11128
20
+ udata/uris.py,sha256=u05ltyLv4ZolaNMbq58kcLizMXWC10mRpJFYzChUHJU,4440
21
+ udata/utils.py,sha256=vtfn_FEMkB0AL_sF3EGpMSigvWp5uDX4l0QgYpwfj5U,11273
22
22
  udata/worker.py,sha256=K-Wafye5-uXP4kQlffRKws2J9YbJ6m6n2QjcVsY8Nsg,118
23
23
  udata/wsgi.py,sha256=MY8en9K9eDluvJYUxTdzqSDoYaDgCVZ69ZcUvxAvgqA,77
24
24
  udata/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -27,18 +27,19 @@ udata/api/__init__.py,sha256=Rs1V6KqWUcZliZnoIrVKtq15Bfb8ZaOVOFuGhcv0SK8,11948
27
27
  udata/api/commands.py,sha256=LJ4u-yhGij7QuH7OR92u3n7BEptqWMjDwMnG8pqdBxo,3523
28
28
  udata/api/errors.py,sha256=P_UigBf6HAL73LbXKULagmp5Cuw-H1Ms6LmXxOmFIeg,211
29
29
  udata/api/fields.py,sha256=w3qpMGntcOQa5bwFenZNJrnIoEZGZkEhRq0OwWFHsgc,3801
30
- udata/api/oauth2.py,sha256=_sHQjcj67y601vXVhw6DAGJeZcj8itSx1myhsnFcNk4,12025
30
+ udata/api/oauth2.py,sha256=1cSdZjCYT6W0XNKkvKA7LN38WaanLRu2NPUCYZt-AEM,12583
31
31
  udata/api/parsers.py,sha256=iQEwgMwdVz_gXlVZYaRCGrUFWvcf7_8uCIxw7Iw-hpw,1405
32
32
  udata/api/signals.py,sha256=t8s7tF1KYeAygqbR4GdA76_UYvthAsyRbJaqsMmFsK4,162
33
- udata/auth/__init__.py,sha256=RRMYs8rYIwXncx3Z62NFtVhuQzxQrFQpC1lBhl68WJI,1992
34
- udata/auth/forms.py,sha256=p_sMUSJ5KwKEBaxgaWhpls0hgB2sa9cdVscZNylnvj4,2420
33
+ udata/auth/__init__.py,sha256=u4-Vpfzw3ovRTqW6OPL_wWzRfAeMasD48aiCggZ60g0,2497
34
+ udata/auth/forms.py,sha256=80PtpAu8JwHuZUps7n9ga04Bxy6sslbhPbRnwdhURGI,4166
35
35
  udata/auth/helpers.py,sha256=7Yr5k7ImdgqxVap4Bjq_ylTXmzq4NR0KgEOOhqSbaf4,267
36
- udata/auth/mails.py,sha256=AOV2MCBwOx7iAJlQ_OFVO7hT5-_4yQ0_zsAXoHAftZY,1673
36
+ udata/auth/mails.py,sha256=ggGfgYEgNLtF-p5HocrmuQAk0b6fteWtN4UzK3ZvMlA,1759
37
37
  udata/auth/password_validation.py,sha256=ODVdEsiXbtq_8ws4Yf3hs5Sq7jz-IDa1RxAm_WPIJnA,1806
38
- udata/auth/views.py,sha256=5YfDJ28aJBVIep0nf1WhoboL4J3QEW-QqeLo6Zcp_d8,5742
38
+ udata/auth/proconnect.py,sha256=hsvQ71Hqy42NvwgYtcMniRXWax3Q7LX1INcmaS7gaIQ,5073
39
+ udata/auth/views.py,sha256=83nlLQiRlqLPILPOkKilNnrTJTs6c7XKqe-nt2I5l8s,7861
39
40
  udata/commands/__init__.py,sha256=Won_rW_hIU9TA3o4oNe6kI46l1fnDBM_oW0Hc1XS9F8,7711
40
41
  udata/commands/cache.py,sha256=bLdrf_fCWFYX9ULlL2ADsZRwijkI4pArsJxfx24OivM,341
41
- udata/commands/db.py,sha256=-Hjjm4aqr8CJQr7Gy3tHDYrKkmITOZKlAeTJu95iHFQ,20460
42
+ udata/commands/db.py,sha256=OyVBcuSIqYqNywlZAi19F2yRJCAIdFKKyQ9H9alqbfI,20426
42
43
  udata/commands/dcat.py,sha256=f6jT2AGZem-w1CaRH_ahfWB9A4oCDvjG13tPmBpeCqw,3910
43
44
  udata/commands/fixtures.py,sha256=Mo_Q0tARawiUK3ZidWlJLrO8uvqnSYcg_OeWMzCwkvk,11376
44
45
  udata/commands/images.py,sha256=0rVojLik5DYgJ6W4uNEfMP2g2QUU2V761tj3z6lo8no,2050
@@ -51,7 +52,8 @@ udata/commands/test.py,sha256=0snHTDolowQK-DmAKnhF_mBuDOBMApAbEc35GEiwH0M,893
51
52
  udata/commands/worker.py,sha256=bjXQGCwkbZxkcxLMPA2Lr0nkNjXLpGNDMkkQXjwBLPI,3976
52
53
  udata/commands/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
54
  udata/commands/tests/test_fixtures.py,sha256=acFmE08S4B0GHJP4nN1dfRNcKjcsE88XusyW_HT12SE,5554
54
- udata/core/__init__.py,sha256=O7C9WWCXiLWnWPnPbFRszWhOmvRQiI4gD-5qkWvPGRo,385
55
+ udata/core/__init__.py,sha256=rPkzAmhURfV4x9v2iY_vOakNd75xseYW2jWNIoh-aRg,423
56
+ udata/core/captchetat.py,sha256=PNobWeJiYSgpSZQ9vJpuEvk5xSkAD5sgrWhKcVPbncg,2953
55
57
  udata/core/csv.py,sha256=qeRtSQXPT5n5EoWZ3_XfnOTW7ITnEzzHctODPeX63Uk,8543
56
58
  udata/core/linkable.py,sha256=8YuTzZo5Y36CVIYxESC-EPJ-zKsQTRbi4OIZTp-wWig,587
57
59
  udata/core/owned.py,sha256=OQT7wdk7dAqGvWDiJRVkKJxerDc9_Io910nvLmfBAVI,5561
@@ -81,7 +83,7 @@ udata/core/contact_point/forms.py,sha256=oBe1agSJFyx2QRgYzPRg2A7qVscaBTaKG4V-AyI
81
83
  udata/core/contact_point/models.py,sha256=Xqmqg7S13gcaKxiQT52WHeQEHTaUDDGIXInXyqNh4Po,854
82
84
  udata/core/dataservices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
85
  udata/core/dataservices/activities.py,sha256=wcYQCyYpKciCz99VqQqKti72a5Fyhc-AvDZBWdF0KUc,1763
84
- udata/core/dataservices/api.py,sha256=ePUW34ZVlVM6Rv-4xB9o7l2gWx1Lj3igSr8AeBcTN5Y,10053
86
+ udata/core/dataservices/api.py,sha256=DCtrn9MiJWJ6w9R-mTlVURZWH77JG2VIcWTvxaIteyg,10029
85
87
  udata/core/dataservices/apiv2.py,sha256=pd4UWF6m7pQ5nmBRFmeiDyedhZSngz211to6qTscVsA,1205
86
88
  udata/core/dataservices/constants.py,sha256=SxetyqvbWQlb-T9Bqn7mdfzV3vS-is7s56rzmGzTXY0,1029
87
89
  udata/core/dataservices/csv.py,sha256=HWI2JrN_Vuw0te9FHlJ6eyqcRcKHOKXuzg45D4Ti6F0,1106
@@ -94,25 +96,25 @@ udata/core/dataservices/tasks.py,sha256=fHG1r5ymfJRXJ_Lug6je3VKZoK30XKXE2rQ8x0R-
94
96
  udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
97
  udata/core/dataset/actions.py,sha256=mX6xox0PiMrbcAPZ3VZsI26rfM-ciYfEXxN6sqqImKA,1222
96
98
  udata/core/dataset/activities.py,sha256=eGxMUnC47YHxTgcls6igQ3qP7cYgwFtPfj0asCylGsI,3315
97
- udata/core/dataset/api.py,sha256=jnMaDcFTmm0Wod0ff7qlichwAf87tmUXK02I5H7ai_E,35880
98
- udata/core/dataset/api_fields.py,sha256=FaLANuLCtD5Q8-QXs-r7kG5iDTDL7UA4ZFML-e9rCk4,18055
99
- udata/core/dataset/apiv2.py,sha256=ZRKYnF9QCv2cHEHea6JYbbwwCzvzA8csrFOMHNN4PAk,21019
100
- udata/core/dataset/commands.py,sha256=__hPAk_6iHtgMnEG51ux0vbNWJHxUjXhi1ukH4hF5jY,3714
101
- udata/core/dataset/constants.py,sha256=BvWCAEI5OtrgHaTFUiF1eHLA8Vg1YYNKCCdkdu4Ot6I,3070
99
+ udata/core/dataset/api.py,sha256=_Y-WCB4CI1VLARfK33YDYbHielouDbSPn1bP_G2IHNQ,35838
100
+ udata/core/dataset/api_fields.py,sha256=p7ZnmGNImZ4sgZTpoyHpI0CgOukpEIx8QdGnxlmgl2I,18032
101
+ udata/core/dataset/apiv2.py,sha256=1H4557ZMi6rwEyrwB1Ha20m0bf3Avhg_vDLiDQt5Fi0,21030
102
+ udata/core/dataset/commands.py,sha256=3mKSdJ-M7ggdG29AVn77C4ouZanbYoqkTaGQoBKOp3s,3471
103
+ udata/core/dataset/constants.py,sha256=y9ASiuCJlUpOpnwrPkJyQ04tsGvE0w0zPQ-PL_3lZGg,6996
102
104
  udata/core/dataset/csv.py,sha256=mNU5cuuNzrMgFF7Z0AKN8clsv458tpJHX1_pzAjpd-4,3653
103
105
  udata/core/dataset/events.py,sha256=bSM0nFEX14r4JHc-bAM-7OOuD3JAxUIpw9GgXbOsUyw,4078
104
106
  udata/core/dataset/exceptions.py,sha256=uKiayLSpSzsnLvClObS6hOO0qXEqvURKN7_w8eimQNU,498
105
- udata/core/dataset/factories.py,sha256=fRDWDlybR_ud4pDs1-ntWuYHKtV9LMHeBOBp2SmTT6M,9006
106
- udata/core/dataset/forms.py,sha256=Hf5IEViazhxSTAXoZb5IfQ_AGJqlEjQyh8n4QVh3PPs,6533
107
+ udata/core/dataset/factories.py,sha256=tb18axsk8Tx5iUIqWM9IELdt-2Ryp2UN0-iY4fdea4U,9059
108
+ udata/core/dataset/forms.py,sha256=gGXOqy3WXFNvWMXngDq3TEqMM18-9DBpy2V7msrOsTw,7084
107
109
  udata/core/dataset/metrics.py,sha256=s8Xs_rqRXfNWsErkiJTuRMG5o_cU5iSK8mUJFKVSc7w,1204
108
- udata/core/dataset/models.py,sha256=h-r2hDybxtvpuozlh8mEQncjRbWyrMUNjqHZUhHnKMU,44338
110
+ udata/core/dataset/models.py,sha256=Ny79cFiD7vOJt0JIfOZ7AJQOBx-_EEWPxdnhBpUr_-E,42980
109
111
  udata/core/dataset/permissions.py,sha256=zXQ6kU-Ni3Pl5tDtat-ZPupug9InsNeCN7xRLc2Vcrc,1097
110
- udata/core/dataset/preview.py,sha256=qXmd4-nKvIPtcKLrMqC-aJne4-vMIiq_NubpX39D6I0,855
111
- udata/core/dataset/rdf.py,sha256=zMKiN_PNT2DafREi1rbTY5VZOLdtpPrmp8Rs7DS-Ehw,31336
112
+ udata/core/dataset/preview.py,sha256=uFEpK-p5nIAlY8hVOMhd7mtkwFt6C_PQRMNxPvAyoo4,839
113
+ udata/core/dataset/rdf.py,sha256=jHyHgay3g3Z04Ju5kLyMk3Vyb-kWJYtqqg8Smamv7WI,32970
112
114
  udata/core/dataset/recommendations.py,sha256=DlGSLU8D0nW6Ds1rjBav1WxC-0VW5yOCjkO5w-ltFcI,7171
113
115
  udata/core/dataset/search.py,sha256=0reOKadjjqeL9ujOAGfiVBFBX5lx7vHotDbvaWPaUN0,6068
114
116
  udata/core/dataset/signals.py,sha256=WN4sV-lJlNsRkhcnhoy0SYJvCoYmK_5QFYZd1u-h4gs,161
115
- udata/core/dataset/tasks.py,sha256=q4T_71NHmxOg-pfgouiiGm3L577rn9nGBBRf6sMF7zM,9556
117
+ udata/core/dataset/tasks.py,sha256=FgdPNQYOSYdt8kMCDA8F9GWuJ-yOvCnq0BO3jiL_9hQ,7582
116
118
  udata/core/dataset/transport.py,sha256=ihCXirY1dZjOfXKbf9HRCJTfIOc75rM1McwbeGjsW6A,1296
117
119
  udata/core/discussions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
120
  udata/core/discussions/actions.py,sha256=kjdBLDIeu0yWTSxQGgOpN1WoxUqbMygn4SiBk_S9T5I,1051
@@ -141,10 +143,10 @@ udata/core/jobs/forms.py,sha256=B-B6jXHZsYV-PWAkD8DLoOlh6trv4l1hGZ4HOPm-PD4,1495
141
143
  udata/core/jobs/models.py,sha256=xK8T3FCmhtERNbZmh1Tq_ZTO6vojM172tTc0oplNoQ0,1358
142
144
  udata/core/metrics/__init__.py,sha256=eCmFPBR01Np6iEoz5n8dkfkCPGeCpPGTBT0kJ0SfpTw,444
143
145
  udata/core/metrics/commands.py,sha256=JmEBsjmvQl0W32g4m_n7OdtB3zcAvcMCvlzJa0DzZJ4,6191
144
- udata/core/metrics/helpers.py,sha256=AJJouc5QLd6dtHXltGQPxTOYg7IqkgBfU3Kcpb9KwKU,4418
146
+ udata/core/metrics/helpers.py,sha256=DRefxJfpePuDcWmV7b-gaNE6tjEcttQaWmKpYNBSECM,4370
145
147
  udata/core/metrics/models.py,sha256=Sv2Qhmqdug_atfDc_pyOJCb-8ACpvU-_0FFVPVOFDGk,353
146
148
  udata/core/metrics/signals.py,sha256=9mdJW__gR2GJT3huBr6HN2SDhKYJRgNbW9dnh48cAnU,176
147
- udata/core/metrics/tasks.py,sha256=jpO8gDY6Z7puMeuaCKEdsU_I8V_6JDeoX2UimOQyl74,5103
149
+ udata/core/metrics/tasks.py,sha256=5hVSvBFF2-k_MZGn1XrzEWLgRp3TlrZJtPjX1Y_niS4,4963
148
150
  udata/core/organization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
151
  udata/core/organization/activities.py,sha256=Mw4-R8Q6G745IZnCDgrj7h2ax2crGYRhZtcewSK6_Ok,1213
150
152
  udata/core/organization/api.py,sha256=rfEGVsr64cfUEEN8zFA6xvDod8Chh-GOqRbuJ8cbaIM,22139
@@ -169,7 +171,7 @@ udata/core/pages/models.py,sha256=oRZFNsyHnsqFBXOJCgJah5MKL29Nh9Wm4FELtwsWuMM,26
169
171
  udata/core/pages/permissions.py,sha256=TK3DKBxacwhn6gLc70JzUN9OsVwInxTvz6GWxrKBeEY,155
170
172
  udata/core/pages/tests/test_api.py,sha256=dMhsfoqGsNpW30X7gKSeP0GyhQzptVkwoKq8WqO98-A,3289
171
173
  udata/core/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
- udata/core/post/api.py,sha256=vZ83TXbD3sOmaXF9yKXaSIJjdhpvs0kicBe_P63c6IA,7251
174
+ udata/core/post/api.py,sha256=fb971D2vOtMzBB8QwufoxJ0nY6mVMfo0vGmIdBGksec,7227
173
175
  udata/core/post/constants.py,sha256=W-xjOTv0lorD-RCV0YGtK0cT_RwgYmfrC8Ff6ywH7bM,215
174
176
  udata/core/post/factories.py,sha256=lcFe3zIadG7bc1jsydkOT7GfQX53V0x09Flpclyl6gI,619
175
177
  udata/core/post/forms.py,sha256=gY4HhteFkZr3u4EoQ5QNEHMOTtNNiEKHyehVXKYcm3Y,963
@@ -183,7 +185,7 @@ udata/core/reports/constants.py,sha256=LRZSX3unyqZeB4yQjK3ws_hGbJcXYk4bu1Rhnhi5D
183
185
  udata/core/reports/models.py,sha256=xT6zSXJx8vG0c8cu4VWUQvENUwajusFlPQmenslR3lQ,2662
184
186
  udata/core/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
187
  udata/core/reuse/activities.py,sha256=5D7cV-hGZnzHsp8hohZqqgK3RSGQpfAqJ_Wfq_AYfM8,1420
186
- udata/core/reuse/api.py,sha256=FlR4RC1RH8BGcoyLcXX1NgOqSp2ZK4GdlN2O-6-v07M,12443
188
+ udata/core/reuse/api.py,sha256=AdmgVR8dThM1kbiiutfOjdec7kuaH7aR7vSIq_hTAks,12419
187
189
  udata/core/reuse/api_fields.py,sha256=ccym6v9Ap68PlHZmIMMtHQFnEyV7Gbxrfdw0b6rj51A,1232
188
190
  udata/core/reuse/apiv2.py,sha256=mgvL1ZBts872zNSo0Wh3AkNAh2ldzP9yQkRY3WfzGPM,944
189
191
  udata/core/reuse/constants.py,sha256=JgDBrjOKSt9q0auv9rjzbGsch83H-Oi8YXAKeI5hO4o,1215
@@ -247,7 +249,7 @@ udata/core/topic/permissions.py,sha256=RtFPPlxuU_Bv7ip6LDO4AoPrKFnIOEs9cCMXaSSmE
247
249
  udata/core/topic/tasks.py,sha256=_OrPfuZ9rKENp4p4IkoyV-Yqp9bxI3nNxhpfKrbgl-w,357
248
250
  udata/core/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
249
251
  udata/core/user/activities.py,sha256=d91G45XEgoxYUJetkSjVolSM-nqmNSuM5b-6geayGE4,3338
250
- udata/core/user/api.py,sha256=Ld0o7ERMYNNTT6wQu9QEQgEng3CmwikyZj9YVj7DTgU,13474
252
+ udata/core/user/api.py,sha256=DhbjrK2bote_QX45evTHWJICZ9g0vog9RXUW3S6bv1o,13442
251
253
  udata/core/user/api_fields.py,sha256=fx3rv8YmovIKJpZ8ldtcUOAWuJHEELDYa4HwdaQOAnA,5986
252
254
  udata/core/user/apiv2.py,sha256=4eNsvJjb4ChJQFrXtVbkOtAvXEcQcQpZf8vkEbriXRA,1125
253
255
  udata/core/user/commands.py,sha256=8dyowvylgYqdScgzVGgr61MWLshlS6-UopZGAMvp4zA,3539
@@ -304,10 +306,10 @@ udata/harvest/tasks.py,sha256=id5YmHIhnkgez0LVC1fNg_6Yz1Sp0jrvQ1caslVOWdY,1722
304
306
  udata/harvest/backends/__init__.py,sha256=QjoFfBJfpw_xgk5YYWI1SgKJOMEmTMlxSfW79GNkSTI,459
305
307
  udata/harvest/backends/base.py,sha256=nFr8Bep5hqC4LR4sYg3CSMgn-RGkpiCeUJ7arFbl_mQ,18190
306
308
  udata/harvest/backends/dcat.py,sha256=Qa4lRoLaTMRS9OFlCyKfQXGQ2rEQf0VomqzsL14L03g,19432
307
- udata/harvest/backends/maaf.py,sha256=N7ty8ZWO9pfKPtZRk1wTaJ5pY6qi-0-GtF1p8jiYiY4,8102
309
+ udata/harvest/backends/maaf.py,sha256=zplwjs9_Vafut6jXH-WPJNCJY0VjzDDc1ouQ0_zG3sI,8355
308
310
  udata/harvest/backends/maaf.xsd,sha256=vEyG8Vqw7Yn_acjRdXjqUJgxOj4pv8bibep-FX-f3BQ,18322
309
311
  udata/harvest/backends/ckan/__init__.py,sha256=JE7Qa7kX7Yd8OvmJnAO_NupZe0tqYyhhkgJ-iGNxX64,35
310
- udata/harvest/backends/ckan/harvesters.py,sha256=RqI7cq84y1P5t75JnI2R82c7cNfAIhSUWc8bcFKO0jo,10680
312
+ udata/harvest/backends/ckan/harvesters.py,sha256=zWEU0P4d6jqqLvNu7aYaLrc5nUPpG82kFnmiO1EXAuU,10660
311
313
  udata/harvest/backends/ckan/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
312
314
  udata/harvest/backends/ckan/schemas/ckan.py,sha256=59VQoIxPBb5vOHFzzMtdnPcxHL4qNOTkPYa4cqn-7xQ,2353
313
315
  udata/harvest/backends/ckan/schemas/dkan.py,sha256=RyQGPEaKqnunIrr9yApcz7WEfgye0IT1bV85wa2E8Lc,2774
@@ -317,13 +319,13 @@ udata/harvest/tests/person.jsonld,sha256=I7Ynh-PQlNeD51I1LrCgYOEjhL-WBeb65xzIE_s
317
319
  udata/harvest/tests/test_actions.py,sha256=d5TTFTbs4PdBydWICqDtfoeo3zLyzcNDzv4aMH9spxo,25881
318
320
  udata/harvest/tests/test_api.py,sha256=gSuICkPy3KVRUhHAyudXVf_gLwiB7SoriUp3DLXWDdA,21611
319
321
  udata/harvest/tests/test_base_backend.py,sha256=ow8ecGtD836mUqyPWYjkS5nx0STyT5RMLgBdDyOhts4,19233
320
- udata/harvest/tests/test_dcat_backend.py,sha256=8w_wZepgkb0_j9Ah5f4qMwJIpuH7bTqmc4u5MaaP7G4,50551
322
+ udata/harvest/tests/test_dcat_backend.py,sha256=ekr-cgD1HxteYsZe2_iugKxNnKEZF8V-CRe05Frlt_w,50636
321
323
  udata/harvest/tests/test_filters.py,sha256=PT2qopEIoXsqi8MsNDRuhNH7jGXiQo8r0uJrCOUd4aM,2465
322
324
  udata/harvest/tests/test_models.py,sha256=f9NRR2_S4oZFgF8qOumg0vv-lpnEBJbI5vNtcwFdSqM,831
323
325
  udata/harvest/tests/test_notifications.py,sha256=MMzTzkv-GXMNFeOwAi31rdTsAXyLCLOSna41zOtaJG0,816
324
326
  udata/harvest/tests/test_tasks.py,sha256=7wQGhaX7xJEPKGAF7dprIDj2_7Z2tTInzvAd5GiqaN8,681
325
327
  udata/harvest/tests/ckan/conftest.py,sha256=SNIRJ7uh6ssIB56mwIdDgteHKUY040yX4gzaGMREjJw,1893
326
- udata/harvest/tests/ckan/test_ckan_backend.py,sha256=lRtn-wCrOILF8_1-cQ_lfFQavMOT63-K6HKAaDs6uX4,21438
328
+ udata/harvest/tests/ckan/test_ckan_backend.py,sha256=w4kyV-kI3jhqGgfj26Cdbnp-uBNNjX7HV645nEpqhBA,21524
327
329
  udata/harvest/tests/ckan/test_ckan_backend_errors.py,sha256=LbT-jFz9Fs_WECcQxpuOEEBm2FZ9PdqSbGYxMb1X32c,3847
328
330
  udata/harvest/tests/ckan/test_ckan_backend_filters.py,sha256=_cBXkHihCTvL1jsrH6ppfU6KmyfErXVqGplHVgIHMnU,3698
329
331
  udata/harvest/tests/ckan/test_dkan_backend.py,sha256=9Ym7bFLMj6bqbtdGCpDYm7nSwswbYQM3ksljfpi8z_g,2178
@@ -382,7 +384,7 @@ udata/migrations/2024-10-09-remove-extras-harvest.py,sha256=cCuuUMZXcmTVhUle-sdE
382
384
  udata/migrations/2024-10-30-rename-organization-badges.py,sha256=Yu8PTayYY0m4YJJ3W7JLsQwC-PDoC6BELqFfDhG66bE,695
383
385
  udata/migrations/2024-11-19-keep-only-local_authority-if-also-public_service-organization-badges.py,sha256=xFn0nVqAh8Vee9-s8YFZHg5F-kukOr5B4fyz62G40eA,658
384
386
  udata/migrations/2024-12-05-contact-point-is-now-a-list.py,sha256=il2qSFhOTq-YhqhFaq_5OwysUlKXaK_En-qGP6v9rf0,1065
385
- udata/migrations/2025-01-05-dataservices-fields-changes.py,sha256=HlqHg3sG3rk3sYVrOwAlXMNhTmTKd1YT82P-gXOqmZM,4647
387
+ udata/migrations/2025-01-05-dataservices-fields-changes.py,sha256=Pc6vZoMwWuG_vBXL0h77Y_MxppRdzVeDdVtMbGMqXtc,4623
386
388
  udata/migrations/2025-03-20-save-quality-for-datasets.py,sha256=FPTfGVByXSHr18V4RFlktC7t-H-5rgEcZQMTRpMrGqo,607
387
389
  udata/migrations/2025-04-24-topic-featured-default-false.py,sha256=t4OyhehtPQiosKtAo9SWRWm3ObGUHvqD_roXQ34vIH4,369
388
390
  udata/migrations/2025-05-22-purge-duplicate-activities.py,sha256=iemQwEWtbxedtpkeTFIeoNP7WcY7ntnDrjUClPzzWfg,4212
@@ -394,6 +396,7 @@ udata/migrations/2025-07-18-compute-last-update.py,sha256=K3wSSl9oC8TRbHlvgKeekg
394
396
  udata/migrations/2025-07-18-redo-count-discussion.py,sha256=BOFTjf0zq_ahnVlYQC-d8fuoLixxyk2vP6JYJXhmvbs,941
395
397
  udata/migrations/2025-07-22-fix-duplicate-contact-points.py,sha256=ZEw2PX1E3jJiDNWLj6Y52zBAIHS-kZSLjBP6gUmA_ho,1789
396
398
  udata/migrations/2025-07-30-purge-old-harvest-dynamic-fields.py,sha256=ijeu6WvX6etOJrv0cEMCRJzj1pSetBguF-aUB1-2y_0,1017
399
+ udata/migrations/2025-09-04-update-legacy-frequencies.py,sha256=8YAROAHhytf6Kses_54aFscmPNes2aHRYqTwNpawdVk,1693
397
400
  udata/migrations/2025-10-01-delete-orphaned-topic-elements.py,sha256=Mhx5ANOihZL4botxtjvfsll-xKBtkVQBkPcSq0BJ-Ec,788
398
401
  udata/migrations/__init__.py,sha256=RBCBDaTlLjuMs_Qzwji6Z6T4r7FCGXhESKoxQbT5qAA,11221
399
402
  udata/models/__init__.py,sha256=77OriDFm4dJzQDIb-7ADKSkf9GAxkXbMHeWXoYYnTsk,1459
@@ -580,8 +583,6 @@ udata/templates/mail/base.txt,sha256=epaSraWLlrXYEovdVROhxgOAsJmZI6RXxpNwtOX_UI4
580
583
  udata/templates/mail/button.html,sha256=FdCKFJYclhjDUh7CddHx8qcQjJF_7mF0s7mG_tb9cL8,417
581
584
  udata/templates/mail/discussion_closed.html,sha256=HUhntk-aaUQsBs7ekz9J5j4UrKBeliUygewiBHjNq2s,1211
582
585
  udata/templates/mail/discussion_closed.txt,sha256=gFAwCwGNFKG-12WtvoALQDPuukC0StxEe0T3x3rz0m8,394
583
- udata/templates/mail/frequency_reminder.html,sha256=2z6HJwwa6hiGBb0LohQZ79RjQ27AuxIrls40PKyIQbI,1148
584
- udata/templates/mail/frequency_reminder.txt,sha256=ep64-kn4pD_wrsiLszyfsAygYRf2QIpF_p204Xv69Yg,690
585
586
  udata/templates/mail/inactive_account_deleted.html,sha256=W27Os2tZioe7Ip4ZxHswNq8TAls1U0emZEHK4Qo2Kpc,196
586
587
  udata/templates/mail/inactive_account_deleted.txt,sha256=7-7QU2v4CgoT2Vt8YkEbRsywiM-mAvGvdeB4_OIM2G8,160
587
588
  udata/templates/mail/membership_refused.html,sha256=BI6jwR3NMemxgt4CwKJqeEwNnlVcHmLGp-PD3oUi9Jc,612
@@ -618,8 +619,8 @@ udata/templates/security/email/confirmation_instructions.html,sha256=cF14Rd0SWDK
618
619
  udata/templates/security/email/confirmation_instructions.txt,sha256=dh8NrLwkJw0Vouzc0bAY5AkFyog25lq9A9W9ygQl8AU,159
619
620
  udata/templates/security/email/login_instructions.html,sha256=-R_Xhpwknrtpp0K6PaD52FbE1ioCoe8ZBPW9_WbWA_U,451
620
621
  udata/templates/security/email/login_instructions.txt,sha256=hsl25PKohV0N3h9MZFk1MSlymdxBDbtpFOYOwRbcr2s,156
621
- udata/templates/security/email/reset_instructions.html,sha256=mti9hZT_Fs0k5C_yaL5Ei1lADo7y1I7foHaIEMwCkJQ,643
622
- udata/templates/security/email/reset_instructions.txt,sha256=6QuwhQ_CzOpJhwgOTYroJnpFYMpCycnExj6bRaZmM7o,322
622
+ udata/templates/security/email/reset_instructions.html,sha256=ijP0LddLEvUIaZfzdgMFJOk3kCIRG2qunwF_1Pi1zIw,681
623
+ udata/templates/security/email/reset_instructions.txt,sha256=e0D8RbnaEW8fzG8jsnjZp3NnSSv6AS-_mHYByvzDeTI,360
623
624
  udata/templates/security/email/reset_notice.html,sha256=fmvC-k94Y_74O_Nx02Z_d2dyArkNQmbX9LIYVumaUSM,232
624
625
  udata/templates/security/email/reset_notice.txt,sha256=nhpffZNtcBCwPUCW54GcBORHZI26C1Tcht6ryW9U9Xs,154
625
626
  udata/templates/security/email/welcome.html,sha256=r94FL_luwfgesWYtK87vjTAFjuB-njse6MtaBDAg-dU,565
@@ -637,7 +638,6 @@ udata/tests/test_api_fields.py,sha256=NCUTtOMEaTM5-tK-YUxhjEud2IPIDOHR3vbZWAQdEC
637
638
  udata/tests/test_cors.py,sha256=b_pyxKeIyqhnsXxXryPf4d0V0QxaLQ1P_VjY89Q_j3g,3233
638
639
  udata/tests/test_dcat_commands.py,sha256=fDAnAjkja8AXw_qzaAWnVTgglkBAvK2mjPMHUCtqrrU,919
639
640
  udata/tests/test_discussions.py,sha256=a2yBGfOSm93w8zP2s2gXy51LGniiZ0lbrej0uuXNd2E,47685
640
- udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
641
641
  udata/tests/test_linkchecker.py,sha256=W8jrwKYXM8wWXZFjiaBwpWGRBhZ8bsSHGHzL9voDN7U,10218
642
642
  udata/tests/test_mail.py,sha256=f-8meP9r1Xrz0eOTsvmdynoV9OFHLwwMr7XM5WWv_gk,4182
643
643
  udata/tests/test_migrations.py,sha256=Iq0gt3hjK6ohliIvEpqyt0tYJz0MKIzBg_yfw7dOcHo,15698
@@ -658,7 +658,7 @@ udata/tests/api/test_auth_api.py,sha256=OMRlY0OQt60j5N4A-N3HdWTuffOjRlFHkz5a3jJF
658
658
  udata/tests/api/test_base_api.py,sha256=2w_vz0eEuq3P3aN-ByvxGc3VZAo7XtgatFfcrzf2uEU,2244
659
659
  udata/tests/api/test_contact_points.py,sha256=Sbb486RTN7HVycna_XB60OnURPSNc7xUity26XsYA4k,8766
660
660
  udata/tests/api/test_dataservices_api.py,sha256=vQZc8gey1zTckaWuqodXHJ95jp0O5ksVLllE1n3iqoE,31496
661
- udata/tests/api/test_datasets_api.py,sha256=K4X2jXmmCF2BLz9oQmJE1PtQkpghFfzx2cb67MA5cn0,102546
661
+ udata/tests/api/test_datasets_api.py,sha256=P_5e6Y2p5q5K4ILJ44uYNDD3FmSL0qYAMg_xZwoiCzc,104159
662
662
  udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
663
663
  udata/tests/api/test_follow_api.py,sha256=4nFXG5pZ_Hf2PJ4KEdHJX_uggjc9RpB8v0fidkAcw9I,5792
664
664
  udata/tests/api/test_me_api.py,sha256=YPd8zmR3zwJKtpSqz8nY1nOOMyXs66INeBwyhg5D0Us,13846
@@ -688,8 +688,8 @@ udata/tests/dataset/test_csv_adapter.py,sha256=Qy3dKg7OVz7paEOrRzHe-plBGsZgkalfW
688
688
  udata/tests/dataset/test_dataset_actions.py,sha256=bgDjVYjOvu3sX_FCTCzf2snZYSprsqor2nAhIVuokSs,722
689
689
  udata/tests/dataset/test_dataset_commands.py,sha256=zMPJG2wYwKBee2zI65kmboxf59Zqa84DDjT8V5wj9uo,801
690
690
  udata/tests/dataset/test_dataset_events.py,sha256=hlrpoOiBbnX_COUI9Pzdqlp45GZZDqu5piwupbnPiTI,3601
691
- udata/tests/dataset/test_dataset_model.py,sha256=OLVj4kIVl8Of7IQgsEE8VIe98ZD4QhMqbPIujvkd_8E,35472
692
- udata/tests/dataset/test_dataset_rdf.py,sha256=74kypD4pAEBTqsQBpEbgMIF65Aw62U1lORscLK-0iDw,45841
691
+ udata/tests/dataset/test_dataset_model.py,sha256=plzvIaEqvxQpcYS8YlDBltjuTgtT7xgNVEzkmlPZBC0,33766
692
+ udata/tests/dataset/test_dataset_rdf.py,sha256=8Gv_v1nRIvopfKJ2R7KAwv63GnzGXr_yFR-qQ1_Kwx8,45945
693
693
  udata/tests/dataset/test_dataset_recommendations.py,sha256=K52HXGXi9DuUSiSRQWpqTrsFCkYbv7K3upNp0fFp5v8,7068
694
694
  udata/tests/dataset/test_dataset_tasks.py,sha256=SwSv-hDSXgs1xXtvtaePQ6fa6_d4ZpHo-oahDRinvPg,3271
695
695
  udata/tests/dataset/test_resource_preview.py,sha256=AxSF8cnG6bhy2pz9Fi3PfEzdLlNhZ0xrp9dr6yrt31A,2051
@@ -751,7 +751,7 @@ udata/tests/workers/test_jobs_commands.py,sha256=tGJp9zRxKaGszNhKAVe-xY86v6NhLmF
751
751
  udata/tests/workers/test_tasks_routing.py,sha256=m7Zu9X7GW3oKkSDcHM-dC20Vba3Fruui44bMBVU1dcc,2228
752
752
  udata/tests/workers/test_workers_api.py,sha256=x8EkULR9G5TKl5WwjdVwfFEttbudpiWIYN2umETrCzY,8805
753
753
  udata/tests/workers/test_workers_helpers.py,sha256=_983ChRxas3gsjykaEpXWQUbk2qTMJgeFZpIAHTuhLk,647
754
- udata/translations/udata.pot,sha256=mdcYOb4Rfhc9QmrTdag-or1Jhku-RSu69LgY9KLCyY8,41843
754
+ udata/translations/udata.pot,sha256=zrIXqLMqI1bOfu8LI-7isMPdWJylcpq459pYmjgZOrY,43336
755
755
  udata/translations/ar/LC_MESSAGES/udata.mo,sha256=FVeIEIB96zq7LinTAM6pic31XgYQxYystYohOEz3Wk0,12512
756
756
  udata/translations/ar/LC_MESSAGES/udata.po,sha256=KP-dbL_etPy22mRF3NPBZ86NJxERiL0a6IbHvy3a2cE,46091
757
757
  udata/translations/de/LC_MESSAGES/udata.mo,sha256=JR1CmYE46yXQcp3EoETqSZe4ut59-u_KgkBr24PBhAw,15180
@@ -766,9 +766,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=U0abG-nBwCIoYxRZNsc4KOLeIRSqTV
766
766
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=eCG35rMzYLHXyLbsnLSexS1g0N_K-WpNHqrt_8y6I4E,48590
767
767
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=IBcCAdmcvkeK7ZeRBNRI-wJ0jzWNM0eXM5VXAc1frWI,28692
768
768
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=yFxHEEB4behNwQ7JnyoYheiCKLNnMS_NV4guzgyzWcE,55332
769
- udata-11.1.2.dev7.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
770
- udata-11.1.2.dev7.dist-info/METADATA,sha256=aT2BW8U7BbL6ddAAw9OiOqkWBwxXcb_-11_rcllWBQ4,6723
771
- udata-11.1.2.dev7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
772
- udata-11.1.2.dev7.dist-info/entry_points.txt,sha256=v2u12qO11i2lyLNIp136WmLJ-NHT-Kew3Duu8J-AXPM,614
773
- udata-11.1.2.dev7.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
774
- udata-11.1.2.dev7.dist-info/RECORD,,
769
+ udata-11.1.2.dev11.dist-info/licenses/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
770
+ udata-11.1.2.dev11.dist-info/METADATA,sha256=EmwWt1Tei8nbpl6BAIXwl-RORx29XEvd8kJfpKy7qAY,6675
771
+ udata-11.1.2.dev11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
772
+ udata-11.1.2.dev11.dist-info/entry_points.txt,sha256=v2u12qO11i2lyLNIp136WmLJ-NHT-Kew3Duu8J-AXPM,614
773
+ udata-11.1.2.dev11.dist-info/top_level.txt,sha256=EF6CE6YSHd_og-8LCEA4q25ALUpWVe8D0okOLdMAE3A,6
774
+ udata-11.1.2.dev11.dist-info/RECORD,,
@@ -1,34 +0,0 @@
1
- {% extends 'mail/base.html' %}
2
- {% from 'mail/button.html' import mail_button %}
3
-
4
- {% block body %}
5
- <p style="margin: 0;padding: 0;">
6
- {{ _('Some of your datasets need to be updated according to the frequency you set:') }}
7
- </p>
8
- <br/>
9
-
10
- {% for dataset in datasets %}
11
- <p style="margin: 0;padding: 0;"><b>
12
- {{ _('Dataset "%(dataset_title)s" last update is on %(published_date)s.',
13
- dataset_title=dataset.title,
14
- published_date=dataset.last_update.strftime('%d/%m/%Y')) }}
15
- </b></p>
16
- <p style="margin: 0;padding: 0;">
17
- {{ _('Given the set frequency (%(dataset_frequency)s) update was due %(due_update_days)s days ago.',
18
- dataset_frequency=dataset.frequency_str,
19
- due_update_days=dataset.outdated.days) }}
20
- </p>
21
- <table width="100%" border="0" cellspacing="0" cellpadding="0">
22
- <tr>
23
- <td align="center">
24
- {{ mail_button(
25
- _('Update the dataset and associated resources'),
26
- cdata_url('/admin/datasets/' ~ dataset.id ~ '/')
27
- ) }}
28
- </td>
29
- </tr>
30
- </table>
31
- <br/>
32
- <br/>
33
- {% endfor %}
34
- {% endblock %}
@@ -1,18 +0,0 @@
1
- {% extends 'mail/base.txt' %}
2
-
3
- {% block body %}
4
- {{ _('Some of your datasets need to be updated according to the frequency you set:') }}
5
-
6
- {% for dataset in datasets %}
7
- * {{ _('Dataset "%(dataset_title)s" last update is on %(published_date)s.',
8
- dataset_title=dataset.title,
9
- published_date=dataset.last_update.strftime('%d/%m/%Y')) }}
10
- {{ _('Given the set frequency (%(dataset_frequency)s) update was due %(due_update_days)s days ago.',
11
- dataset_frequency=dataset.frequency_str,
12
- due_update_days=dataset.outdated.days) }}
13
- {{ _('You can update the dataset and associated resources at:') }}
14
- {{ cdata_url('/admin/datasets/' ~ dataset.id ~ '/') }}
15
-
16
- {% endfor %}
17
-
18
- {% endblock %}
udata/tests/test_i18n.py DELETED
@@ -1,93 +0,0 @@
1
- from flask import g, render_template_string, url_for
2
- from werkzeug.routing import BuildError
3
-
4
- from udata.core.user.factories import UserFactory
5
- from udata.i18n import I18nBlueprint, language
6
-
7
- from . import DBTestMixin, TestCase, WebTestMixin
8
-
9
- bp = I18nBlueprint("i18nbp", __name__, static_folder="static")
10
-
11
-
12
- @bp.route("/lang/<msg>/")
13
- def lang(msg):
14
- return g.lang_code
15
-
16
-
17
- @bp.route("/hardcoded/")
18
- def hardcoded():
19
- out = g.lang_code + "-"
20
- with language("fr"):
21
- out += g.lang_code
22
- return out
23
-
24
-
25
- @bp.route("/not-localized/", localize=False)
26
- def not_localized():
27
- out = g.lang_code + "-"
28
- with language("fr"):
29
- out += g.lang_code
30
- return out
31
-
32
-
33
- class I18nBlueprintTest(WebTestMixin, DBTestMixin, TestCase):
34
- def create_app(self):
35
- app = super(I18nBlueprintTest, self).create_app()
36
- app.config["DEFAULT_LANGUAGE"] = "en"
37
- app.config["LANGUAGES"] = {
38
- "en": "English",
39
- "fr": "Français",
40
- }
41
- app.register_blueprint(bp)
42
- return app
43
-
44
- def test_lang_inserted_url_for(self):
45
- self.assertEqual(url_for("i18nbp.lang", msg="test"), "/en/lang/test/")
46
-
47
- def test_redirect_url_for(self):
48
- self.assertEqual(url_for("i18nbp.lang_redirect", msg="test"), "/lang/test/")
49
-
50
- def test_lang_ignored_for_static(self):
51
- self.assertEqual(url_for("i18nbp.static", filename="test.jpg"), "/static/test.jpg")
52
- with self.assertRaises(BuildError):
53
- url_for("i18nbp.static_redirect", filename="test.jpg")
54
-
55
- def test_redirect_on_missing_lang(self):
56
- response = self.get("/lang/test/?q=test")
57
- self.assertRedirects(response, "/en/lang/test/?q=test")
58
-
59
- def test_do_not_redirect_and_set_lang(self):
60
- self.assertEqual(self.get("/fr/lang/test/").data, b"fr")
61
- self.assertEqual(self.get("/en/lang/test/").data, b"en")
62
-
63
- def test_redirect_on_default_lang_for_unknown_lang(self):
64
- self.assertRedirects(self.get("/sk/lang/test/"), "/en/lang/test/")
65
-
66
- def test_404_on_default_lang_for_unknown_lang(self):
67
- self.assert404(self.get("/sk/not-found/"))
68
-
69
- def test_language_contact_manager(self):
70
- self.assertEqual(self.get("/fr/hardcoded/").data, b"fr-fr")
71
- self.assertEqual(self.get("/en/hardcoded/").data, b"en-fr")
72
-
73
- def test_redirect_user_prefered_lang(self):
74
- self.login(UserFactory(prefered_language="fr"))
75
-
76
- response = self.get("/lang/test/?q=test")
77
- self.assertRedirects(response, "/fr/lang/test/?q=test")
78
-
79
- def test_lang_ignored_for_localize_false(self):
80
- url = url_for("i18nbp.not_localized")
81
- self.assertEqual(url, "/not-localized/")
82
-
83
- def test_localized_url_redirect_for_localize_false(self):
84
- url = url_for("i18nbp.not_localized_redirect")
85
- self.assertEqual(url, "/en/not-localized/")
86
-
87
- response = self.get(url)
88
- self.assertRedirects(response, "/not-localized/")
89
-
90
- def test_render_template_translation(self):
91
- """It should render the dataset page"""
92
- self.app.config["DEFAULT_LANGUAGE"] = "fr"
93
- self.assertEqual("Bienvenue", render_template_string('{{ _("Welcome") }}'))