plain.admin 0.22.0__tar.gz → 0.23.0__tar.gz

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.
Files changed (89) hide show
  1. {plain_admin-0.22.0 → plain_admin-0.23.0}/PKG-INFO +46 -5
  2. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/README.md +45 -4
  3. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/config.py +1 -1
  4. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/README.md +1 -3
  5. {plain_admin-0.22.0 → plain_admin-0.23.0}/pyproject.toml +1 -1
  6. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/test_admin.py +5 -1
  7. {plain_admin-0.22.0 → plain_admin-0.23.0}/.gitignore +0 -0
  8. {plain_admin-0.22.0 → plain_admin-0.23.0}/LICENSE +0 -0
  9. {plain_admin-0.22.0 → plain_admin-0.23.0}/README.md +0 -0
  10. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/__init__.py +0 -0
  11. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/admin.css +0 -0
  12. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/admin.js +0 -0
  13. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/chart.js +0 -0
  14. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/jquery-3.6.1.slim.min.js +0 -0
  15. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/list.js +0 -0
  16. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/popper.min.js +0 -0
  17. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/admin/tippy-bundle.umd.min.js +0 -0
  18. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/assets/toolbar/toolbar.js +0 -0
  19. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/cards/__init__.py +0 -0
  20. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/cards/base.py +0 -0
  21. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/cards/charts.py +0 -0
  22. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/cards/tables.py +0 -0
  23. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/dates.py +0 -0
  24. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/default_settings.py +0 -0
  25. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/README.md +0 -0
  26. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/__init__.py +0 -0
  27. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/middleware.py +0 -0
  28. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/models.py +0 -0
  29. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/permissions.py +0 -0
  30. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/settings.py +0 -0
  31. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/urls.py +0 -0
  32. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/impersonate/views.py +0 -0
  33. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/middleware.py +0 -0
  34. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/__init__.py +0 -0
  35. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/core.py +0 -0
  36. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/middleware.py +0 -0
  37. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/urls.py +0 -0
  38. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/querystats/views.py +0 -0
  39. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/base.html +0 -0
  40. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/cards/base.html +0 -0
  41. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/cards/card.html +0 -0
  42. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/cards/chart.html +0 -0
  43. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/cards/table.html +0 -0
  44. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/delete.html +0 -0
  45. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/detail.html +0 -0
  46. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/index.html +0 -0
  47. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/list.html +0 -0
  48. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/page.html +0 -0
  49. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/search.html +0 -0
  50. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/UUID.html +0 -0
  51. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/bool.html +0 -0
  52. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/datetime.html +0 -0
  53. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/default.html +0 -0
  54. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/dict.html +0 -0
  55. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/get_display.html +0 -0
  56. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/img.html +0 -0
  57. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/list.html +0 -0
  58. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/model.html +0 -0
  59. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/admin/values/queryset.html +0 -0
  60. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Checkbox.html +0 -0
  61. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/CheckboxField.html +0 -0
  62. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/FieldErrors.html +0 -0
  63. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Help.html +0 -0
  64. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Input.html +0 -0
  65. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/InputField.html +0 -0
  66. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Label.html +0 -0
  67. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Select.html +0 -0
  68. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/SelectField.html +0 -0
  69. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Submit.html +0 -0
  70. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/Textarea.html +0 -0
  71. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/elements/admin/TextareaField.html +0 -0
  72. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/querystats/querystats.html +0 -0
  73. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/querystats/toolbar.html +0 -0
  74. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates/toolbar/toolbar.html +0 -0
  75. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/templates.py +0 -0
  76. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/toolbar.py +0 -0
  77. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/urls.py +0 -0
  78. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/__init__.py +0 -0
  79. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/base.py +0 -0
  80. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/models.py +0 -0
  81. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/objects.py +0 -0
  82. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/registry.py +0 -0
  83. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/types.py +0 -0
  84. {plain_admin-0.22.0 → plain_admin-0.23.0}/plain/admin/views/viewsets.py +0 -0
  85. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/app/settings.py +0 -0
  86. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/app/urls.py +0 -0
  87. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/app/users/migrations/0001_initial.py +0 -0
  88. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/app/users/migrations/__init__.py +0 -0
  89. {plain_admin-0.22.0 → plain_admin-0.23.0}/tests/app/users/models.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain.admin
