1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| from django.template import engines, loader
from django.utils.safestring import mark_safe
from django.db.models import QuerySet
def render(src, request=None, engine_name="django", safe=True, **ctx):
text = engines[engine_name].from_string(src).render(ctx, request=request)
return safe and mark_safe(text) or text
def render_by(name, request=None, safe=True, **ctx):
t = loader.get_template(name)
text = t.render(ctx, request=request)
return safe and mark_safe(text) or text
def export_trees(nodes, model_class=None, template_name=None, request=None, safe=True, **ctx):
if not model_class and isinstance(nodes, QuerySet):
model_class = nodes.model
if not template_name and model_class:
template_name = f"{model_class._meta.app_label}/{model_class._meta.model_name}/tree.json"
if not template_name:
return ""
return render_by(template_name, request=request, safe=safe, nodes=nodes, **ctx)
|