umap-project 2.8.1__py3-none-any.whl → 2.9.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 umap-project might be problematic. Click here for more details.

Files changed (262) hide show
  1. umap/__init__.py +1 -1
  2. umap/admin.py +15 -2
  3. umap/asgi.py +12 -7
  4. umap/context_processors.py +1 -0
  5. umap/locale/br/LC_MESSAGES/django.mo +0 -0
  6. umap/locale/br/LC_MESSAGES/django.po +111 -67
  7. umap/locale/cs_CZ/LC_MESSAGES/django.mo +0 -0
  8. umap/locale/cs_CZ/LC_MESSAGES/django.po +110 -66
  9. umap/locale/el/LC_MESSAGES/django.mo +0 -0
  10. umap/locale/el/LC_MESSAGES/django.po +129 -85
  11. umap/locale/en/LC_MESSAGES/django.po +103 -60
  12. umap/locale/es/LC_MESSAGES/django.mo +0 -0
  13. umap/locale/es/LC_MESSAGES/django.po +114 -69
  14. umap/locale/fr/LC_MESSAGES/django.mo +0 -0
  15. umap/locale/fr/LC_MESSAGES/django.po +105 -61
  16. umap/locale/gl/LC_MESSAGES/django.mo +0 -0
  17. umap/locale/gl/LC_MESSAGES/django.po +216 -171
  18. umap/locale/hu/LC_MESSAGES/django.mo +0 -0
  19. umap/locale/hu/LC_MESSAGES/django.po +10 -10
  20. umap/locale/it/LC_MESSAGES/django.mo +0 -0
  21. umap/locale/it/LC_MESSAGES/django.po +142 -98
  22. umap/locale/nl/LC_MESSAGES/django.mo +0 -0
  23. umap/locale/nl/LC_MESSAGES/django.po +196 -151
  24. umap/locale/pt/LC_MESSAGES/django.mo +0 -0
  25. umap/locale/pt/LC_MESSAGES/django.po +115 -71
  26. umap/locale/zh_TW/LC_MESSAGES/django.mo +0 -0
  27. umap/locale/zh_TW/LC_MESSAGES/django.po +109 -65
  28. umap/management/commands/empty_trash.py +12 -1
  29. umap/migrations/0026_datalayer_modified_at_datalayer_share_status.py +26 -0
  30. umap/models.py +43 -13
  31. umap/settings/base.py +5 -2
  32. umap/static/umap/base.css +5 -2
  33. umap/static/umap/content.css +2 -22
  34. umap/static/umap/css/bar.css +39 -10
  35. umap/static/umap/css/contextmenu.css +14 -2
  36. umap/static/umap/css/form.css +33 -39
  37. umap/static/umap/css/icon.css +47 -5
  38. umap/static/umap/css/panel.css +20 -2
  39. umap/static/umap/css/popup.css +0 -1
  40. umap/static/umap/css/tooltip.css +33 -31
  41. umap/static/umap/img/16-white.svg +5 -3
  42. umap/static/umap/img/16.svg +1 -1
  43. umap/static/umap/img/24-white.svg +17 -16
  44. umap/static/umap/img/24.svg +29 -18
  45. umap/static/umap/img/providers/bitbucket.png +0 -0
  46. umap/static/umap/img/providers/github.png +0 -0
  47. umap/static/umap/img/providers/keycloak.png +0 -0
  48. umap/static/umap/img/providers/openstreetmap-oauth2.png +0 -0
  49. umap/static/umap/img/providers/twitter-oauth2.png +0 -0
  50. umap/static/umap/img/source/16-white.svg +6 -4
  51. umap/static/umap/img/source/16.svg +1 -1
  52. umap/static/umap/img/source/24-white.svg +20 -18
  53. umap/static/umap/img/source/24.svg +30 -19
  54. umap/static/umap/js/components/alerts/alert.js +4 -1
  55. umap/static/umap/js/modules/browser.js +8 -8
  56. umap/static/umap/js/modules/caption.js +30 -7
  57. umap/static/umap/js/modules/data/features.js +101 -56
  58. umap/static/umap/js/modules/data/layer.js +108 -83
  59. umap/static/umap/js/modules/form/builder.js +242 -0
  60. umap/static/umap/js/modules/form/fields.js +1346 -0
  61. umap/static/umap/js/modules/formatter.js +9 -8
  62. umap/static/umap/js/modules/help.js +20 -24
  63. umap/static/umap/js/modules/importer.js +6 -3
  64. umap/static/umap/js/modules/permissions.js +11 -6
  65. umap/static/umap/js/modules/rendering/icon.js +5 -1
  66. umap/static/umap/js/modules/rendering/layers/classified.js +12 -8
  67. umap/static/umap/js/modules/rendering/layers/cluster.js +11 -1
  68. umap/static/umap/js/modules/rendering/map.js +1 -23
  69. umap/static/umap/js/modules/rendering/ui.js +20 -38
  70. umap/static/umap/js/modules/rules.js +3 -2
  71. umap/static/umap/js/modules/saving.js +5 -0
  72. umap/static/umap/js/modules/schema.js +8 -6
  73. umap/static/umap/js/modules/share.js +3 -3
  74. umap/static/umap/js/modules/sync/engine.js +56 -26
  75. umap/static/umap/js/modules/sync/updaters.js +15 -6
  76. umap/static/umap/js/modules/sync/websocket.js +50 -37
  77. umap/static/umap/js/modules/tableeditor.js +3 -2
  78. umap/static/umap/js/modules/ui/bar.js +101 -9
  79. umap/static/umap/js/modules/ui/base.js +7 -24
  80. umap/static/umap/js/modules/ui/contextmenu.js +9 -2
  81. umap/static/umap/js/modules/ui/panel.js +5 -1
  82. umap/static/umap/js/modules/ui/tooltip.js +19 -11
  83. umap/static/umap/js/modules/umap.js +124 -71
  84. umap/static/umap/js/modules/utils.js +196 -12
  85. umap/static/umap/js/umap.controls.js +12 -354
  86. umap/static/umap/locale/am_ET.js +17 -5
  87. umap/static/umap/locale/am_ET.json +17 -5
  88. umap/static/umap/locale/ar.js +17 -5
  89. umap/static/umap/locale/ar.json +17 -5
  90. umap/static/umap/locale/ast.js +17 -5
  91. umap/static/umap/locale/ast.json +17 -5
  92. umap/static/umap/locale/bg.js +17 -5
  93. umap/static/umap/locale/bg.json +17 -5
  94. umap/static/umap/locale/br.js +33 -20
  95. umap/static/umap/locale/br.json +33 -20
  96. umap/static/umap/locale/ca.js +17 -5
  97. umap/static/umap/locale/ca.json +17 -5
  98. umap/static/umap/locale/cs_CZ.js +15 -5
  99. umap/static/umap/locale/cs_CZ.json +15 -5
  100. umap/static/umap/locale/da.js +17 -5
  101. umap/static/umap/locale/da.json +17 -5
  102. umap/static/umap/locale/de.js +17 -5
  103. umap/static/umap/locale/de.json +17 -5
  104. umap/static/umap/locale/el.js +63 -51
  105. umap/static/umap/locale/el.json +63 -51
  106. umap/static/umap/locale/en.js +15 -5
  107. umap/static/umap/locale/en.json +15 -5
  108. umap/static/umap/locale/en_US.json +17 -5
  109. umap/static/umap/locale/es.js +25 -13
  110. umap/static/umap/locale/es.json +25 -13
  111. umap/static/umap/locale/et.js +17 -5
  112. umap/static/umap/locale/et.json +17 -5
  113. umap/static/umap/locale/eu.js +17 -5
  114. umap/static/umap/locale/eu.json +17 -5
  115. umap/static/umap/locale/fa_IR.js +17 -5
  116. umap/static/umap/locale/fa_IR.json +17 -5
  117. umap/static/umap/locale/fi.js +17 -5
  118. umap/static/umap/locale/fi.json +17 -5
  119. umap/static/umap/locale/fr.js +16 -6
  120. umap/static/umap/locale/fr.json +16 -6
  121. umap/static/umap/locale/gl.js +357 -345
  122. umap/static/umap/locale/gl.json +357 -345
  123. umap/static/umap/locale/he.js +17 -5
  124. umap/static/umap/locale/he.json +17 -5
  125. umap/static/umap/locale/hr.js +17 -5
  126. umap/static/umap/locale/hr.json +17 -5
  127. umap/static/umap/locale/hu.js +39 -27
  128. umap/static/umap/locale/hu.json +39 -27
  129. umap/static/umap/locale/id.js +17 -5
  130. umap/static/umap/locale/id.json +17 -5
  131. umap/static/umap/locale/is.js +17 -5
  132. umap/static/umap/locale/is.json +17 -5
  133. umap/static/umap/locale/it.js +125 -113
  134. umap/static/umap/locale/it.json +125 -113
  135. umap/static/umap/locale/ja.js +17 -5
  136. umap/static/umap/locale/ja.json +17 -5
  137. umap/static/umap/locale/ko.js +17 -5
  138. umap/static/umap/locale/ko.json +17 -5
  139. umap/static/umap/locale/lt.js +17 -5
  140. umap/static/umap/locale/lt.json +17 -5
  141. umap/static/umap/locale/ms.js +17 -5
  142. umap/static/umap/locale/ms.json +17 -5
  143. umap/static/umap/locale/nl.js +132 -119
  144. umap/static/umap/locale/nl.json +132 -119
  145. umap/static/umap/locale/no.js +17 -5
  146. umap/static/umap/locale/no.json +17 -5
  147. umap/static/umap/locale/pl.js +17 -5
  148. umap/static/umap/locale/pl.json +17 -5
  149. umap/static/umap/locale/pl_PL.json +17 -5
  150. umap/static/umap/locale/pt.js +38 -25
  151. umap/static/umap/locale/pt.json +38 -25
  152. umap/static/umap/locale/pt_BR.js +17 -5
  153. umap/static/umap/locale/pt_BR.json +17 -5
  154. umap/static/umap/locale/pt_PT.js +17 -5
  155. umap/static/umap/locale/pt_PT.json +17 -5
  156. umap/static/umap/locale/ro.js +17 -5
  157. umap/static/umap/locale/ro.json +17 -5
  158. umap/static/umap/locale/ru.js +17 -5
  159. umap/static/umap/locale/ru.json +17 -5
  160. umap/static/umap/locale/sk_SK.js +17 -5
  161. umap/static/umap/locale/sk_SK.json +17 -5
  162. umap/static/umap/locale/sl.js +17 -5
  163. umap/static/umap/locale/sl.json +17 -5
  164. umap/static/umap/locale/sr.js +17 -5
  165. umap/static/umap/locale/sr.json +17 -5
  166. umap/static/umap/locale/sv.js +17 -5
  167. umap/static/umap/locale/sv.json +17 -5
  168. umap/static/umap/locale/th_TH.js +17 -5
  169. umap/static/umap/locale/th_TH.json +17 -5
  170. umap/static/umap/locale/tr.js +17 -5
  171. umap/static/umap/locale/tr.json +17 -5
  172. umap/static/umap/locale/uk_UA.js +17 -5
  173. umap/static/umap/locale/uk_UA.json +17 -5
  174. umap/static/umap/locale/vi.js +17 -5
  175. umap/static/umap/locale/vi.json +17 -5
  176. umap/static/umap/locale/vi_VN.json +17 -5
  177. umap/static/umap/locale/zh.js +17 -5
  178. umap/static/umap/locale/zh.json +17 -5
  179. umap/static/umap/locale/zh_CN.json +17 -5
  180. umap/static/umap/locale/zh_TW.Big5.json +17 -5
  181. umap/static/umap/locale/zh_TW.js +15 -5
  182. umap/static/umap/locale/zh_TW.json +15 -5
  183. umap/static/umap/map.css +29 -76
  184. umap/static/umap/nav.css +6 -3
  185. umap/static/umap/unittests/utils.js +14 -0
  186. umap/static/umap/vars.css +3 -0
  187. umap/static/umap/vendors/dompurify/purify.es.js +138 -354
  188. umap/static/umap/vendors/dompurify/purify.es.mjs.map +1 -1
  189. umap/static/umap/vendors/editable/Leaflet.Editable.js +1 -0
  190. umap/sync/__init__.py +0 -0
  191. umap/sync/app.py +187 -0
  192. umap/sync/payloads.py +56 -0
  193. umap/templates/auth/user_detail.html +4 -0
  194. umap/templates/auth/user_form.html +9 -6
  195. umap/templates/auth/user_stars.html +4 -0
  196. umap/templates/base.html +1 -1
  197. umap/templates/registration/login.html +2 -5
  198. umap/templates/umap/about.html +5 -0
  199. umap/templates/umap/about_summary.html +2 -2
  200. umap/templates/umap/components/provider.html +8 -0
  201. umap/templates/umap/content_footer.html +1 -1
  202. umap/templates/umap/css.html +0 -2
  203. umap/templates/umap/js.html +0 -4
  204. umap/templates/umap/map_detail.html +1 -1
  205. umap/templates/umap/password_change.html +4 -0
  206. umap/templates/umap/password_change_done.html +4 -0
  207. umap/templates/umap/search.html +4 -0
  208. umap/templates/umap/search_bar.html +1 -0
  209. umap/templates/umap/team_confirm_delete.html +4 -0
  210. umap/templates/umap/team_detail.html +4 -0
  211. umap/templates/umap/team_form.html +4 -0
  212. umap/templates/umap/user_dashboard.html +1 -1
  213. umap/templates/umap/user_teams.html +4 -0
  214. umap/tests/base.py +3 -1
  215. umap/tests/integration/conftest.py +16 -23
  216. umap/tests/integration/test_anonymous_owned_map.py +2 -2
  217. umap/tests/integration/test_basics.py +4 -7
  218. umap/tests/integration/test_caption.py +1 -0
  219. umap/tests/integration/test_categorized_layer.py +4 -8
  220. umap/tests/integration/test_choropleth.py +1 -1
  221. umap/tests/integration/test_conditional_rules.py +3 -3
  222. umap/tests/integration/test_draw_polygon.py +14 -22
  223. umap/tests/integration/test_draw_polyline.py +6 -14
  224. umap/tests/integration/test_edit_datalayer.py +11 -11
  225. umap/tests/integration/test_edit_map.py +30 -4
  226. umap/tests/integration/test_edit_marker.py +5 -5
  227. umap/tests/integration/test_edit_polygon.py +6 -6
  228. umap/tests/integration/test_features_id_generation.py +2 -6
  229. umap/tests/integration/test_import.py +115 -29
  230. umap/tests/integration/test_optimistic_merge.py +1 -0
  231. umap/tests/integration/test_owned_map.py +1 -1
  232. umap/tests/integration/test_picto.py +8 -8
  233. umap/tests/integration/test_save.py +3 -2
  234. umap/tests/integration/test_star.py +13 -9
  235. umap/tests/integration/test_tableeditor.py +8 -7
  236. umap/tests/integration/test_view_marker.py +10 -0
  237. umap/tests/integration/test_websocket_sync.py +239 -64
  238. umap/tests/settings.py +2 -0
  239. umap/tests/test_datalayer.py +2 -3
  240. umap/tests/test_datalayer_views.py +20 -1
  241. umap/tests/test_empty_trash.py +10 -3
  242. umap/tests/test_map_views.py +11 -0
  243. umap/utils.py +27 -11
  244. umap/views.py +37 -6
  245. {umap_project-2.8.1.dist-info → umap_project-2.9.0.dist-info}/METADATA +22 -22
  246. {umap_project-2.8.1.dist-info → umap_project-2.9.0.dist-info}/RECORD +249 -250
  247. {umap_project-2.8.1.dist-info → umap_project-2.9.0.dist-info}/WHEEL +1 -1
  248. umap/management/commands/run_websocket_server.py +0 -23
  249. umap/settings/local_s3.py +0 -45
  250. umap/static/umap/bitbucket.png +0 -0
  251. umap/static/umap/github.png +0 -0
  252. umap/static/umap/js/umap.forms.js +0 -1242
  253. umap/static/umap/keycloak.png +0 -0
  254. umap/static/umap/openstreetmap.png +0 -0
  255. umap/static/umap/twitter.png +0 -0
  256. umap/static/umap/vendors/formbuilder/Leaflet.FormBuilder.js +0 -468
  257. umap/static/umap/vendors/toolbar/leaflet.toolbar.css +0 -1
  258. umap/static/umap/vendors/toolbar/leaflet.toolbar.js +0 -1
  259. umap/tests/test_websocket_server.py +0 -22
  260. umap/websocket_server.py +0 -202
  261. {umap_project-2.8.1.dist-info → umap_project-2.9.0.dist-info}/entry_points.txt +0 -0
  262. {umap_project-2.8.1.dist-info → umap_project-2.9.0.dist-info}/licenses/LICENSE +0 -0
