'<' not supported between instances of 'User' and 'User'
Request Method: | GET |
---|---|
Request URL: | http://smartykegs.thickasthievesbrewingco.com/kegs/13/ |
Django Version: | 3.2.14 |
Exception Type: | TypeError |
Exception Value: | '<' not supported between instances of 'User' and 'User' |
Exception Location: | /app/pykeg/core/models.py, line 1096, in get_top_users |
Python Executable: | /usr/local/bin/python |
Python Version: | 3.10.5 |
Python Path: | ['/usr/local/bin', '/usr/local/lib/python310.zip', '/usr/local/lib/python3.10', '/usr/local/lib/python3.10/lib-dynload', '/root/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/site-packages', '/app'] |
Server time: | Thu, 28 Mar 2024 21:53:44 +1100 |
In template /app/pykeg/web/templates/skel.html
, error at line 0
1 | {# Bare-bones skeletal template. #} |
---|---|
2 | {% load static humanize kegweblib %} |
3 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
4 | "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
5 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
6 | <head> |
7 | <title>{% block title %}Kegbot{% endblock %}</title> |
8 | |
9 | <script type="text/javascript" src={% static "js/jquery-1.9.1.min.js" %}></script> |
10 |
/usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py
, line 47, in inner
response = await sync_to_async(response_for_exception, thread_sensitive=False)(request, exc)
return response
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | TypeError("'<' not supported between instances of 'User' and 'User'") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fb7b259b880>> |
request | <WSGIRequest: GET '/kegs/13/'> |
/usr/local/lib/python3.10/site-packages/django/core/handlers/base.py
, line 181, in _get_response
if response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if asyncio.iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs)…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
callback | <function keg_detail at 0x7fb7b03cfd00> |
callback_args | () |
callback_kwargs | {'keg_id': 13} |
middleware_method | <bound method PrivacyMiddleware.process_view of <pykeg.web.middleware.PrivacyMiddleware object at 0x7fb7b2413d30>> |
request | <WSGIRequest: GET '/kegs/13/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7fb7b259b880> |
wrapped_callback | <function keg_detail at 0x7fb7b03cfd00> |
/usr/local/lib/python3.10/site-packages/django/utils/decorators.py
, line 130, in _wrapped_view
if result is not None:
return result
if hasattr(middleware, 'process_view'):
result = middleware.process_view(request, view_func, args, kwargs)
if result is not None:
return result
try:
response = view_func(request, *args, **kwargs)…
except Exception as e:
if hasattr(middleware, 'process_exception'):
result = middleware.process_exception(request, e)
if result is not None:
return result
raise
Variable | Value |
---|---|
args | () |
kwargs | {'keg_id': 13} |
middleware | <django.middleware.cache.CacheMiddleware object at 0x7fb7b03d2a40> |
request | <WSGIRequest: GET '/kegs/13/'> |
result | None |
view_func | <function keg_detail at 0x7fb7b03cfbe0> |
/app/pykeg/web/kegweb/views.py
, line 124, in keg_detail
context = {
"keg": keg,
"stats": keg.get_stats(),
"sessions": sessions,
"last_session": last_session,
}
return render(request, "kegweb/keg_detail.html", context=context)…
def short_drink_detail(request, drink_id):
return redirect("kb-drink", drink_id=str(drink_id), permanent=True)
Variable | Value |
---|---|
context | {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>], 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'stats': {'average_volume_ml': 432.6530612244898, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'has_guest_pour': True, 'keg_ids': [13], 'largest_session': {'session_id': 84, 'volume_ml': 6504.0}, 'last_drink_id': 641, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'sessions_count': 22, 'total_pours': 49, 'total_volume_ml': 21200.0, 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}, 'volume_by_drinker': {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, … <trimmed 4433 bytes string> |
keg | <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co> |
keg_id | 13 |
last_session | [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>] |
request | <WSGIRequest: GET '/kegs/13/'> |
sessions | [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>] |
/usr/local/lib/python3.10/site-packages/django/shortcuts.py
, line 19, in render
def render(request, template_name, context=None, content_type=None, status=None, using=None):
"""
Return a HttpResponse whose content is filled with the result of calling
django.template.loader.render_to_string() with the passed arguments.
"""
content = loader.render_to_string(template_name, context, request, using=using)…
return HttpResponse(content, content_type, status)
def redirect(to, *args, permanent=False, **kwargs):
"""
Return an HttpResponseRedirect to the appropriate URL for the arguments
Variable | Value |
---|---|
content_type | None |
context | {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>], 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'stats': {'average_volume_ml': 432.6530612244898, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'has_guest_pour': True, 'keg_ids': [13], 'largest_session': {'session_id': 84, 'volume_ml': 6504.0}, 'last_drink_id': 641, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'sessions_count': 22, 'total_pours': 49, 'total_volume_ml': 21200.0, 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}, 'volume_by_drinker': {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, … <trimmed 4433 bytes string> |
request | <WSGIRequest: GET '/kegs/13/'> |
status | None |
template_name | 'kegweb/keg_detail.html' |
using | None |
/usr/local/lib/python3.10/site-packages/django/template/loader.py
, line 62, in render_to_string
template_name may be a string or a list of strings.
"""
if isinstance(template_name, (list, tuple)):
template = select_template(template_name, using=using)
else:
template = get_template(template_name, using=using)
return template.render(context, request)…
def _engine_list(using=None):
return engines.all() if using is None else [engines[using]]
Variable | Value |
---|---|
context | {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>], 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'stats': {'average_volume_ml': 432.6530612244898, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'has_guest_pour': True, 'keg_ids': [13], 'largest_session': {'session_id': 84, 'volume_ml': 6504.0}, 'last_drink_id': 641, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'sessions_count': 22, 'total_pours': 49, 'total_volume_ml': 21200.0, 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}, 'volume_by_drinker': {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, … <trimmed 4433 bytes string> |
request | <WSGIRequest: GET '/kegs/13/'> |
template | <django.template.backends.django.Template object at 0x7fb7af8a4d00> |
template_name | 'kegweb/keg_detail.html' |
using | None |
/usr/local/lib/python3.10/site-packages/django/template/backends/django.py
, line 61, in render
@property
def origin(self):
return self.template.origin
def render(self, context=None, request=None):
context = make_context(context, request, autoescape=self.backend.engine.autoescape)
try:
return self.template.render(context)…
except TemplateDoesNotExist as exc:
reraise(exc, self.backend)
def copy_exception(exc, backend=None):
"""
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
request | <WSGIRequest: GET '/kegs/13/'> |
self | <django.template.backends.django.Template object at 0x7fb7af8a4d00> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 170, in render
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
context.template_name = self.name
return self._render(context)…
else:
return self._render(context)
def compile_nodelist(self):
"""
Parse and compile the template source into a nodelist. If debug
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <django.template.base.Template object at 0x7fb7af7d0a30> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <django.template.base.Template object at 0x7fb7af7d0a30> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bits | [] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py
, line 150, in render
compiled_parent.nodelist.get_nodes_by_type(BlockNode)}
block_context.add_blocks(blocks)
break
# Call Template._render explicitly so the parser context stays
# the same.
with context.render_context.push_state(compiled_parent, isolated_context=False):
return compiled_parent._render(context)…
class IncludeNode(Node):
context_key = '__include_context'
def __init__(self, template, *args, extra_context=None, isolated_context=False, **kwargs):
Variable | Value |
---|---|
block_context | <django.template.loader_tags.BlockContext object at 0x7fb7af8a6a40> |
compiled_parent | <django.template.base.Template object at 0x7fb7af795a20> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <ExtendsNode: extends "skel.html"> |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <django.template.base.Template object at 0x7fb7af795a20> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bits | [] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <ExtendsNode: extends "skel.html"> |
self | [<ExtendsNode: extends "skel.html">] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <ExtendsNode: extends "skel.html"> |
/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py
, line 150, in render
compiled_parent.nodelist.get_nodes_by_type(BlockNode)}
block_context.add_blocks(blocks)
break
# Call Template._render explicitly so the parser context stays
# the same.
with context.render_context.push_state(compiled_parent, isolated_context=False):
return compiled_parent._render(context)…
class IncludeNode(Node):
context_key = '__include_context'
def __init__(self, template, *args, extra_context=None, isolated_context=False, **kwargs):
Variable | Value |
---|---|
block_context | <django.template.loader_tags.BlockContext object at 0x7fb7af8a6a40> |
blocks | {'body': <Block Node: body. Contents: [<TextNode: '\n'>]>, 'bodyattrs': <Block Node: bodyattrs. Contents: []>, 'css': <Block Node: css. Contents: [<TextNode: '\n<link rel="icon" type="i'>, <django.templatetags.static.StaticNode object at 0x7fb7af9379d0>, <TextNode: ' />\n<link rel="stylesheet'>, <django.templatetags.static.StaticNode object at 0x7fb7af935b40>, <TextNode: ' media="screen"/>\n<link r'>, <django.templatetags.static.StaticNode object at 0x7fb7af937190>, <TextNode: ' media="screen" />\n'>]>, 'js': <Block Node: js. Contents: [<TextNode: '\n<script type="text/javas'>, <django.templatetags.static.StaticNode object at 0x7fb7af934a00>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b03963e0>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0395570>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0397b20>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0396bf0>, <TextNode: '></script>\n\n<script type='>, <django.templatetags.static.StaticNode object at 0x7fb7b0396530>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0394e80>, <TextNode: '></script>\n\n<script type='>, <django.templatetags.static.StaticNode object at 0x7fb7b03940a0>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0395ae0>, <TextNode: '></script>\n\n'>, <IfNode>, <TextNode: '\n\n<script type="text/java'>, <IfNode>, <TextNode: ' })\n $("abbr.timeago'>, <IfNode>, <TextNode: ';\n if (metric) {\n '>, <IfNode>, <TextNode: '\n\n'>]>, 'kb-extracss': <Block Node: kb-extracss. Contents: []>, 'kb-extrajs': <Block Node: kb-extrajs. Contents: []>, 'title': <Block Node: title. Contents: [<TextNode: 'Kegbot'>]>} |
compiled_parent | <django.template.base.Template object at 0x7fb7af875e10> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <django.template.defaulttags.LoadNode object at 0x7fb7af937580> |
self | <ExtendsNode: extends "skel.html"> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 162, in _render
self.nodelist = self.compile_nodelist()
def __iter__(self):
for node in self.nodelist:
yield from node
def _render(self, context):
return self.nodelist.render(context)…
def render(self, context):
"Display stage -- can be called many times"
with context.render_context.push_state(self):
if context.template is None:
with context.bind_template(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <django.template.base.Template object at 0x7fb7af875e10> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '>\n' |
bits | ['\n', '', '\n' '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n' ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n' '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n' '<head>\n' '<title>', 'Keg 13 | ThickasThievesBrewingCo', '</title>\n\n<script type="text/javascript" src=', '/static/js/jquery-1.9.1.min.js', '></script>\n\n', '\n' '\n' '<link rel="icon" type="image/png" href=/static/images/kegbot-icon-72x72.png ' '/>\n' '<link rel="stylesheet" type="text/css" href=/static/css/kegweb.css ' 'media="screen"/>\n' '<link rel="stylesheet" type="text/css" ' 'href=/static/fancybox/jquery.fancybox.css media="screen" />\n' '\n' '<style>\n' ' body {\n' '\n' ' background-image: url(/static/images/background.png);\n' ' \n' ' background-repeat: no-repeat;\n' ' background-attachment: fixed;\n' ' }\n' '</style>\n' '\n', '\n\n', '', '\n</head>\n\n<body ', '', '>\n'] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <Block Node: body. Contents: [<TextNode: '\n'>]> |
self | [<TextNode: '\n'>, <django.template.defaulttags.LoadNode object at 0x7fb7af937580>, <TextNode: '\n<!DOCTYPE html PUBLIC "-'>, <Block Node: title. Contents: [<TextNode: 'Kegbot'>]>, <TextNode: '</title>\n\n<script type="t'>, <django.templatetags.static.StaticNode object at 0x7fb7af935840>, <TextNode: '></script>\n\n'>, <Block Node: css. Contents: [<TextNode: '\n<link rel="icon" type="i'>, <django.templatetags.static.StaticNode object at 0x7fb7af9379d0>, <TextNode: ' />\n<link rel="stylesheet'>, <django.templatetags.static.StaticNode object at 0x7fb7af935b40>, <TextNode: ' media="screen"/>\n<link r'>, <django.templatetags.static.StaticNode object at 0x7fb7af937190>, <TextNode: ' media="screen" />\n'>]>, <TextNode: '\n\n'>, <Block Node: kb-extracss. Contents: []>, <TextNode: '\n</head>\n\n<body '>, <Block Node: bodyattrs. Contents: []>, <TextNode: '>\n'>, <Block Node: body. Contents: [<TextNode: '\n'>]>, <TextNode: '\n\n'>, <Block Node: js. Contents: [<TextNode: '\n<script type="text/javas'>, <django.templatetags.static.StaticNode object at 0x7fb7af934a00>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b03963e0>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0395570>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0397b20>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0396bf0>, <TextNode: '></script>\n\n<script type='>, <django.templatetags.static.StaticNode object at 0x7fb7b0396530>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0394e80>, <TextNode: '></script>\n\n<script type='>, <django.templatetags.static.StaticNode object at 0x7fb7b03940a0>, <TextNode: '></script>\n<script type="'>, <django.templatetags.static.StaticNode object at 0x7fb7b0395ae0>, <TextNode: '></script>\n\n'>, <IfNode>, <TextNode: '\n\n<script type="text/java'>, <IfNode>, <TextNode: ' })\n $("abbr.timeago'>, <IfNode>, <TextNode: ';\n if (metric) {\n '>, <IfNode>, <TextNode: '\n\n'>]>, <TextNode: '\n\n'>, <Block Node: kb-extrajs. Contents: []>, <TextNode: '\n</body>\n'>] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <Block Node: body. Contents: [<TextNode: '\n'>]> |
/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py
, line 62, in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = type(self)(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)…
if push is not None:
block_context.push(self.name, push)
return result
def super(self):
if not hasattr(self, 'context'):
Variable | Value |
---|---|
block | <Block Node: body. Contents: [<TextNode: '\n <div class="navbar nav'>, <django.template.defaulttags.SpacelessNode object at 0x7fb7af97eec0>, <TextNode: '\n\n <ul class="nav"'>, <IfNode>, <TextNode: '\n </ul>\n\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>'>, <Block Node: header-margin. Contents: [<TextNode: '\n <div class="page-hea'>, <Block Node: pagetitle. Contents: []>, <TextNode: '</h1>\n '>, <Block Node: breadcrumbs. Contents: []>, <TextNode: '\n '>, <Block Node: messages. Contents: [<TextNode: '\n '>, <ForNode: for message in messages, tail_len: 5>, <TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>, <TextNode: '\n\n <div id="content">\n'>, <Block Node: content. Contents: []>, <TextNode: '\n '>, <Block Node: extra-content. Contents: []>, <TextNode: '\n </div>\n\n <footer>'>, <IfNode>, <TextNode: '\n —\n '>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7fb7af8a6a40> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
push | <Block Node: body. Contents: [<TextNode: '\n <div class="navbar nav'>, <django.template.defaulttags.SpacelessNode object at 0x7fb7af97eec0>, <TextNode: '\n\n <ul class="nav"'>, <IfNode>, <TextNode: '\n </ul>\n\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>'>, <Block Node: header-margin. Contents: [<TextNode: '\n <div class="page-hea'>, <Block Node: pagetitle. Contents: []>, <TextNode: '</h1>\n '>, <Block Node: breadcrumbs. Contents: []>, <TextNode: '\n '>, <Block Node: messages. Contents: [<TextNode: '\n '>, <ForNode: for message in messages, tail_len: 5>, <TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>, <TextNode: '\n\n <div id="content">\n'>, <Block Node: content. Contents: []>, <TextNode: '\n '>, <Block Node: extra-content. Contents: []>, <TextNode: '\n </div>\n\n <footer>'>, <IfNode>, <TextNode: '\n —\n '>]> |
self | <Block Node: body. Contents: [<TextNode: '\n'>]> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '\n\n <div id="content">\n ' |
bits | ['\n' ' <div class="navbar navbar-inverse navbar-fixed-top">\n' ' <div class="navbar-inner">\n' ' <div class="container">\n' ' ', '<a class="brand" href="/">\n' ' \n' ' ThickasThievesBrewingCo\n' ' </a>', '\n\n <ul class="nav">\n ', '\n' ' <li><a href="/sessions/">Sessions</a></li>\n' ' <li class="active"><a href="/kegs/">Kegs</a></li>\n' ' <li><a href="/stats/">Stats</a></li>\n' ' \n' ' \n' ' ', '\n </ul>\n\n ', '\n' ' <ul class="nav pull-right">\n' ' \n' ' <li><a href="/accounts/register/"><i class="icon-edit ' 'icon-white"></i> New Drinker</a></li>\n' ' \n' ' \n' ' <li class="dropdown">\n' ' <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i ' 'class="icon-user icon-white"></i> Sign In <b class="caret"></b></a>\n' ' <ul class="dropdown-menu" style="padding: 15px;">\n' ' <form action="/accounts/login/" method="POST">\n' ' <input type="hidden" name="csrfmiddlewaretoken" ' 'value="1fzfTOLQQRuP9XQRgwlpZYeDfneOU5YAmKJw1cYBaPDGkTKVOLJF3C6OICOxkFmN">\n' ' \n' ' \n' ' <input type="hidden" name="next_page" value="/kegs/13/" ' 'id="id_next_page">\n' ' \n' ' \n' ' <input class="span2" name="username" type="text" ' 'placeholder="Username" >\n' ' <input class="span2" name="password" type="password" ' 'placeholder="Password">\n' ' <button class="btn" type="submit">Log In <i ' 'class="icon-ok"></i></button>\n' ' </form>\n' ' </ul>\n' ' </li>\n' ' \n' ' </ul>\n' ' ', '\n' '\n' ' </div>\n' ' </div>\n' ' </div> <!-- /.navbar -->\n' '\n' ' <div class="container">\n' ' ', '\n' ' <div class="page-header">\n' ' <h1>Keg 13</h1>\n' ' \n' ' \n' ' \n' ' \n' ' </div>\n' ' ', '\n\n <div id="content">\n '] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <Block Node: content. Contents: []> |
self | [<TextNode: '\n <div class="navbar nav'>, <django.template.defaulttags.SpacelessNode object at 0x7fb7af97eec0>, <TextNode: '\n\n <ul class="nav"'>, <IfNode>, <TextNode: '\n </ul>\n\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>'>, <Block Node: header-margin. Contents: [<TextNode: '\n <div class="page-hea'>, <Block Node: pagetitle. Contents: []>, <TextNode: '</h1>\n '>, <Block Node: breadcrumbs. Contents: []>, <TextNode: '\n '>, <Block Node: messages. Contents: [<TextNode: '\n '>, <ForNode: for message in messages, tail_len: 5>, <TextNode: '\n '>]>, <TextNode: '\n </div>\n '>]>, <TextNode: '\n\n <div id="content">\n'>, <Block Node: content. Contents: []>, <TextNode: '\n '>, <Block Node: extra-content. Contents: []>, <TextNode: '\n </div>\n\n <footer>'>, <IfNode>, <TextNode: '\n —\n '>] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <Block Node: content. Contents: []> |
/usr/local/lib/python3.10/site-packages/django/template/loader_tags.py
, line 62, in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = type(self)(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)…
if push is not None:
block_context.push(self.name, push)
return result
def super(self):
if not hasattr(self, 'context'):
Variable | Value |
---|---|
block | <Block Node: content. Contents: [<TextNode: '\n<div class="row">\n <div'>, <IfNode>, <TextNode: '\n </ul>\n\n <div clas'>, <Variable Node: keg.type.name>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n </h2>\n\n '>, <IfNode>, <TextNode: '\n \n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af796530>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n </div>\n </d'>, <IfNode>, <TextNode: '\n </td>\n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af513160>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n\n </tbody>\n '>, <pykeg.web.kegweb.templatetags.kegweblib.ChartNode object at 0x7fb7af511b70>, <TextNode: '</td>\n </tr>\n\n'>, <WithNode>, <TextNode: '\n </tbody>\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>\n\n '>, <IfNode>, <TextNode: '\n </div>\n</div>\n\n'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7fb7af8a6a40> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
push | <Block Node: content. Contents: [<TextNode: '\n<div class="row">\n <div'>, <IfNode>, <TextNode: '\n </ul>\n\n <div clas'>, <Variable Node: keg.type.name>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n </h2>\n\n '>, <IfNode>, <TextNode: '\n \n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af796530>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n </div>\n </d'>, <IfNode>, <TextNode: '\n </td>\n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af513160>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n\n </tbody>\n '>, <pykeg.web.kegweb.templatetags.kegweblib.ChartNode object at 0x7fb7af511b70>, <TextNode: '</td>\n </tr>\n\n'>, <WithNode>, <TextNode: '\n </tbody>\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>\n\n '>, <IfNode>, <TextNode: '\n </div>\n</div>\n\n'>]> |
self | <Block Node: content. Contents: []> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '\n\n </div>\n </div>\n\n <div class="span4">\n ' |
bits | ['\n' '<div class="row">\n' ' <div class="span8">\n' ' <ul class="nav nav-tabs" id="kegDetails">\n' ' <li><a href="#1" data-toggle="tab">Vitals</a></li>\n' ' <li><a href="#2" data-toggle="tab">Summary</a></li>\n' ' <li><a href="#3" data-toggle="tab">Charts</a></li>\n' ' ', '\n <li><a href="#4" data-toggle="tab">Last Session</a></li>\n ', '\n' ' </ul>\n' '\n' ' <div class="tab-content">\n' ' <div class="tab-pane" id="1">\n' ' <div class="well well-small">\n' '\n' ' <h2>\n' ' ', 'Toady Kolsch - 5.1%', '\n ', '\n' ' <small>Thick as Thieves Brewing Co</small>\n' ' \n' ' ', '\n </h2>\n\n ', '', '\n \n ', '\n' '\n' '<ul class="badge-list">\n' ' <li>\n' ' <h2><span class="hmeasure " title="21200.0 mL">\n' ' <span class="num">21200.0</span>\n' ' <span class="unit">mL</span>\n' ' </span></h2>\n' ' <small>Poured</small>\n' ' </li>\n' ' \n' ' <li>\n' ' \n' ' <h2><span class="hmeasure " title="0.0 mL">\n' ' <span class="num">0.0</span>\n' ' <span class="unit">mL</span>\n' ' </span></h2>\n' ' \n' ' <small>Remaining</small>\n' ' </li>\n' ' \n' ' <li>\n' ' <h2>7</h2>\n' ' <small>Drinkers</small>\n' ' </li>\n' ' <li>\n' ' <h2>22</h2>\n' ' <small>Sessions</small>\n' ' </li>\n' '</ul>\n' '\n', '\n\n ', '', '\n' ' </div>\n' ' </div>\n' '\n' ' <div class="tab-pane" id="2">\n' ' <table class="table table-condensed table-striped">\n' ' <tbody>\n' ' <tr>\n' ' <th>Status</th>\n' ' <td>\n' ' ', '\n' ' Keg is <b>offline</b>; it lasted 50\n' ' days.\n' ' ', '\n </td>\n </tr>\n\n ', '\n' '\n' '<tr>\n' ' <th>Sessions</th>\n' ' <td>\n' ' A total of\n' ' <b>22 drinking sessions</b>\n' ' have been recorded.\n' ' </td>\n' '</tr>\n' '\n' '<tr>\n' ' <th>Drinks</th>\n' ' <td>\n' ' A total of\n' ' <b>49 pours</b> have been recorded,\n' ' totalling <b><span class="hmeasure " title="21200.0 mL">\n' ' <span class="num">21200.0</span>\n' ' <span class="unit">mL</span>\n' ' </span></b>.\n' ' </td>\n' '</tr>\n' '\n' '<tr>\n' ' <th>Drinkers</th>\n' ' <td>\n' ' At least\n' ' <b>7 known\n' ' drinkers</b> (and untold guests)\n' ' have poured.\n' ' </td>\n' '</tr>\n' '\n' '\n' '<tr>\n' ' <th>Average Pour</th>\n' ' <td>\n' ' The average pour size is\n' ' <b><span class="hmeasure " title="432.6530612244898 mL">\n' ' <span class="num">432.6530612244898</span>\n' ' <span class="unit">mL</span>\n' ' </span></b>.\n' ' </td>\n' '</tr>\n' '\n' '\n' '\n', '\n\n ', '', '\n' '\n' ' </tbody>\n' ' </table>\n' ' </div>\n' '\n' ' <div class="tab-pane" id="3">\n' ' <table class="table table-condensed">\n' ' <tbody>\n' ' <tr>\n' ' <th>Volume by Weekday</th>\n' ' <td>', '\n' ' <!-- begin chart 1 -->\n' ' <div id="chart-1-container"\n' ' style="height: 100px; width: 340px;"\n' ' class="kb-chartbox"></div>\n' ' <script type="text/javascript">\n' ' var chart_1;\n' ' $(document).ready(function() {\n' ' var chart_data = {"chart": {"borderColor": "#eeeeff", "borderWidth": ' '0, "renderTo": "chart-1-container", "defaultSeriesType": "column"}, ' '"credits": {"enabled": false}, "legend": {"enabled": false}, "margin": [0, ' '0, 0, 0], "title": {"text": null}, "yAxis": {"labels": {"align": "left"}, ' '"title": {"text": null}, "min": 0}, "xAxis": {"categories": ["Sun", "Mon", ' '"Tue", "Wed", "Thu", "Fri", "Sat"]}, "series": [{"data": [4.996, 1.536, ' '2.414, 4.317, 2.426, 2.883, 2.628]}], "tooltip": {"enabled": false}};\n' ' chart_1… <trimmed 5938 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <IfNode> |
self | [<TextNode: '\n<div class="row">\n <div'>, <IfNode>, <TextNode: '\n </ul>\n\n <div clas'>, <Variable Node: keg.type.name>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n </h2>\n\n '>, <IfNode>, <TextNode: '\n \n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af796530>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n </div>\n </d'>, <IfNode>, <TextNode: '\n </td>\n '>, <django.template.loader_tags.IncludeNode object at 0x7fb7af513160>, <TextNode: '\n\n '>, <IfNode>, <TextNode: '\n\n </tbody>\n '>, <pykeg.web.kegweb.templatetags.kegweblib.ChartNode object at 0x7fb7af511b70>, <TextNode: '</td>\n </tr>\n\n'>, <WithNode>, <TextNode: '\n </tbody>\n '>, <IfNode>, <TextNode: '\n\n </div>\n </div>\n\n '>, <IfNode>, <TextNode: '\n </div>\n</div>\n\n'>] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <IfNode> |
/usr/local/lib/python3.10/site-packages/django/template/defaulttags.py
, line 315, in render
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:
return nodelist.render(context)…
return ''
class LoremNode(Node):
def __init__(self, count, method, common):
Variable | Value |
---|---|
condition | (literal <django.template.base.FilterExpression object at 0x7fb7af877c10>) |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
match | {'average_volume_ml': 432.6530612244898, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'has_guest_pour': True, 'keg_ids': [13], 'largest_session': {'session_id': 84, 'volume_ml': 6504.0}, 'last_drink_id': 641, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'sessions_count': 22, 'total_pours': 49, 'total_volume_ml': 21200.0, 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}, 'volume_by_drinker': {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}} |
nodelist | [<TextNode: '\n <h2>Top Users</h2>\n '>, <pykeg.web.kegweb.templatetags.kegweblib.ChartNode object at 0x7fb7af875570>, <TextNode: '<br/>\n\n '>, <WithNode>, <TextNode: '\n <a href="'>, <django.template.defaulttags.URLNode object at 0x7fb7af875390>, <TextNode: '"\n class="btn btn-in'>] |
self | <IfNode> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 938, in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)…
else:
bit = node
bits.append(str(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '<br/>\n\n ' |
bits | ['\n <h2>Top Users</h2>\n ', '\n' ' <!-- begin chart 2 -->\n' ' <div id="chart-2-container"\n' ' style="height: 220px; width: 280px;"\n' ' class="kb-chartbox"></div>\n' ' <script type="text/javascript">\n' ' var chart_2;\n' ' $(document).ready(function() {\n' ' var chart_data = {"chart": {"borderColor": "#eeeeff", "borderWidth": ' '0, "renderTo": "chart-2-container", "defaultSeriesType": "column"}, ' '"credits": {"enabled": false}, "legend": {"enabled": false}, "margin": [0, ' '0, 0, 0], "title": {"text": null}, "yAxis": {"labels": {"align": "left"}, ' '"title": {"text": null}, "min": 0}, "series": [{"type": "pie", "name": ' '"Drinkers by Volume", "data": [["<b>moad</b> (10.6 L)", 10.645], ' '["<b>guest</b> (8.2 L)", 8.232], ["<b>simelliott</b> (0.6 L)", 0.586], ' '["<b>Pat</b> (0.5 L)", 0.453], ["<b>kalaf</b> (0.4 L)", 0.434], ' '["<b>Dicko</b> (0.4 L)", 0.425], ["<b>Bewnamewneow</b> (0.4 L)", 0.425]]}], ' '"tooltip": {"enabled": false}};\n' ' chart_2 = new Highcharts.Chart(chart_data);\n' ' });\n' ' </script>\n' ' <!-- end chart 2 -->\n' '\n' ' ', '<br/>\n\n '] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
node | <WithNode> |
self | [<TextNode: '\n <h2>Top Users</h2>\n '>, <pykeg.web.kegweb.templatetags.kegweblib.ChartNode object at 0x7fb7af875570>, <TextNode: '<br/>\n\n '>, <WithNode>, <TextNode: '\n <a href="'>, <django.template.defaulttags.URLNode object at 0x7fb7af875390>, <TextNode: '"\n class="btn btn-in'>] |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 905, in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)…
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.render_context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <WithNode> |
/usr/local/lib/python3.10/site-packages/django/template/defaulttags.py
, line 517, in render
if name:
self.extra_context[name] = var
def __repr__(self):
return '<%s>' % self.__class__.__name__
def render(self, context):
values = {key: val.resolve(context) for key, val in self.extra_context.items()}…
with context.push(**values):
return self.nodelist.render(context)
@register.tag
def autoescape(parser, token):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <WithNode> |
/usr/local/lib/python3.10/site-packages/django/template/defaulttags.py
, line 517, in <dictcomp>
if name:
self.extra_context[name] = var
def __repr__(self):
return '<%s>' % self.__class__.__name__
def render(self, context):
values = {key: val.resolve(context) for key, val in self.extra_context.items()}…
with context.push(**values):
return self.nodelist.render(context)
@register.tag
def autoescape(parser, token):
Variable | Value |
---|---|
.0 | <dict_itemiterator object at 0x7fb7afa623e0> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
key | 'ranked_drinkers' |
val | <django.template.base.FilterExpression object at 0x7fb7af8755d0> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 671, in resolve
self.filters = filters
self.var = var_obj
def resolve(self, context, ignore_failures=False):
if isinstance(self.var, Variable):
try:
obj = self.var.resolve(context)…
except VariableDoesNotExist:
if ignore_failures:
obj = None
else:
string_if_invalid = context.template.engine.string_if_invalid
if string_if_invalid:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
ignore_failures | False |
self | <django.template.base.FilterExpression object at 0x7fb7af8755d0> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 796, in resolve
var)
self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
def resolve(self, context):
"""Resolve this variable against a given context."""
if self.lookups is not None:
# We're dealing with a variable that needs to be resolved
value = self._resolve_lookup(context)…
else:
# We're dealing with a literal, so it's already been "resolved"
value = self.literal
if self.translate:
is_safe = isinstance(value, SafeData)
msgid = value.replace('%', '%%')
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
self | <Variable: 'keg.get_top_users'> |
/usr/local/lib/python3.10/site-packages/django/template/base.py
, line 858, in _resolve_lookup
if callable(current):
if getattr(current, 'do_not_call_in_templates', False):
pass
elif getattr(current, 'alters_data', False):
current = context.template.engine.string_if_invalid
else:
try: # method call (assuming no args required)
current = current()…
except TypeError:
signature = inspect.signature(current)
try:
signature.bind()
except TypeError: # arguments *were* required
current = context.template.engine.string_if_invalid # invalid method call
Variable | Value |
---|---|
bit | 'get_top_users' |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'keg': <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>, 'stats': {'keg_ids': [13], 'total_pours': 49, 'last_drink_id': 641, 'has_guest_pour': True, 'sessions_count': 22, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}, 'largest_session': {'volume_ml': 6504.0, 'session_id': 84}, 'total_volume_ml': 21200.0, 'average_volume_ml': 432.6530612244898, 'volume_by_drinker': {'guest': 8232.0, 'moad': 10645.0, 'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'kalaf': 434.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}}, 'sessions': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>, <DrinkingSession: Session #70: 2022-12-04 00:26:09.564977+00:00>, <DrinkingSession: Session #71: 2022-12-04 05:21:17.930005+00:00>, <DrinkingSession: Session #72: 2022-12-11 03:25:23.187479+00:00>, <DrinkingSession: Session #73: 2022-12-15 06:31:40.254767+00:00>, <DrinkingSession: Session #74: 2022-12-17 04:27:07.168806+00:00>, <DrinkingSession: Session #75: 2022-12-18 01:56:18.655169+00:00>, <DrinkingSession: Session #76: 2022-12-21 06:23:54.088558+00:00>, <DrinkingSession: Session #78: 2022-12-23 03:11:02.056001+00:00>, <DrinkingSession: Session #79: 2022-12-24 01:58:34.751371+00:00>, <DrinkingSession: Session #83: 2022-12-26 02:03:04.753750+00:00>, <DrinkingSession: Session #84: 2022-12-27 05:24:58.687124+00:00>, <DrinkingSession: Session #86: 2022-12-29 04:22:32.271906+00:00>, <DrinkingSession: Session #88: 2022-12-31 06:18:32.010338+00:00>, <DrinkingSession: Session #89: 2023-01-01 07:25:34.318669+00:00>, <DrinkingSession: Session #91: 2023-01-04 05:12:55.328357+00:00>, <DrinkingSession: Session #92: 2023-01-07 04:10:35.760608+00:00>, <DrinkingSession: Session #93: 2023-01-07 10:17:37.361351+00:00>, <DrinkingSession: Session #94: 2023-01-08 00:09:34.450387+00:00>, <DrinkingSession: Session #95: 2023-01-11 05:56:52.108383+00:00>, <DrinkingSession: Session #96: 2023-01-12 08:46:29.580537+00:00>, <DrinkingSession: Session #97: 2023-01-13 05:17:56.862115+00:00>], 'last_session': [<DrinkingSession: Session #69: 2022-12-02 05:39:27.709697+00:00>]}] |
current | <bound method Keg.get_top_users of <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co>> |
self | <Variable: 'keg.get_top_users'> |
signature | <Signature ()> |
template_name | 'kegweb/keg_detail.html' |
/app/pykeg/core/models.py
, line 1096, in get_top_users
entries = stats.get("volume_by_drinker", {})
for username, vol in list(entries.items()):
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
continue # should not happen
ret.append((vol, user))
ret.sort(reverse=True)…
return ret
@transaction.atomic
def cancel(self):
"""Permanently deletes this keg and ALL drinks."""
keg_drinks = self.drinks.all().order_by("id")
Variable | Value |
---|---|
entries | {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0} |
ret | [(8232.0, <User: guest>), (10645.0, <User: moad>), (425.0, <User: Bewnamewneow>), (586.0, <User: simelliott>), (453.0, <User: Pat>), (434.0, <User: kalaf>), (425.0, <User: Dicko>)] |
self | <Keg: Keg #13 - Toady Kolsch - 5.1% by Thick as Thieves Brewing Co> |
stats | {'average_volume_ml': 432.6530612244898, 'greatest_volume_id': 530, 'greatest_volume_ml': 1109.0, 'has_guest_pour': True, 'keg_ids': [13], 'largest_session': {'session_id': 84, 'volume_ml': 6504.0}, 'last_drink_id': 641, 'registered_drinkers': ['guest', 'moad', 'Dicko', 'Pat', 'kalaf', 'Bewnamewneow', 'simelliott'], 'sessions_count': 22, 'total_pours': 49, 'total_volume_ml': 21200.0, 'volume_by_day_of_week': {'0': 4996.0, '1': 1536.0, '2': 2414.0, '3': 4317.0, '4': 2426.0, '5': 2883.0, '6': 2628.0}, 'volume_by_drinker': {'Bewnamewneow': 425.0, 'Dicko': 425.0, 'Pat': 453.0, 'guest': 8232.0, 'kalaf': 434.0, 'moad': 10645.0, 'simelliott': 586.0}, 'volume_by_session': {'69': 1435.0, '70': 468.0, '71': 842.0, '72': 569.0, '73': 579.0, '74': 1275.0, '75': 1492.0, '76': 852.0, '78': 448.0, '79': 229.0, '83': 1536.0, '84': 2414.0, '86': 847.0, '88': 425.0, '89': 572.0, '91': 905.0, '92': 237.0, '93': 462.0, '94': 1053.0, '95': 2560.0, '96': 1000.0, '97': 1000.0}, 'volume_by_year': {'2022': 13411.0, '2023': 7789.0}} |
user | <User: simelliott> |
username | 'simelliott' |
vol | 586.0 |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CSRF_COOKIE | 'UocqBN3tbT0xk6SqS1eUtZxIRw9dMToBfTmHJbgevR9ov2MuqgCaxDpTkLJWctMO' |
CSRF_COOKIE_USED | True |
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'smartykegs.thickasthievesbrewingco.com' |
HTTP_REFERER | 'http://smartykegs.thickasthievesbrewingco.com/kegs/13' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '54.196.27.171' |
HTTP_X_FORWARDED_HOST | 'smartykegs.thickasthievesbrewingco.com' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_FORWARDED_SSL | 'on' |
HTTP_X_REAL_IP | '54.196.27.171' |
PATH_INFO | '/kegs/13/' |
QUERY_STRING | '' |
RAW_URI | '/kegs/13/' |
REMOTE_ADDR | '192.168.1.27' |
REMOTE_PORT | '46854' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '8000' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/20.1.0' |
gunicorn.socket | <gevent._socket3.socket at 0x7fb7af9a6da0 object, fd=11, family=2, type=1, proto=6> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7fb7af939720> |
wsgi.file_wrapper | <class 'gunicorn.http.wsgi.FileWrapper'> |
wsgi.input | <gunicorn.http.body.Body object at 0x7fb7af93ab00> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | True |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
pykeg.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ACCOUNT_ACTIVATION_DAYS | 3 |
ADMINS | [] |
ADMIN_MEDIA_PREFIX | '/static/admin/' |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ('pykeg.web.auth.local.LocalAuthBackend',) |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'core.User' |
BASE_DIR | '/app' |
CACHES | {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'KEY_PREFIX': '********************', 'LOCATION': 'redis://redis:6379/0', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'}}, 'rq': {'BACKEND': 'django_redis.cache.RedisCache', 'KEY_PREFIX': '********************', 'LOCATION': 'redis://redis:6379/0', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient'}}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CORS_ALLOWED_ORIGINS | ['http://localhost:1234', 'http://127.0.0.1:1234'] |
CORS_ALLOW_CREDENTIALS | True |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | ['localhost:1234'] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.mysql', 'HOST': 'mysql', 'NAME': 'kegbot', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'kegbot'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.AutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'pykeg.web.kegweb.kbstorage.KegbotFileSystemStorage' |
DEFAULT_FROM_EMAIL | 'no-reply@example.com' |
DEFAULT_HASHING_ALGORITHM | 'sha256' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'pykeg.core.mail.KegbotEmailBackend' |
EMAIL_HOST | 'localhost' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '' |
EMAIL_PORT | 25 |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | False |
ENV_PRODUCTION | 'production' |
ENV_TEST | 'test' |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | 420 |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
IMAGEKIT_CACHEFILE_DIR | 'CACHE/images' |
IMAGEKIT_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.hash' |
IMAGEKIT_CACHE_BACKEND | 'default' |
IMAGEKIT_CACHE_PREFIX | 'imagekit:' |
IMAGEKIT_CACHE_TIMEOUT | 300 |
IMAGEKIT_DEFAULT_CACHEFILE_BACKEND | 'imagekit.cachefiles.backends.Simple' |
IMAGEKIT_DEFAULT_CACHEFILE_STRATEGY | 'imagekit.cachefiles.strategies.JustInTime' |
IMAGEKIT_DEFAULT_FILE_STORAGE | 'pykeg.web.kegweb.kbstorage.KegbotFileSystemStorage' |
IMAGEKIT_DEFAULT_IMAGE_CACHE_BACKEND | 'imagekit.imagecache.NonValidatingImageCacheBackend' |
IMAGEKIT_SPEC_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.source_name_as_path' |
IMAGEKIT_USE_MEMCACHED_SAFE_CACHE_KEY | '********************' |
INSTALLED_APPS | ('whitenoise.runserver_nostatic', 'pykeg.core', 'pykeg.web', 'pykeg.web.api', 'pykeg.web.account', 'pykeg.web.kbregistration', 'pykeg.web.kegadmin', 'pykeg.web.kegweb', 'pykeg.web.setup_wizard', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.humanize', 'django.contrib.messages', 'django.contrib.sessions', 'django.contrib.staticfiles', 'crispy_forms', 'bootstrap_pagination', 'imagekit', 'gunicorn', 'corsheaders', 'rest_framework', 'django_rq') |
INTERNAL_IPS | ('127.0.0.1',) |
KEGBOT | {'DATABASE_URL': 'mysql://kegbot:changeme@mysql/kegbot', 'KEGBOT_BASE_URL': 'http://smartykegs.thickasthievesbrewingco.com', 'KEGBOT_DATA_DIR': '/kegbot-data', 'KEGBOT_ENABLE_V2_API': '********************', 'KEGBOT_ENV': 'debug', 'KEGBOT_INSECURE_SHARED_API_KEY': '********************', 'KEGBOT_IN_DOCKER': True, 'KEGBOT_MEDIA_URL': '', 'KEGBOT_SECRET_KEY': '********************', 'REDIS_URL': 'redis://redis:6379/0'} |
KEGBOT_ADMIN_LOGIN_URL | 'auth_login' |
KEGBOT_ENABLE_ADMIN | True |
KEGBOT_ENV | 'debug' |
KEGBOT_PLUGINS | ['pykeg.contrib.webhook.plugin.WebhookPlugin'] |
KEGBOT_STATSD_TO_TOOLBAR | False |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ar-dz', 'Algerian Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('ig', 'Igbo'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('ky', 'Kyrgyz'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('tg', 'Tajik'), ('th', 'Thai'), ('tk', 'Turkmen'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('uz', 'Uzbek'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'fa', 'ur'] |
LANGUAGE_CODE | 'en-us' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LOCALE_PATHS | [] |
LOGGING | {'disable_existing_loggers': False, 'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue'}}, 'formatters': {'simple': {'format': '%(levelname)s %(message)s'}, 'verbose': {'format': '%(asctime)s %(levelname)-8s (%(name)s) ' '%(message)s'}, 'verbosecolor': {'()': 'coloredlogs.ColoredFormatter', 'format': '%(asctime)s %(levelname)-8s ' '(%(name)s) %(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'verbosecolor', 'level': 'DEBUG'}, 'null': {'class': 'logging.NullHandler'}, 'redis': {'class': 'pykeg.logging.handlers.RedisListHandler', 'key': '********************', 'level': 'INFO', 'max_messages': 100, 'url': 'redis://redis:6379/0'}}, 'loggers': {'': {'handlers': ['console', 'redis'], 'level': 'DEBUG'}, 'django': {'handlers': ['console', 'redis'], 'level': 'INFO', 'propagate': False}, 'pykeg': {'handlers': ['console', 'redis'], 'level': 'INFO', 'propagate': False}, 'raven': {'handlers': ['console', 'redis'], 'level': 'INFO', 'propagate': False}}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/account/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/kegbot-data/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', 'corsheaders.middleware.CorsMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'pykeg.web.middleware.ErrorLoggingMiddleware', 'pykeg.web.middleware.PathRewriteMiddleware', 'pykeg.web.middleware.IsSetupMiddleware', 'pykeg.web.middleware.CurrentRequestMiddleware', 'pykeg.web.middleware.KegbotSiteMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'pykeg.web.api.middleware.ApiRequestMiddleware', 'pykeg.web.middleware.PrivacyMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NOTIFICATION_BACKENDS | ['pykeg.notification.backends.email.EmailNotificationBackend'] |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
REST_FRAMEWORK | {'DEFAULT_AUTHENTICATION_CLASSES': ('pykeg.api.auth.ApiKeyBasicAuth', 'rest_framework.authentication.SessionAuthentication'), 'DEFAULT_PAGINATION_CLASS': 'pykeg.api.pagination.CursorPagination', 'DEFAULT_PERMISSION_CLASSES': ['pykeg.api.permissions.IsAuthenticated'], 'PAGE_SIZE': 10} |
ROOT_URLCONF | 'pykeg.web.urls' |
RQ_QUEUES | {'default': {'ASYNC': True, 'USE_REDIS_CACHE': 'rq'}, 'stats': {'ASYNC': True, 'USE_REDIS_CACHE': 'rq'}} |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SERVER_EMAIL | 'root@localhost' |
SESSION_CACHE_ALIAS | 'default' |
SESSION_COOKIE_AGE | 1209600 |
SESSION_COOKIE_DOMAIN | None |
SESSION_COOKIE_HTTPONLY | True |
SESSION_COOKIE_NAME | 'sessionid' |
SESSION_COOKIE_PATH | '/' |
SESSION_COOKIE_SAMESITE | None |
SESSION_COOKIE_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.PickleSerializer' |
SETTINGS_MODULE | 'pykeg.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_ID | 1 |
STATICFILES_DIRS | [] |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
STATICFILES_STORAGE | 'whitenoise.storage.CompressedManifestStaticFilesStorage' |
STATIC_ROOT | '/app/staticfiles' |
STATIC_URL | '/static/' |
STATSD_CLIENT | 'django_statsd.clients.normal' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['web/templates', '/app/pykeg/contrib/webhook/templates'], 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'pykeg.web.context_processors.kbsite'], 'debug': True}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_I18N | True |
USE_L10N | False |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | True |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | None |
X_FRAME_OPTIONS | 'DENY' |
YEAR_MONTH_FORMAT | 'F Y' |
You’re seeing this error because you have DEBUG = True
in your
Django settings file. Change that to False
, and Django will
display a standard page generated by the handler for this status code.