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.
- {plain_admin-0.31.8 → plain_admin-0.33.0}/.gitignore +0 -3
- {plain_admin-0.31.8 → plain_admin-0.33.0}/PKG-INFO +1 -1
- plain_admin-0.33.0/plain/admin/CHANGELOG.md +13 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/README.md +0 -43
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/middleware.py +3 -4
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/search.html +1 -1
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/querystats/toolbar.html +2 -1
- {plain_admin-0.31.8 → plain_admin-0.33.0}/pyproject.toml +1 -1
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/settings.py +3 -5
- {plain_admin-0.31.8 → plain_admin-0.33.0}/LICENSE +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/README.md +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/README.md +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/admin.css +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/admin.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/list.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/chart.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/jquery-3.6.1.slim.min.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/popper.min.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/tippy-bundle.umd.min.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/toolbar/toolbar.js +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/base.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/charts.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/cards/tables.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/config.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/dates.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/default_settings.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/README.md +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/middleware.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/models.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/permissions.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/settings.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/urls.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/impersonate/views.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/middleware.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/core.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/urls.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/querystats/views.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/base.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/base.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/card.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/chart.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/cards/table.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/delete.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/detail.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/index.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/list.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/page.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/UUID.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/bool.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/datetime.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/default.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/dict.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/get_display.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/img.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/list.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/model.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/queryset.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Checkbox.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/CheckboxField.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/FieldErrors.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Help.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Input.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/InputField.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Label.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Select.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/SelectField.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Submit.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Textarea.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/TextareaField.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/querystats/querystats.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/exception.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/querystats.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/request.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/toolbar/toolbar.html +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/toolbar.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/urls.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/base.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/models.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/objects.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/registry.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/types.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/views/viewsets.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/urls.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/migrations/0001_initial.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/migrations/__init__.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/app/users/models.py +0 -0
- {plain_admin-0.31.8 → plain_admin-0.33.0}/tests/test_admin.py +0 -0
@@ -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
|
-
[](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
|
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
|
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
|
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="
|
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
|
-
|
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) {
|
@@ -9,11 +9,9 @@ INSTALLED_PACKAGES = [
|
|
9
9
|
"plain.admin",
|
10
10
|
"app.users",
|
11
11
|
]
|
12
|
-
|
13
|
-
"
|
14
|
-
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/jquery-3.6.1.slim.min.js
RENAMED
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/assets/admin/vendor/tippy-bundle.umd.min.js
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/admin/values/get_display.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Checkbox.html
RENAMED
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/CheckboxField.html
RENAMED
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/FieldErrors.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/InputField.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/SelectField.html
RENAMED
File without changes
|
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/Textarea.html
RENAMED
File without changes
|
{plain_admin-0.31.8 → plain_admin-0.33.0}/plain/admin/templates/elements/admin/TextareaField.html
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|