3
- Version: 0.22.0
3
+ Version: 0.23.0
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
@@ -30,7 +30,47 @@ in addition to models.
30
30
  ## Installation
31
31
 
32
32
  - install plain.admin and plain.htmx, add plain.admin.admin and plain.htmx to installed packages
33
- - add url
33
+
34
+ Add the `AdminRouter` to your `urls.py`.
35
+
36
+ ```python
37
+ # app/urls.py
38
+ from plain.admin.urls import AdminRouter
39
+ from plain.urls import Router, include, path
40
+
41
+ from . import views
42
+
43
+
44
+ class AppRouter(Router):
45
+ namespace = ""
46
+ urls = [
47
+ include("admin/", AdminRouter),
48
+ path("login/", views.LoginView, name="login"),
49
+ path("logout/", LogoutView, name="logout"),
50
+ # Your other urls here...
51
+ ]
52
+
53
+ ```
54
+
55
+ Optionally, add the admin toolbar to your base template.
56
+
57
+ ```html
58
+ <!-- app/templates/base.html -->
59
+ <!DOCTYPE html>
60
+ <html lang="en">
61
+ <head>
62
+ <meta charset="UTF-8">
63
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
64
+ <title>{{ html_title|default("My App") }}</title>
65
+ {% tailwind_css %}
66
+ </head>
67
+ <body>
68
+ {% block content required %}{% endblock %}
69
+
70
+ {% toolbar %}
71
+ </body>
72
+ </html>
73
+ ```
34
74
 
35
75
  ## Models in the admin
36
76
 
