plain.admin 0.31.8__tar.gz → 0.33.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 (93) hide show
  1. {plain_admin-0.31.8 → plain_admin-0.33.0}/.gitignore +0 -3
  2. {plain_admin-0.31.8 → plain_admin-0.33.0}/PKG-INFO +1 -1
  3. plain_admin-0.33.0/plain/admin/CHANGELOG.md +13 -0
  4. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/README.md +0 -43
  5. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/middleware.py +3 -4
  6. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/search.html +1 -1
  7. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/querystats/toolbar.html +2 -1
  8. {plain_admin-0.31.8 → plain_admin-0.33.0}/pyproject.toml +1 -1
  9. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/settings.py +3 -5
  10. {plain_admin-0.31.8 → plain_admin-0.33.0}/LICENSE +0 -0
  11. {plain_admin-0.31.8 → plain_admin-0.33.0}/README.md +0 -0
  12. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/README.md +0 -0
  13. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/__init__.py +0 -0
  14. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/admin.css +0 -0
  15. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/admin.js +0 -0
  16. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/list.js +0 -0
  17. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/chart.js +0 -0
  18. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/jquery-3.6.1.slim.min.js +0 -0
  19. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/popper.min.js +0 -0
  20. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/tippy-bundle.umd.min.js +0 -0
  21. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/toolbar/toolbar.js +0 -0
  22. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/__init__.py +0 -0
  23. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/base.py +0 -0
  24. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/charts.py +0 -0
  25. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/tables.py +0 -0
  26. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/config.py +0 -0
  27. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/dates.py +0 -0
  28. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/default_settings.py +0 -0
  29. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/README.md +0 -0
  30. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/__init__.py +0 -0
  31. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/middleware.py +0 -0
  32. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/models.py +0 -0
  33. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/permissions.py +0 -0
  34. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/settings.py +0 -0
  35. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/urls.py +0 -0
  36. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/views.py +0 -0
  37. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/middleware.py +0 -0
  38. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/__init__.py +0 -0
  39. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/core.py +0 -0
  40. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/urls.py +0 -0
  41. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/views.py +0 -0
  42. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/base.html +0 -0
  43. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/base.html +0 -0
  44. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/card.html +0 -0
  45. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/chart.html +0 -0
  46. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/table.html +0 -0
  47. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/delete.html +0 -0
  48. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/detail.html +0 -0
  49. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/index.html +0 -0
  50. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/list.html +0 -0
  51. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/page.html +0 -0
  52. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/UUID.html +0 -0
  53. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/bool.html +0 -0
  54. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/datetime.html +0 -0
  55. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/default.html +0 -0
  56. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/dict.html +0 -0
  57. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/get_display.html +0 -0
  58. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/img.html +0 -0
  59. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/list.html +0 -0
  60. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/model.html +0 -0
  61. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/queryset.html +0 -0
  62. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Checkbox.html +0 -0
  63. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/CheckboxField.html +0 -0
  64. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/FieldErrors.html +0 -0
  65. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Help.html +0 -0
  66. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Input.html +0 -0
  67. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/InputField.html +0 -0
  68. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Label.html +0 -0
  69. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Select.html +0 -0
  70. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/SelectField.html +0 -0
  71. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Submit.html +0 -0
  72. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Textarea.html +0 -0
  73. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/TextareaField.html +0 -0
  74. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/querystats/querystats.html +0 -0
  75. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/exception.html +0 -0
  76. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/querystats.html +0 -0
  77. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/request.html +0 -0
  78. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/toolbar.html +0 -0
  79. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates.py +0 -0
  80. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/toolbar.py +0 -0
  81. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/urls.py +0 -0
  82. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/__init__.py +0 -0
  83. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/base.py +0 -0
  84. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/models.py +0 -0
  85. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/objects.py +0 -0
  86. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/registry.py +0 -0
  87. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/types.py +0 -0
  88. {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/viewsets.py +0 -0
  89. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/urls.py +0 -0
  90. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/migrations/0001_initial.py +0 -0
  91. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/migrations/__init__.py +0 -0
  92. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/models.py +0 -0
  93. {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/test_admin.py +0 -0
@@ -6,9 +6,6 @@ __pycache__
6
6
  *.DS_Store
7
7
  .coverage
8
8
 
9
- # Personal workspace
10
- /*.code-workspace
11
-
12
9
  # Test apps
13
10
  plain*/tests/.plain
14
11
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain.admin
3
- Version: 0.31.8
3
+ Version: 0.33.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
@@ -0,0 +1,13 @@
1
+ # plain-admin changelog
2
+
3
+ ## [0.33.0](https://github.com/dropseed/plain/releases/plain-admin@0.33.0) (2025-06-23)
4
+
5
+ ### What's changed
6
+
7
+ - The QueryStats browser toolbar now logs a concise summary message in the developer console instead of the full `PerformanceEntry` object, making query-timing information easier to scan ([fcd92a6](https://github.com/dropseed/plain/commit/fcd92a6)).
8
+ - QueryStats middleware now uses `plain.models.db_connection`, aligning with the new single-`DATABASE` configuration and removing the dependency on `DEFAULT_DB_ALIAS` ([d346d81](https://github.com/dropseed/plain/commit/d346d81)).
9
+
10
+ ### Upgrade instructions
11
+
12
+ - No changes required
13
+
@@ -124,49 +124,6 @@ module.exports = {
124
124
 
125
125
  If you aren't using Tailwind, and don't intend to, open an issue to discuss other options.
126
126
 
127
- # plain.requestlog
128
-
129
- The request log stores a local history of HTTP requests and responses during `plain work` (Django runserver).
130
-
131
- The request history will make it easy to see redirects,
132
- 400 and 500 level errors,
133
- form submissions,
134
- API calls,
135
- webhooks,
136
- and more.
137
-
138
- [Watch on YouTube](https://www.youtube.com/watch?v=AwI7Pt5oZnM)
139
-
140
- Requests can be re-submitted by clicking the "replay" button.
141
-
142
- [![Django request log](https://user-images.githubusercontent.com/649496/213781414-417ad043-de67-4836-9ef1-2b91404336c3.png)](https://user-images.githubusercontent.com/649496/213781414-417ad043-de67-4836-9ef1-2b91404336c3.png)
143
-
144
- ## Installation
145
-
146
- ```python
147
- # settings.py
148
- INSTALLED_PACKAGES += [
149
- "plainrequestlog",
150
- ]
151
-
152
- MIDDLEWARE = MIDDLEWARE + [
153
- # ...
154
- "plainrequestlog.RequestLogMiddleware",
155
- ]
156
- ```
157
-
158
- The default settings can be customized if needed:
159
-
160
- ```python
161
- # settings.py
162
- DEV_REQUESTS_IGNORE_PATHS = [
163
- "/sw.js",
164
- "/favicon.ico",
165
- "/admin/jsi18n/",
166
- ]
167
- DEV_REQUESTS_MAX = 50
168
- ```
169
-
170
127
  ## Tailwind CSS
171
128
 
172
129
  This package is styled with [Tailwind CSS](https://tailwindcss.com/),
@@ -3,7 +3,7 @@ import logging
3
3
  import re
4
4
 
5
5
  from plain.json import PlainJSONEncoder
6
- from plain.models import DEFAULT_DB_ALIAS, connections
6
+ from plain.models import db_connection
7
7
  from plain.runtime import settings
8
8
 
9
9
  from .core import QueryStats
@@ -21,7 +21,6 @@ class QueryStatsJSONEncoder(PlainJSONEncoder):
21
21
  try:
22
22
  return super().default(obj)
23
23
  except TypeError:
24
- print(type(obj))
25
24
  if psycopg and isinstance(obj, psycopg.types.json.Json):
26
25
  return obj.obj
27
26
  elif psycopg and isinstance(obj, psycopg.types.json.Jsonb):
@@ -60,11 +59,11 @@ class QueryStatsMiddleware:
60
59
 
61
60
  querystats = QueryStats(include_tracebacks=is_tracking())
62
61
 
63
- with connections[DEFAULT_DB_ALIAS].execute_wrapper(querystats):
62
+ with db_connection.execute_wrapper(querystats):
64
63
  is_admin = self.is_admin_request(request)
65
64
 
66
65
  if settings.DEBUG or is_admin:
67
- with connections[DEFAULT_DB_ALIAS].execute_wrapper(querystats):
66
+ with db_connection.execute_wrapper(querystats):
68
67
  response = self.get_response(request)
69
68
 
70
69
  if settings.DEBUG:
@@ -37,7 +37,7 @@ Search
37
37
  {% for view in searchable_views %}
38
38
  <div
39
39
  hx-get="{{ view.get_view_url() }}?search={{ global_search_query }}&page_size=5"
40
- hx-trigger="plainhtmx:load from:body"
40
+ hx-trigger="load from:body"
41
41
  plain-hx-fragment="list">
42
42
  </div>
43
43
  {% endfor %}
@@ -66,7 +66,8 @@
66
66
  }
67
67
  for (const timing of entry.serverTiming) {
68
68
  if (timing.name === "querystats") {
69
- console.log("Querystats timing", entry)
69
+ // Log a helpful summary instead of the entire entry object
70
+ console.log(`[Querystats] ${timing.description} on ${entry.name}`, entry)
70
71
  timing.url = entry.name; // Store this for reference later
71
72
  for (const existingTiming of querystatsTimings) {
72
73
  if (existingTiming == timing) {
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plain.admin"
3
- version = "0.31.8"
3
+ version = "0.33.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"
@@ -9,11 +9,9 @@ INSTALLED_PACKAGES = [
9
9
  "plain.admin",
10
10
  "app.users",
11
11
  ]
12
- DATABASES = {
13
- "default": {
14
- "ENGINE": "plain.models.backends.sqlite3",
15
- "NAME": ":memory:",
16
- }
12
+ DATABASE = {
13
+ "ENGINE": "plain.models.backends.sqlite3",
14
+ "NAME": ":memory:",
17
15
  }
18
16
  MIDDLEWARE = [
19
17
  "plain.sessions.middleware.SessionMiddleware",
File without changes
File without changes