Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/django/contrib/admin/templatetags/log.py: 24%
30 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 django import template
2from django.contrib.admin.models import LogEntry
4register = template.Library()
7class AdminLogNode(template.Node):
8 def __init__(self, limit, varname, user):
9 self.limit, self.varname, self.user = limit, varname, user
11 def __repr__(self):
12 return "<GetAdminLog Node>"
14 def render(self, context):
15 if self.user is None:
16 entries = LogEntry.objects.all()
17 else:
18 user_id = self.user
19 if not user_id.isdigit():
20 user_id = context[self.user].pk
21 entries = LogEntry.objects.filter(user__pk=user_id)
22 context[self.varname] = entries.select_related("content_type", "user")[
23 : int(self.limit)
24 ]
25 return ""
28@register.tag
29def get_admin_log(parser, token):
30 """
31 Populate a template variable with the admin log for the given criteria.
33 Usage::
35 {% get_admin_log [limit] as [varname] for_user [context_var_with_user_obj] %}
37 Examples::
39 {% get_admin_log 10 as admin_log for_user 23 %}
40 {% get_admin_log 10 as admin_log for_user user %}
41 {% get_admin_log 10 as admin_log %}
43 Note that ``context_var_containing_user_obj`` can be a hard-coded integer
44 (user ID) or the name of a template context variable containing the user
45 object whose ID you want.
46 """
47 tokens = token.contents.split()
48 if len(tokens) < 4:
49 raise template.TemplateSyntaxError(
50 "'get_admin_log' statements require two arguments"
51 )
52 if not tokens[1].isdigit():
53 raise template.TemplateSyntaxError(
54 "First argument to 'get_admin_log' must be an integer"
55 )
56 if tokens[2] != "as":
57 raise template.TemplateSyntaxError(
58 "Second argument to 'get_admin_log' must be 'as'"
59 )
60 if len(tokens) > 4:
61 if tokens[4] != "for_user":
62 raise template.TemplateSyntaxError(
63 "Fourth argument to 'get_admin_log' must be 'for_user'"
64 )
65 return AdminLogNode(
66 limit=tokens[1],
67 varname=tokens[3],
68 user=(tokens[5] if len(tokens) > 5 else None),
69 )