@@ -810,6 +810,17 @@ def test_oembed_shared_status_map(client, map, datalayer, share_status):
810
810
  assert response.status_code == 403
811
811
 
812
812
 
813
+ def test_download_does_not_include_delete_datalayers(client, map, datalayer):
814
+ datalayer.share_status = DataLayer.DELETED
815
+ datalayer.save()
816
+ url = reverse("map_download", args=(map.pk,))
817
+ response = client.get(url)
818
+ assert response.status_code == 200
819
+ # Test response is a json
820
+ j = json.loads(response.content.decode())
821
+ assert j["layers"] == []
822
+
823
+
813
824
  def test_oembed_no_url_map(client, map, datalayer):
814
825
  url = reverse("map_oembed")
815
826
  response = client.get(url)
umap/utils.py CHANGED
@@ -7,23 +7,39 @@ from django.core.serializers.json import DjangoJSONEncoder
7
7
  from django.urls import URLPattern, URLResolver, get_resolver
8
8
 
9
9
 
10
- def _urls_for_js(urls=None):
10
+ def _get_url_names(module):
11
+ def _get_names(resolver):
12
+ names = []
13
+ for pattern in resolver.url_patterns:
14
+ if getattr(pattern, "url_patterns", None):
15
+ # Do not add "admin" and other third party apps urls.
16
+ if not pattern.namespace:
17
+ names.extend(_get_names(pattern))
18
+ elif getattr(pattern, "name", None):
19
+ names.append(pattern.name)
20
+ return names
21
+
22
+ return _get_names(get_resolver(module))
23
+
24
+
25
+ def _urls_for_js():
11
26
  """
12
27
  Return templated URLs prepared for javascript.
13
28
  """
