plain 0.20.0__tar.gz → 0.21.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-0.20.0 → plain-0.21.0}/PKG-INFO +1 -1
- {plain-0.20.0 → plain-0.21.0}/plain/internal/handlers/base.py +12 -5
- {plain-0.20.0 → plain-0.21.0}/plain/views/objects.py +2 -0
- {plain-0.20.0 → plain-0.21.0}/pyproject.toml +1 -1
- {plain-0.20.0 → plain-0.21.0}/.gitignore +0 -0
- {plain-0.20.0 → plain-0.21.0}/LICENSE +0 -0
- {plain-0.20.0 → plain-0.21.0}/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/__main__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/compile.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/finders.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/fingerprints.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/urls.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/assets/views.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/cli.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/formatting.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/packages.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/print.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/cli/startup.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/csrf/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/csrf/middleware.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/csrf/views.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/debug.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/exceptions.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/boundfield.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/exceptions.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/fields.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/forms/forms.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/cookie.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/multipartparser.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/request.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/http/response.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/base.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/locks.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/move.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/temp.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/files/utils.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/handlers/exception.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/middleware/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/middleware/headers.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/middleware/https.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/internal/middleware/slash.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/json.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/logs/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/logs/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/logs/configure.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/logs/loggers.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/logs/utils.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/packages/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/packages/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/packages/config.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/packages/registry.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/paginator.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/files.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/messages.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/registry.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/security.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/preflight/urls.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/runtime/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/runtime/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/runtime/global_settings.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/runtime/user_settings.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signals/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signals/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/signing.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/core.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/environments.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/filters.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/templates/jinja/globals.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/test/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/test/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/test/client.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/base.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/conf.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/converters.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/exceptions.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/urls/resolvers.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/_os.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/cache.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/connection.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/crypto.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/datastructures.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/dateformat.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/dateparse.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/dates.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/deconstruct.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/decorators.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/deprecation.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/duration.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/email.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/encoding.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/functional.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/hashable.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/html.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/http.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/inspect.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/ipv6.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/itercompat.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/module_loading.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/regex_helper.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/safestring.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/text.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/timesince.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/timezone.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/utils/tree.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/validators.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/README.md +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/base.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/csrf.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/errors.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/exceptions.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/forms.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/redirect.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/views/templates.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/plain/wsgi.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/.bolt/assets_collected/assets.json +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/.gitignore +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/app/.gitignore +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/app/settings.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/app/test/__init__.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/app/test/default_settings.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/app/urls.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/conftest.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/test_cli.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/test_runtime.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/tests/test_wsgi.py +0 -0
- {plain-0.20.0 → plain-0.21.0}/uv.lock +0 -0
@@ -14,11 +14,16 @@ logger = logging.getLogger("plain.request")
|
|
14
14
|
|
15
15
|
|
16
16
|
# These middleware classes are always used by Plain.
|
17
|
-
|
18
|
-
"plain.internal.middleware.headers.DefaultHeadersMiddleware",
|
19
|
-
"plain.internal.middleware.https.HttpsRedirectMiddleware",
|
17
|
+
BUILTIN_BEFORE_MIDDLEWARE = [
|
18
|
+
"plain.internal.middleware.headers.DefaultHeadersMiddleware", # Runs after response, to set missing headers
|
19
|
+
"plain.internal.middleware.https.HttpsRedirectMiddleware", # Runs before response, to redirect to HTTPS quickly
|
20
|
+
"plain.csrf.middleware.CsrfViewMiddleware", # Runs before and after get_response...
|
21
|
+
]
|
22
|
+
|
23
|
+
BUILTIN_AFTER_MIDDLEWARE = [
|
24
|
+
# Want this to run first (when reversed) so the slash middleware
|
25
|
+
# can immediately redirect to the slash-appended path if there is one.
|
20
26
|
"plain.internal.middleware.slash.RedirectSlashMiddleware",
|
21
|
-
"plain.csrf.middleware.CsrfViewMiddleware",
|
22
27
|
]
|
23
28
|
|
24
29
|
|
@@ -34,7 +39,9 @@ class BaseHandler:
|
|
34
39
|
get_response = self._get_response
|
35
40
|
handler = convert_exception_to_response(get_response)
|
36
41
|
|
37
|
-
middlewares = reversed(
|
42
|
+
middlewares = reversed(
|
43
|
+
BUILTIN_BEFORE_MIDDLEWARE + settings.MIDDLEWARE + BUILTIN_AFTER_MIDDLEWARE
|
44
|
+
)
|
38
45
|
|
39
46
|
for middleware_path in middlewares:
|
40
47
|
middleware = import_string(middleware_path)
|
@@ -80,6 +80,8 @@ class CreateView(ObjectTemplateViewMixin, FormView):
|
|
80
80
|
View for creating a new object, with a response rendered by a template.
|
81
81
|
"""
|
82
82
|
|
83
|
+
template_name_suffix = "_form"
|
84
|
+
|
83
85
|
def post(self) -> Response:
|
84
86
|
"""
|
85
87
|
Handle POST requests: instantiate a form instance with the passed
|
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
|
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
|
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
|
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
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|