Speeding up with cache

This commit is contained in:
László Károlyi 2024-09-12 12:50:04 +02:00
parent a1a55864d2
commit cb237826b9
Signed by: karolyi
GPG key ID: 2DCAF25E55735BFE

View file

@ -1,5 +1,6 @@
from __future__ import annotations
from functools import lru_cache
from typing import Any
from django.forms.boundfield import BoundField
@ -18,6 +19,13 @@ from ktools.django.jinja.backend import KtoolsJinjaBackend
_k_jinja_backend: KtoolsJinjaBackend
@lru_cache(maxsize=None)
def _get_template(template_name: str) -> Template:
'Return (and cache) a `Template` to render.'
return _k_jinja_backend.get_template(
template_name=template_name) # pyright: ignore[reportReturnType]
@pass_context
def ktools_render_messages(
context: Context, request: HttpRequest, variant: str = 'bootstrap5-v1'
@ -25,9 +33,8 @@ def ktools_render_messages(
'Rendering a HTML message in various formats from ktools templates.'
match variant:
case 'bootstrap5-v1':
template = _k_jinja_backend.get_template(
template_name=(
'ktools/render-content/messages-bootstrap5-v1.html.jinja'))
template = _get_template(template_name=(
'ktools/render-content/messages-bootstrap5-v1.html.jinja'))
return template.render(context=context, request=request)
case _:
raise TemplateNotFound(
@ -80,14 +87,10 @@ class KTemplatesSetting(BaseRenderer):
Add the `_KBoundField` back to the context so that the template
can use it.
"""
template = self.get_template(template_name)
template = _get_template(template_name=template_name)
context['_k_boundfield'] = self._k_boundfield
return template.render(context=context, request=request).strip()
def get_template(self, template_name: str) -> Template:
'Find our templates faster.'
return _k_jinja_backend.get_template(template_name=template_name)
class _KBoundField(BoundField):