14
- if urls is None:
15
- # prevent circular import
16
- from .urls import i18n_urls, urlpatterns
17
-
18
- urls = [
19
- url.name for url in urlpatterns + i18n_urls if getattr(url, "name", None)
20
- ]
21
- urls = dict(zip(urls, [get_uri_template(url) for url in urls]))
29
+ urls = {}
30
+ modules = ["umap.urls"]
31
+ if settings.WEBSOCKET_ENABLED:
32
+ modules.append("umap.sync.app")
33
+ for module in modules:
34
+ names = _get_url_names(module)
35
+ urls.update(
36
+ dict(zip(names, [get_uri_template(url, module=module) for url in names]))
37
+ )
22
38
  urls.update(getattr(settings, "UMAP_EXTRA_URLS", {}))
23
39
  return urls
24
40
 
25
41
 
26
- def get_uri_template(urlname, args=None, prefix=""):
42
+ def get_uri_template(urlname, args=None, prefix="", module=None):
27
43
  """
28
44
  Utility function to return an URI Template from a named URL in django
29
45
  Copied from django-digitalpaper.
@@ -45,7 +61,7 @@ def get_uri_template(urlname, args=None, prefix=""):
45
61
  paths = template % dict([p, "{%s}" % p] for p in args)
46
62
  return "%s/%s" % (prefix, paths)
47
63
 
48
- resolver = get_resolver(None)
64
+ resolver = get_resolver(module)
49
65
  parts = urlname.split(":")
50
66
  if len(parts) > 1 and parts[0] in resolver.namespace_dict:
51
67
  namespace = parts[0]
umap/views.py CHANGED
@@ -15,7 +15,7 @@ from urllib.request import Request, build_opener
15
15
 
16
16
  from django.conf import settings
17
17
  from django.contrib import messages
18
- from django.contrib.auth import get_user_model
18
+ from django.contrib.auth import BACKEND_SESSION_KEY, get_user_model
19
19
  from django.contrib.auth import logout as do_logout
20
20
  from django.contrib.gis.measure import D
21
21
  from django.contrib.postgres.search import SearchQuery, SearchVector
@@ -605,15 +605,22 @@ class MapDetailMixin(SessionMixin):
605
605
  "schema": Map.extra_schema,
606
606
  "id": self.get_id(),
607
607
  "starred": self.is_starred(),
608
+ "stars": self.stars(),
608
609
  "licences": dict((l.name, l.json) for l in Licence.objects.all()),
609
610
  "umap_version": VERSION,
610
611
  "featuresHaveOwner": settings.UMAP_DEFAULT_FEATURES_HAVE_OWNERS,
611
612
  "websocketEnabled": settings.WEBSOCKET_ENABLED,
612
- "websocketURI": settings.WEBSOCKET_FRONT_URI,
613
613
  "importers": settings.UMAP_IMPORTERS,
614
614
  "defaultLabelKeys": settings.UMAP_LABEL_KEYS,
615
615
  }
616
616
  created = bool(getattr(self, "object", None))
617
+ if created:
618
+ properties.update(
619
+ {
620
+ "created_at": self.object.created_at,
621
+ "modified_at": self.object.modified_at,
622
+ }
623
+ )
617
624
  if (created and self.object.owner) or (not created and not user.is_anonymous):
618
625
  edit_statuses = Map.EDIT_STATUS
619
626
  datalayer_statuses = DataLayer.EDIT_STATUS
@@ -671,6 +678,9 @@ class MapDetailMixin(SessionMixin):
671
678
  def is_starred(self):
672
679
  return False
673
680
 
681
+ def stars(self):
682
+ return 0
683
+
674
684
  def get_geojson(self):
675
685
  return {
676
686
  "geometry": {
@@ -732,14 +742,14 @@ class MapView(MapDetailMixin, PermissionsMixin, DetailView):
732
742
  def get_datalayers(self):
733
743
  # When initializing datalayers from map, we cannot get the reference version
734
744
  # the normal way, which is from the header X-Reference-Version
735
- return [dl.metadata(self.request) for dl in self.object.datalayer_set.all()]
745
+ return [dl.metadata(self.request) for dl in self.object.datalayers]
736
746
 
737
747
  @property
738
748
  def edit_mode(self):
739
749
  edit_mode = "disabled"
740
750
  if self.object.can_edit(self.request):
741
751
  edit_mode = "advanced"
742
- elif any(d.can_edit(self.request) for d in self.object.datalayer_set.all()):
752
+ elif any(d.can_edit(self.request) for d in self.object.datalayers):
743
753
  edit_mode = "simple"
744
754
  return edit_mode
745
755
 
@@ -773,6 +783,9 @@ class MapView(MapDetailMixin, PermissionsMixin, DetailView):
773
783
  return False
774
784
  return Star.objects.filter(by=user, map=self.object).exists()
775
785
 
786
+ def stars(self):
787
+ return Star.objects.filter(map=self.object).count()
788
+
776
789
 
777
790
  class MapDownload(DetailView):
778
791
  model = Map
@@ -1074,7 +1087,9 @@ class ToggleMapStarStatus(View):
1074
1087
  else:
1075
1088
  Star.objects.create(map=map_inst, by=self.request.user)
1076
1089
  status = True
1077
- return simple_json_response(starred=status)
1090
+ return simple_json_response(
1091
+ starred=status, stars=Star.objects.filter(map=map_inst).count()
1092
+ )
1078
1093
 
1079
1094
 
1080
1095
  class MapShortUrl(RedirectView):
@@ -1293,6 +1308,7 @@ class DataLayerUpdate(FormLessEditMixin, UpdateView):
1293
1308
 
1294
1309
  def form_valid(self, form):
1295
1310
  self.object = form.save()
1311
+ self.object.map.save(update_fields=["modified_at"])
1296
1312
  data = {**self.object.metadata(self.request)}
1297
1313
  if self.request.session.get("needs_reload"):
1298
1314
  data["geojson"] = json.loads(self.object.geojson.read().decode())
@@ -1309,7 +1325,7 @@ class DataLayerDelete(DeleteView):
1309
1325
  self.object = self.get_object()
1310
1326
  if self.object.map != self.kwargs["map_inst"]:
1311
1327
  return HttpResponseForbidden()
1312
- self.object.delete()
1328
+ self.object.move_to_trash()
1313
1329
  return simple_json_response(info=_("Layer successfully deleted."))
1314
1330
 
1315
1331
 
@@ -1403,3 +1419,18 @@ class LoginPopupEnd(TemplateView):
1403
1419
  """
