plain.htmx 0.11.1__py3-none-any.whl → 0.13.0__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.
- plain/htmx/CHANGELOG.md +21 -0
- plain/htmx/templates.py +2 -1
- plain/htmx/views.py +8 -5
- {plain_htmx-0.11.1.dist-info → plain_htmx-0.13.0.dist-info}/METADATA +1 -1
- {plain_htmx-0.11.1.dist-info → plain_htmx-0.13.0.dist-info}/RECORD +7 -7
- {plain_htmx-0.11.1.dist-info → plain_htmx-0.13.0.dist-info}/WHEEL +0 -0
- {plain_htmx-0.11.1.dist-info → plain_htmx-0.13.0.dist-info}/licenses/LICENSE +0 -0
plain/htmx/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# plain-htmx changelog
|
|
2
2
|
|
|
3
|
+
## [0.13.0](https://github.com/dropseed/plain/releases/plain-htmx@0.13.0) (2025-11-24)
|
|
4
|
+
|
|
5
|
+
### What's changed
|
|
6
|
+
|
|
7
|
+
- Replaced `HTMXViewMixin` with `HTMXView` class that inherits from `TemplateView` for better type checking support ([569afd6](https://github.com/dropseed/plain/commit/569afd6))
|
|
8
|
+
|
|
9
|
+
### Upgrade instructions
|
|
10
|
+
|
|
11
|
+
- Replace `class MyView(HTMXViewMixin, TemplateView)` with `class MyView(HTMXView)` - the new `HTMXView` class already inherits from `TemplateView`
|
|
12
|
+
- Update imports from `from plain.htmx.views import HTMXViewMixin` to `from plain.htmx.views import HTMXView`
|
|
13
|
+
|
|
14
|
+
## [0.12.0](https://github.com/dropseed/plain/releases/plain-htmx@0.12.0) (2025-11-12)
|
|
15
|
+
|
|
16
|
+
### What's changed
|
|
17
|
+
|
|
18
|
+
- Improved type checking compatibility by adding type ignore comments for mixin methods and ensuring proper None handling ([f4dbcef](https://github.com/dropseed/plain/commit/f4dbcef))
|
|
19
|
+
|
|
20
|
+
### Upgrade instructions
|
|
21
|
+
|
|
22
|
+
- No changes required
|
|
23
|
+
|
|
3
24
|
## [0.11.1](https://github.com/dropseed/plain/releases/plain-htmx@0.11.1) (2025-10-31)
|
|
4
25
|
|
|
5
26
|
### What's changed
|
plain/htmx/templates.py
CHANGED
|
@@ -21,10 +21,11 @@ class HTMXJSExtension(InclusionTagExtension):
|
|
|
21
21
|
def get_context(
|
|
22
22
|
self, context: dict[str, Any], *args: Any, **kwargs: Any
|
|
23
23
|
) -> dict[str, Any]:
|
|
24
|
+
request = context.get("request")
|
|
24
25
|
return {
|
|
25
26
|
"DEBUG": settings.DEBUG,
|
|
26
27
|
"extensions": kwargs.get("extensions", []),
|
|
27
|
-
"csp_nonce":
|
|
28
|
+
"csp_nonce": request.csp_nonce if request else None, # type: ignore[attr-defined]
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
|
plain/htmx/views.py
CHANGED
|
@@ -3,13 +3,16 @@ from __future__ import annotations
|
|
|
3
3
|
from collections.abc import Callable
|
|
4
4
|
from typing import Any
|
|
5
5
|
|
|
6
|
-
from plain.http import
|
|
6
|
+
from plain.http import ResponseBase
|
|
7
7
|
from plain.utils.cache import patch_vary_headers
|
|
8
|
+
from plain.views import TemplateView
|
|
8
9
|
|
|
9
10
|
from .templates import render_template_fragment
|
|
10
11
|
|
|
11
12
|
|
|
12
|
-
class
|
|
13
|
+
class HTMXView(TemplateView):
|
|
14
|
+
"""View with HTMX-specific functionality."""
|
|
15
|
+
|
|
13
16
|
def render_template(self) -> str:
|
|
14
17
|
template = self.get_template()
|
|
15
18
|
context = self.get_template_context()
|
|
@@ -23,7 +26,7 @@ class HTMXViewMixin:
|
|
|
23
26
|
|
|
24
27
|
return template.render(context)
|
|
25
28
|
|
|
26
|
-
def get_response(self) ->
|
|
29
|
+
def get_response(self) -> ResponseBase:
|
|
27
30
|
response = super().get_response()
|
|
28
31
|
# Tell browser caching to also consider the fragment header,
|
|
29
32
|
# not just the url/cookie.
|
|
@@ -32,8 +35,8 @@ class HTMXViewMixin:
|
|
|
32
35
|
)
|
|
33
36
|
return response
|
|
34
37
|
|
|
35
|
-
def get_request_handler(self) -> Callable[
|
|
36
|
-
if self.is_htmx_request():
|
|
38
|
+
def get_request_handler(self) -> Callable[[], Any] | None:
|
|
39
|
+
if self.is_htmx_request() and self.request.method:
|
|
37
40
|
# You can use an htmx_{method} method on views
|
|
38
41
|
# (or htmx_{method}_{action} for specific actions)
|
|
39
42
|
method = f"htmx_{self.request.method.lower()}"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
plain/htmx/CHANGELOG.md,sha256=
|
|
1
|
+
plain/htmx/CHANGELOG.md,sha256=VAOOkBg5IAYKs5BrV2vWcbWD65KZguNg37tyP2ETXGA,4068
|
|
2
2
|
plain/htmx/README.md,sha256=C9H_66JD9tykCiTbKjZFAzX7MkVrym58wsEaA1wjxqY,12690
|
|
3
3
|
plain/htmx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
|
-
plain/htmx/templates.py,sha256=
|
|
5
|
-
plain/htmx/views.py,sha256=
|
|
4
|
+
plain/htmx/templates.py,sha256=Dklc6WIL87sBo-gYmVq8kAPHcJ1BoxcZClJ4WWvHRQ8,6672
|
|
5
|
+
plain/htmx/views.py,sha256=6Y2ttsTe3EaUwb2jzU3jMil4U9TAasbah7DJF9yjS8o,2371
|
|
6
6
|
plain/htmx/assets/htmx/plainhtmx.js,sha256=rFFS_ogFTAeON7EX6HRwbyKH3voM5MVcPFfQzSX77cY,2014
|
|
7
7
|
plain/htmx/assets/htmx/vendor/idiomorph/idiomorph-ext.js,sha256=UvnPpQ3Jg380QwIF5PzlxmUQJuoMt6BxsmS_PMd2ayM,48004
|
|
8
8
|
plain/htmx/assets/htmx/vendor/idiomorph/idiomorph-ext.min.js,sha256=Ax3YbD9-2A-Ha_81wI5E4NLHHOjAvNJw4GvDocg2i-s,10313
|
|
@@ -44,7 +44,7 @@ plain/htmx/assets/htmx/vendor/src/ext/restored.js,sha256=0td3Ga2ZIcVdFKJm6FoCXTm
|
|
|
44
44
|
plain/htmx/assets/htmx/vendor/src/ext/sse.js,sha256=ju2N9N81ASa-ncT6JJbm65iQ4y9iAqKXRuPDwOcATBM,10320
|
|
45
45
|
plain/htmx/assets/htmx/vendor/src/ext/ws.js,sha256=KMVp1yOrFb6ncZUprsnN3OPRpmV9GG0YBuLSW1wekMc,13899
|
|
46
46
|
plain/htmx/templates/htmx/js.html,sha256=4G-EW1NWhqzXVtgND5rqkOmwgCO8XEGfvJTw4gy_BSA,883
|
|
47
|
-
plain_htmx-0.
|
|
48
|
-
plain_htmx-0.
|
|
49
|
-
plain_htmx-0.
|
|
50
|
-
plain_htmx-0.
|
|
47
|
+
plain_htmx-0.13.0.dist-info/METADATA,sha256=vnjiXTbjmrzdP5vVhIjhkUKOxqQ79TfXFghVhwd99Kg,12999
|
|
48
|
+
plain_htmx-0.13.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
49
|
+
plain_htmx-0.13.0.dist-info/licenses/LICENSE,sha256=cvKM3OlqHx3ijD6e34zsSUkPvzl-ya3Dd63A6EHL94U,1500
|
|
50
|
+
plain_htmx-0.13.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|