@@ -128,7 +168,9 @@ INSTALLED_PACKAGES += [
128
168
 
129
169
  ```html
130
170
  <!-- base.template.html -->
171
+
131
172
  {% load toolbar %}
173
+
132
174
  <!doctype html>
133
175
  <html lang="en">
134
176
  <head>
@@ -163,7 +205,6 @@ module.exports = {
163
205
 
164
206
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
165
207
 
166
-
167
208
  # plain.requestlog
168
209
 
169
210
  The request log stores a local history of HTTP requests and responses during `plain work` (Django runserver).
@@ -228,7 +269,6 @@ module.exports = {
228
269
 
229
270
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
230
271
 
231
-
232
272
  # plain.impersonate
233
273
 
234
274
  See what your users see.
@@ -269,7 +309,8 @@ urlpatterns = [
269
309
 
270
310
  By default, all admin users can impersonate other users.
271
311
 
272
- ```python
312
+ ````python
273
313
  # settings.py
274
314
  IMPERSONATE_ALLOWED = lambda user: user.is_admin
275
315
  ``` -->
316
+ ````
@@ -15,7 +15,47 @@ in addition to models.
15
15
  ## Installation
16
16
 
17
17
  - install plain.admin and plain.htmx, add plain.admin.admin and plain.htmx to installed packages
18
- - add url
18
+
19
+ Add the `AdminRouter` to your `urls.py`.
20
+
21
+ ```python
22
+ # app/urls.py
23
+ from plain.admin.urls import AdminRouter
24
+ from plain.urls import Router, include, path
25
+
26
+ from . import views
27
+
28
+
29
+ class AppRouter(Router):
30
+ namespace = ""
31
+ urls = [
32
+ include("admin/", AdminRouter),
33
+ path("login/", views.LoginView, name="login"),
34
+ path("logout/", LogoutView, name="logout"),
35
+ # Your other urls here...
36
+ ]
37
+
38
+ ```
39
+
40
+ Optionally, add the admin toolbar to your base template.
41
+
42
+ ```html
43
+ <!-- app/templates/base.html -->
44
+ <!DOCTYPE html>
45
+ <html lang="en">
46
+ <head>
47
+ <meta charset="UTF-8">
48
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
49
+ <title>{{ html_title|default("My App") }}</title>
50
+ {% tailwind_css %}
51
+ </head>
52
+ <body>
53
+ {% block content required %}{% endblock %}
54
+
55
+ {% toolbar %}
56
+ </body>
57
+ </html>
58
+ ```
19
59
 
20
60
  ## Models in the admin
21
61
 
@@ -113,7 +153,9 @@ INSTALLED_PACKAGES += [
113
153
 
114
154
  ```html
115
155
  <!-- base.template.html -->
156
+
116
157
  {% load toolbar %}
158
+
117
159
  <!doctype html>
118
160
  <html lang="en">
119
161
  <head>
@@ -148,7 +190,6 @@ module.exports = {
148
190
 
149
191
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
150
192
 
151
-
152
193
  # plain.requestlog
153
194
 
154
195
  The request log stores a local history of HTTP requests and responses during `plain work` (Django runserver).
@@ -213,7 +254,6 @@ module.exports = {
213
254
 
214
255
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
215
256
 
216
-
217
257
  # plain.impersonate
218
258
 
219
259
  See what your users see.
@@ -254,7 +294,8 @@ urlpatterns = [
254
294
 
255
295
  By default, all admin users can impersonate other users.
256
296
 
257
- ```python
297
+ ````python
258
298
  # settings.py
259
299
  IMPERSONATE_ALLOWED = lambda user: user.is_admin
260
300
  ``` -->
301
+ ````
@@ -6,7 +6,7 @@ from plain.packages import PackageConfig, packages_registry, register_config
6
6
 
7
7
  @register_config
8
8
  class Config(PackageConfig):
9
- label = "plainadmin"
9
+ package_label = "plainadmin"
10
10
 
11
11
  def ready(self):
12
12
  def _import_if_exists(module_name):
@@ -43,7 +43,7 @@ you can add the querystats to your frontend templates with this include:
43
43
  {% include "querystats/button.html" %}
44
44
  ```
45
45
 
46
- *Note that you will likely want to surround this with an if `DEBUG` or `is_admin` check.*
46
+ _Note that you will likely want to surround this with an if `DEBUG` or `is_admin` check._
47
47
 
48
48
  To view querystats you need to send a POST request to `?querystats=store` (i.e. via a `<form>`),
49
49
  and the template include is the easiest way to do that.
@@ -69,7 +69,6 @@ module.exports = {
69
69
 
70
70
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
71
71
 
72
-
73
72
  # plain.toolbar
74
73
 
75
74
  The admin toolbar is enabled for every user who `is_admin`.
@@ -125,7 +124,6 @@ module.exports = {
125
124
 
126
125
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
127
126
 
128
-
129
127
  # plain.requestlog
130
128
 
131
129
  The request log stores a local history of HTTP requests and responses during `plain work` (Django runserver).
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plain.admin"
3
- version = "0.22.0"
3
+ version = "0.23.0"
4
4
  description = "Admin dashboard and tools for Plain."
5
5
  authors = [{name = "Dave Gaeddert", email = "dave.gaeddert@dropseed.dev"}]
6
6
  license = "BSD-3-Clause"
@@ -1,7 +1,11 @@
1
1
  from app.users.models import User
2
2
 
3
+ from plain.test import Client
4
+
5
+
6
+ def test_admin_login_required(db):
7
+ client = Client()
3
8
 
4
- def test_admin_login_required(db, client):
5
9
  # Login required
6
10
  assert client.get("/admin/").status_code == 302
7
11
 
File without changes
File without changes
File without changes