1404
1420
 
1405
1421
  template_name = "umap/login_popup_end.html"
1422
+
1423
+ def get(self, *args, **kwargs):
1424
+ backend = self.request.session[BACKEND_SESSION_KEY]
1425
+ if backend in settings.DEPRECATED_AUTHENTICATION_BACKENDS:
1426
+ name = backend.split(".")[-1]
1427
+ messages.error(
1428
+ self.request,
1429
+ _(
1430
+ "Using “%(name)s” to authenticate is deprecated. "
1431
+ "Please configure another provider in your profile page."
1432
+ )
1433
+ % {"name": name},
1434
+ )
1435
+ return HttpResponseRedirect(reverse("user_profile"))
1436
+ return super().get(*args, **kwargs)
@@ -1,9 +1,10 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: umap-project
3
- Version: 2.8.1
3
+ Version: 2.9.0
4
4
  Summary: Create maps with OpenStreetMap layers in a minute and embed them in your site.
5
5
  Author-email: Yohan Boniface <yb@enix.org>
6
6
  Maintainer-email: David Larlet <david@larlet.fr>
7
+ License-File: LICENSE
7
8
  Keywords: django,geodjango,leaflet,map,openstreetmap
8
9
  Classifier: Development Status :: 4 - Beta
9
10
  Classifier: Intended Audience :: Developers
