plain.admin 0.14.1__py3-none-any.whl → 0.15.1__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.
@@ -1,10 +1,12 @@
1
- from plain.urls import path
1
+ from plain.urls import RouterBase, path, register_router
2
2
 
3
3
  from .views import ImpersonateStartView, ImpersonateStopView
4
4
 
5
- default_namespace = "impersonate"
6
5
 
7
- urlpatterns = [
8
- path("stop/", ImpersonateStopView, name="stop"),
9
- path("start/<pk>/", ImpersonateStartView, name="start"),
10
- ]
6
+ @register_router
7
+ class Router(RouterBase):
8
+ namespace = "impersonate"
9
+ urls = [
10
+ path("stop/", ImpersonateStopView, name="stop"),
11
+ path("start/<pk>/", ImpersonateStartView, name="start"),
12
+ ]
@@ -16,7 +16,6 @@ IGNORE_STACK_FILES = [
16
16
  "querystats/core",
17
17
  "plain/template/base",
18
18
  "plain/utils/decorators",
19
- "plain/utils/deprecation",
20
19
  "plain/db",
21
20
  "plain/utils/functional",
22
21
  "plain/core/servers",
@@ -1,9 +1,11 @@
1
- from plain.urls import path
1
+ from plain.urls import RouterBase, path, register_router
2
2
 
3
3
  from . import views
4
4
 
5
- default_namespace = "querystats"
6
5
 
7
- urlpatterns = [
8
- path("", views.QuerystatsView, name="querystats"),
9
- ]
6
+ @register_router
7
+ class Router(RouterBase):
8
+ namespace = "querystats"
9
+ urls = [
10
+ path("", views.QuerystatsView, name="querystats"),
11
+ ]
plain/admin/urls.py CHANGED
@@ -1,5 +1,5 @@
1
1
  from plain.http import ResponseRedirect
2
- from plain.urls import include, path
2
+ from plain.urls import RouterBase, include, path, register_router
3
3
 
4
4
  from .impersonate import urls as impersonate_urls
5
5
  from .querystats import urls as querystats_urls
@@ -33,13 +33,13 @@ class AdminSearchView(AdminView):
33
33
  return context
34
34
 
35
35
 
36
- default_namespace = "admin"
37
-
38
-
39
- urlpatterns = [
40
- path("search/", AdminSearchView, name="search"),
41
- path("impersonate/", include(impersonate_urls)),
42
- path("querystats/", include(querystats_urls)),
43
- path("", include(registry.get_urls())),
44
- path("", AdminIndexView, name="index"),
45
- ]
36
+ @register_router
37
+ class Router(RouterBase):
38
+ namespace = "admin"
39
+ urls = [
40
+ path("search/", AdminSearchView, name="search"),
41
+ include("impersonate/", impersonate_urls),
42
+ include("querystats/", querystats_urls),
43
+ include("", registry.get_urls()),
44
+ path("", AdminIndexView, name="index"),
45
+ ]
plain/admin/views/base.py CHANGED
@@ -42,6 +42,13 @@ class AdminView(AuthViewMixin, TemplateView):
42
42
  template_name = "admin/page.html"
43
43
  cards: list["Card"] = []
44
44
 
45
+ def get_response(self):
46
+ response = super().get_response()
47
+ response.headers["Cache-Control"] = (
48
+ "no-cache, no-store, must-revalidate, max-age=0"
49
+ )
50
+ return response
51
+
45
52
  def get_template_context(self):
46
53
  context = super().get_template_context()
47
54
  context["title"] = self.get_title()
@@ -129,7 +136,7 @@ class AdminView(AuthViewMixin, TemplateView):
129
136
  @classmethod
130
137
  def get_view_url(cls, obj=None) -> str:
131
138
  if obj:
132
- return reverse(f"{URL_NAMESPACE}:" + cls.view_name(), kwargs={"pk": obj.pk})
139
+ return reverse(f"{URL_NAMESPACE}:" + cls.view_name(), pk=obj.pk)
133
140
  else:
134
141
  return reverse(f"{URL_NAMESPACE}:" + cls.view_name())
135
142
 
@@ -65,7 +65,7 @@ class AdminViewRegistry:
65
65
  # return root_nav_items
66
66
 
67
67
  def get_urls(self):
68
- urlpatterns = []
68
+ urls = []
69
69
 
70
70
  paths_seen = set()
71
71
 
@@ -75,12 +75,12 @@ class AdminViewRegistry:
75
75
  paths_seen.add(_path)
76
76
  if not _path.endswith("/"):
77
77
  _path += "/"
78
- urlpatterns.append(path(_path, view, name=view.view_name()))
78
+ urls.append(path(_path, view, name=view.view_name()))
79
79
 
80
80
  for view in self.registered_views:
81
81
  add_view_path(view, f"p/{view.get_path()}")
82
82
 
83
- return urlpatterns
83
+ return urls
84
84
 
85
85
  def get_searchable_views(self):
86
86
  views = [
@@ -107,7 +107,7 @@ class AdminViewRegistry:
107
107
  if view.model == instance.__class__:
108
108
  return reverse_lazy(
109
109
  f"{URL_NAMESPACE}:{view.view_name()}",
110
- kwargs={"pk": instance.pk},
110
+ pk=instance.pk,
111
111
  )
112
112
 
113
113
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain.admin
3
- Version: 0.14.1
3
+ Version: 0.15.1
4
4
  Summary: Admin dashboard and tools for Plain.
5
5
  Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
6
6
  License-Expression: BSD-3-Clause
@@ -6,7 +6,7 @@ plain/admin/default_settings.py,sha256=j7RdgGqksCmCgPO7zCcFiVV9f8yW-EULvqDcFOhQa
6
6
  plain/admin/middleware.py,sha256=k3yP1o3CzvLiZZSoxqq-DvAZlp4sICRauaT-kD3FJKM,398
7
7
  plain/admin/templates.py,sha256=jLhJkuvqnPMBQTP-kzojFaqmFi50GZHvrVzuZCLc3rk,836
8
8
  plain/admin/toolbar.py,sha256=dsZa_I-tTbaeOluCbvHGEqy4_Suw6Q_JSrKl8Eu08qY,973
9
- plain/admin/urls.py,sha256=f3WD6Za7jsm2jgUpyi-U9UB1ZWhQYGs8q-Qju0BsUKg,1296
9
+ plain/admin/urls.py,sha256=xGZDs103SStrlny806pqfvuA-UBUI2Xy_eXtq1VtoBI,1365
10
10
  plain/admin/assets/admin/admin.css,sha256=K8XfU6XMSe2-e-T9XvD-g2t1cgYz9GDMne-ugVeNXcA,2207
11
11
  plain/admin/assets/admin/admin.js,sha256=AWD6UqPxGqJFaUhYTDWe4niTgk0thzU4gRl7qK41KNc,2759
12
12
  plain/admin/assets/admin/chart.js,sha256=GZiCYXjL6SmyuSCGE0Df80QvOUkw6H2YD-zsVID05lo,205089
@@ -25,13 +25,13 @@ plain/admin/impersonate/middleware.py,sha256=gFDLyEBqslJC908gKk1bFKmLFpimiaQdeaa
25
25
  plain/admin/impersonate/models.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  plain/admin/impersonate/permissions.py,sha256=N0EFshs0pgwFIAsK2MUgfnyhdb2rYheY_l47cYdGurE,332
27
27
  plain/admin/impersonate/settings.py,sha256=4wbWBN9eZIzei4fwkFLfw-_T5pvP_GG4l1lDdVpL_Co,193
28
- plain/admin/impersonate/urls.py,sha256=v4yBKyuwbJv8TwrCz7D_MMr7HPg7m-q7g_UdnJKV_js,258
28
+ plain/admin/impersonate/urls.py,sha256=lwnncH_BBhH24Xutlz9VyX1EVovJM6KFaxk3Fz_gzWI,335
29
29
  plain/admin/impersonate/views.py,sha256=p8kEGC2ZNntAaLJRgwCaGSJABjLWoarpya9IuBpNW5A,789
30
30
  plain/admin/querystats/README.md,sha256=dCKMmZQIgbjNLRDrgIaq6yxeON81JVADXzkLoGTPoy8,4823
31
31
  plain/admin/querystats/__init__.py,sha256=VmP1aQ5Pviq4Z3izCB8G9g0Weq-2SYR88UFNtwqAPpo,81
32
- plain/admin/querystats/core.py,sha256=ekleABddKOUPwBXVO1Ybw_MpIg6bJVoRpFpPatAqFhQ,4312
32
+ plain/admin/querystats/core.py,sha256=GLhKwWwO2OwN2wneAgfbKRQzIIjZqegZYb1fMVwiljY,4281
33
33
  plain/admin/querystats/middleware.py,sha256=M1EVdX11H545IdZlppbSIL_h8hzBIrMELrYrcAb4aq0,3192
34
- plain/admin/querystats/urls.py,sha256=gIA280o52H2pUIML__X-1t9hR-386kDRJmjYjNNctTc,157
34
+ plain/admin/querystats/urls.py,sha256=SHYbWvxjg6kFHR-e6T4vFmh4VqyPG7gYHXxDKdB4qz0,230
35
35
  plain/admin/querystats/views.py,sha256=58UpxaBp_H80Tf7azi4QcphgHbXgP5iqLDf-qZJfzRI,788
36
36
  plain/admin/templates/admin/base.html,sha256=nhgBk69i8HaafIe0aa2xuj-YmEKyc9UZAju-k3G0nUs,8514
37
37
  plain/admin/templates/admin/delete.html,sha256=lNuU2G-BR6TH6NUmh7VcvjnEuFeI84rwwk_oO1jkUq0,431
@@ -68,13 +68,13 @@ plain/admin/templates/querystats/querystats.html,sha256=CMH3TDBXXxoxrICMIxiLfo4c
68
68
  plain/admin/templates/querystats/toolbar.html,sha256=dePs614akVWUD8IlgzvQ0TREThv1ttKPj-yOPzJxmXM,3574
69
69
  plain/admin/templates/toolbar/toolbar.html,sha256=k76DXO8NrnFKGZpDA0DASdesFvw6qt8vv_T9CqCLE6U,6504
70
70
  plain/admin/views/__init__.py,sha256=nF6AENZ3Xxyi08OTRrF6e-HYBkZSFj7XBK2mVzMYqN4,846
71
- plain/admin/views/base.py,sha256=uBhZs7vh1mrHb3fVTEYpRpIRY9SJ7JCgQVksGQQdGIg,3743
71
+ plain/admin/views/base.py,sha256=ueMH1kvLInceIqKeR2w8HSiIT0MlAtv6i73k7ijsNUU,3943
72
72
  plain/admin/views/models.py,sha256=0zSrxvZa1ARmqUeSzKqXNS5fT0bVwydsNdSOK5AUhk8,7287
73
73
  plain/admin/views/objects.py,sha256=8fx1Fp1rzYbw9ARNzLYYWzaTrMbNY-5LshY1mvqtf8c,11315
74
- plain/admin/views/registry.py,sha256=kqWGiC5Nscu_wjUiEfh6OX28jG7Y5J0XV9UsZGSQMQs,3537
74
+ plain/admin/views/registry.py,sha256=aGLu9GMraLJBl60Kpfa6PXgno1vFsQZZI3YlXHClPYg,3504
75
75
  plain/admin/views/types.py,sha256=ONMMdUoapgMoUVYgSIe-4YCdfvaVMQ4jgPWYiMo0pDk,178
76
76
  plain/admin/views/viewsets.py,sha256=dqMlQ6kLn9iqd9BwBWAZT1S271wH1FdfM5HXbOgBMEw,1655
77
- plain_admin-0.14.1.dist-info/METADATA,sha256=CkD5qsFoLv_Ee7erQcx7zxItBoHfAPK3ZmpbvI-Tlj4,6821
78
- plain_admin-0.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
79
- plain_admin-0.14.1.dist-info/licenses/LICENSE,sha256=cvKM3OlqHx3ijD6e34zsSUkPvzl-ya3Dd63A6EHL94U,1500
80
- plain_admin-0.14.1.dist-info/RECORD,,
77
+ plain_admin-0.15.1.dist-info/METADATA,sha256=OrTk8yiePcDb2NguvMhRuHDDyu8bfodeYsnqpMg14l8,6821
78
+ plain_admin-0.15.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
79
+ plain_admin-0.15.1.dist-info/licenses/LICENSE,sha256=cvKM3OlqHx3ijD6e34zsSUkPvzl-ya3Dd63A6EHL94U,1500
80
+ plain_admin-0.15.1.dist-info/RECORD,,