Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/contrib/admin/templatetags/base.py: 41%
15 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1from inspect import getfullargspec
3from django.template.library import InclusionNode, parse_bits
6class InclusionAdminNode(InclusionNode):
7 """
8 Template tag that allows its template to be overridden per model, per app,
9 or globally.
10 """
12 def __init__(self, parser, token, func, template_name, takes_context=True):
13 self.template_name = template_name
14 params, varargs, varkw, defaults, kwonly, kwonly_defaults, _ = getfullargspec(
15 func
16 )
17 bits = token.split_contents()
18 args, kwargs = parse_bits(
19 parser,
20 bits[1:],
21 params,
22 varargs,
23 varkw,
24 defaults,
25 kwonly,
26 kwonly_defaults,
27 takes_context,
28 bits[0],
29 )
30 super().__init__(func, takes_context, args, kwargs, filename=None)
32 def render(self, context):
33 opts = context["opts"]
34 app_label = opts.app_label.lower()
35 object_name = opts.object_name.lower()
36 # Load template for this render call. (Setting self.filename isn't
37 # thread-safe.)
38 context.render_context[self] = context.template.engine.select_template(
39 [
40 "admin/%s/%s/%s" % (app_label, object_name, self.template_name),
41 "admin/%s/%s" % (app_label, self.template_name),
42 "admin/%s" % self.template_name,
43 ]
44 )
45 return super().render(context)