@@ -16,41 +17,40 @@ Classifier: Programming Language :: Python :: 3.12
16
17
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
18
  Requires-Python: >=3.10
18
19
  Requires-Dist: django-agnocomplete==2.2.0
19
- Requires-Dist: django-environ==0.11.2
20
+ Requires-Dist: django-environ==0.12.0
20
21
  Requires-Dist: django-probes==1.7.0
21
- Requires-Dist: django==5.1.4
22
- Requires-Dist: pillow==11.0.0
23
- Requires-Dist: psycopg==3.2.3
24
- Requires-Dist: rcssmin==1.2.0
22
+ Requires-Dist: django==5.1.6
23
+ Requires-Dist: pillow==11.1.0
24
+ Requires-Dist: psycopg==3.2.4
25
+ Requires-Dist: rcssmin==1.2.1
25
26
  Requires-Dist: requests==2.32.3
26
- Requires-Dist: rjsmin==1.2.3
27
+ Requires-Dist: rjsmin==1.2.4
27
28
  Requires-Dist: social-auth-app-django==5.4.2
28
29
  Requires-Dist: social-auth-core==4.5.4
29
30
  Provides-Extra: dev
30
- Requires-Dist: djlint==1.36.3; extra == 'dev'
31
+ Requires-Dist: djlint==1.36.4; extra == 'dev'
31
32
  Requires-Dist: hatch==1.14.0; extra == 'dev'
32
- Requires-Dist: isort==5.13.2; extra == 'dev'
33
- Requires-Dist: mkdocs-material==9.5.48; extra == 'dev'
34
- Requires-Dist: mkdocs-static-i18n==1.2.3; extra == 'dev'
33
+ Requires-Dist: isort==6.0.0; extra == 'dev'
34
+ Requires-Dist: mkdocs-material==9.6.4; extra == 'dev'
35
+ Requires-Dist: mkdocs-static-i18n==1.3.0; extra == 'dev'
35
36
  Requires-Dist: mkdocs==1.6.1; extra == 'dev'
36
- Requires-Dist: pymdown-extensions==10.13; extra == 'dev'
37
- Requires-Dist: ruff==0.8.4; extra == 'dev'
37
+ Requires-Dist: pymdown-extensions==10.14.3; extra == 'dev'
38
+ Requires-Dist: ruff==0.9.6; extra == 'dev'
38
39
  Requires-Dist: vermin==1.6.0; extra == 'dev'
39
40
  Provides-Extra: docker
40
41
  Requires-Dist: uwsgi==2.0.28; extra == 'docker'
41
42
  Provides-Extra: s3
42
43
  Requires-Dist: django-storages[s3]==1.14.4; extra == 's3'
43
44
  Provides-Extra: sync
44
- Requires-Dist: channels==4.2.0; extra == 'sync'
45
- Requires-Dist: daphne==4.1.2; extra == 'sync'
46
- Requires-Dist: pydantic==2.10.3; extra == 'sync'
47
- Requires-Dist: websockets==13.1; extra == 'sync'
45
+ Requires-Dist: pydantic==2.10.6; extra == 'sync'
46
+ Requires-Dist: redis==5.2.1; extra == 'sync'
48
47
  Provides-Extra: test
49
- Requires-Dist: factory-boy==3.3.1; extra == 'test'
50
- Requires-Dist: moto[s3]==5.0.24; extra == 'test'
48
+ Requires-Dist: daphne==4.1.2; extra == 'test'
49
+ Requires-Dist: factory-boy==3.3.3; extra == 'test'
50
+ Requires-Dist: moto[s3]==5.0.28; extra == 'test'
51
51
  Requires-Dist: playwright>=1.39; extra == 'test'
52
- Requires-Dist: pytest-django==4.9.0; extra == 'test'
53
- Requires-Dist: pytest-playwright==0.6.2; extra == 'test'
52
+ Requires-Dist: pytest-django==4.10.0; extra == 'test'
53
+ Requires-Dist: pytest-playwright==0.7.0; extra == 'test'
54
54
  Requires-Dist: pytest-rerunfailures==15.0; extra == 'test'
55
55
  Requires-Dist: pytest-xdist<4,>=3.5.0; extra == 'test'
56
56
  Requires-Dist: pytest==8.3.4; extra == 'test'