[Errno 13] Permission denied: '/code/media/images/ados.2e16d0ba.fill-2880x1440.jpg'
Request Method: | GET |
---|---|
Request URL: | http://www.otpedia.hu/melyviz/ |
Django Version: | 2.2.3 |
Exception Type: | PermissionError |
Exception Value: | [Errno 13] Permission denied: '/code/media/images/ados.2e16d0ba.fill-2880x1440.jpg' |
Exception Location: | /usr/local/lib/python3.7/site-packages/django/core/files/storage.py in _save, line 266 |
Python Executable: | /usr/local/bin/python |
Python Version: | 3.7.16 |
Python Path: | ['/code', '/usr/local/bin', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages'] |
Server time: | K, 19 Már 2024 14:38:27 +0100 |
In template /code/home/templates/home/blocks/largeimage.html
, error at line 9
1 | {% load wagtailimages_tags wagtailcore_tags %} |
---|---|
2 | |
3 | <div class="block__content"> |
4 | |
5 | <div class="block__body"> |
6 | <article class="post"> |
7 | |
8 | <figure class="post__media"> |
9 | <a href="{{ value.url|default:"#" }}">{% image value.image fill-2880x1440 class='post__img' %}</a> |
10 | </figure> |
11 | |
12 | <div class="post__header"> |
13 | {% if value.subtitle %} |
14 | <p class="post__subtitle">{{ value.subtitle }}</p> |
15 | {% endif %} |
16 | {% if value.title %} |
17 | <h1 class="post__title"><a href="{{ value.url|default:"#" }}">{{ value.title }}</a></h1> |
18 | {% endif %} |
19 | {% if value.caption %} |
/usr/local/lib/python3.7/site-packages/wagtail/images/models.py
in get_rendition
cache_key = filter.get_cache_key(self)
Rendition = self.get_rendition_model()
try:
rendition = self.renditions.get(
filter_spec=filter.spec,
focal_point_key=cache_key,…
)
except Rendition.DoesNotExist:
# Generate the rendition image
generated_image = filter.run(self, BytesIO())
# Generate filename
Variable | Value |
---|---|
FORMAT_EXTENSIONS | {'gif': '.gif', 'jpeg': '.jpg', 'png': '.png', 'webp': '.webp'} |
Rendition | <class 'core.models.OtpRendition'> |
cache_key | '2e16d0ba' |
filter | <wagtail.images.models.Filter object at 0x7fcaf3ba6a50> |
generated_image | <willow.image.JPEGImageFile object at 0x7fcaf3803990> |
input_extension | '.jpg' |
input_filename | 'ados.jpg' |
input_filename_without_extension | 'ados' |
output_extension | '2e16d0ba.fill-2880x1440.jpg' |
output_filename | 'ados.2e16d0ba.fill-2880x1440.jpg' |
output_filename_without_extension | 'ados' |
self | <OtpImage: adós.jpg> |
/usr/local/lib/python3.7/site-packages/django/db/models/manager.py
in manager_method
def check(self, **kwargs):
return []
@classmethod
def _get_queryset_methods(cls, queryset_class):
def create_method(name, method):
def manager_method(self, *args, **kwargs):
return getattr(self.get_queryset(), name)(*args, **kwargs)…
manager_method.__name__ = method.__name__
manager_method.__doc__ = method.__doc__
return manager_method
new_methods = {}
for name, method in inspect.getmembers(queryset_class, predicate=inspect.isfunction):
Variable | Value |
---|---|
args | () |
kwargs | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba'} |
name | 'get' |
self | <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x7fcaf3ba6750> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in get
clone = clone.order_by()
num = len(clone)
if num == 1:
return clone._result_cache[0]
if not num:
raise self.model.DoesNotExist(
"%s matching query does not exist." %
self.model._meta.object_name…
)
raise self.model.MultipleObjectsReturned(
"get() returned more than one %s -- it returned %s!" %
(self.model._meta.object_name, num)
)
Variable | Value |
---|---|
args | () |
clone | <QuerySet []> |
kwargs | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba'} |
num | 0 |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in get_or_create
Return a tuple of (object, created), where created is a boolean
specifying whether an object was created.
"""
# The get() needs to be targeted at the write database in order
# to avoid potential transaction consistency problems.
self._for_write = True
try:
return self.get(**kwargs), False…
except self.model.DoesNotExist:
params = self._extract_model_params(defaults, **kwargs)
return self._create_object_from_params(kwargs, params)
def update_or_create(self, defaults=None, **kwargs):
"""
Variable | Value |
---|---|
defaults | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>} |
kwargs | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
params | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in get
clone = clone.order_by()
num = len(clone)
if num == 1:
return clone._result_cache[0]
if not num:
raise self.model.DoesNotExist(
"%s matching query does not exist." %
self.model._meta.object_name…
)
raise self.model.MultipleObjectsReturned(
"get() returned more than one %s -- it returned %s!" %
(self.model._meta.object_name, num)
)
Variable | Value |
---|---|
args | () |
clone | <QuerySet []> |
kwargs | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
num | 0 |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py
in inner
This decorator is automatically applied to all middleware to ensure that
no middleware leaks an exception and that the next middleware in the stack
can rely on getting a response instead of an exception.
"""
@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 | PermissionError(13, 'Permission denied') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7fcaf4836ed0>> |
request | <WSGIRequest: GET '/melyviz/'> |
/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
"HttpResponse object. It returned None instead."
% (middleware_method.__self__.__class__.__name__)
)
try:
response = response.render()
except Exception as e:
response = self.process_exception_by_middleware(e, request)…
return response
def process_exception_by_middleware(self, exception, request):
"""
Pass the exception to the exception middleware. If no middleware
Variable | Value |
---|---|
callback | <function serve at 0x7fcaf3ed5320> |
callback_args | ('melyviz/',) |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7fcaf47678d0>> |
request | <WSGIRequest: GET '/melyviz/'> |
resolver | <URLResolver 'otpedia.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=wagtail.core.views.serve, args=('melyviz/',), kwargs={}, url_name=wagtail_serve, app_names=[], namespaces=[], route=^((?:[\w\-]+/)*)$) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7fcaf4836ed0> |
wrapped_callback | <function serve at 0x7fcaf3ed5320> |
/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
raise ValueError(
"%s.process_template_response didn't return an "
"HttpResponse object. It returned None instead."
% (middleware_method.__self__.__class__.__name__)
)
try:
response = response.render()…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
return response
def process_exception_by_middleware(self, exception, request):
Variable | Value |
---|---|
callback | <function serve at 0x7fcaf3ed5320> |
callback_args | ('melyviz/',) |
callback_kwargs | {} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7fcaf47678d0>> |
request | <WSGIRequest: GET '/melyviz/'> |
resolver | <URLResolver 'otpedia.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=wagtail.core.views.serve, args=('melyviz/',), kwargs={}, url_name=wagtail_serve, app_names=[], namespaces=[], route=^((?:[\w\-]+/)*)$) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7fcaf4836ed0> |
wrapped_callback | <function serve at 0x7fcaf3ed5320> |
/usr/local/lib/python3.7/site-packages/django/template/response.py
in render
If the content has already been rendered, this is a no-op.
Return the baked response instance.
"""
retval = self
if not self._is_rendered:
self.content = self.rendered_content…
for post_callback in self._post_render_callbacks:
newretval = post_callback(retval)
if newretval is not None:
retval = newretval
return retval
Variable | Value |
---|---|
retval | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
/usr/local/lib/python3.7/site-packages/django/template/response.py
in rendered_content
This *does not* set the final content of the response. To set the
response content, you must either call render(), or set the
content explicitly using the value of this property.
"""
template = self.resolve_template(self.template_name)
context = self.resolve_context(self.context_data)
content = template.render(context, self._request)…
return content
def add_post_render_callback(self, callback):
"""Add a new post-rendering callback.
If the response has already been rendered,
Variable | Value |
---|---|
context | {'page': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': <SeriesCollectionPage: Mélyvíz>} |
self | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
template | <django.template.backends.django.Template object at 0x7fcaf3918810> |
/usr/local/lib/python3.7/site-packages/django/template/backends/django.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
request | <WSGIRequest: GET '/melyviz/'> |
self | <django.template.backends.django.Template object at 0x7fcaf3918810> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <django.template.base.Template object at 0x7fcaf37a40d0> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <django.template.base.Template object at 0x7fcaf37a40d0> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py
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 0x7fcaf39fac90> |
compiled_parent | <django.template.base.Template object at 0x7fcaf342fb90> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <ExtendsNode: extends 'skeleton.html'> |
self | <ExtendsNode: extends "base.html"> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <django.template.base.Template object at 0x7fcaf342fb90> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <ExtendsNode: extends 'skeleton.html'> |
self | [<ExtendsNode: extends 'skeleton.html'>] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <ExtendsNode: extends 'skeleton.html'> |
/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py
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 0x7fcaf39fac90> |
blocks | {'article_header_sticky': <Block Node: article_header_sticky. Contents: []>, 'body': <Block Node: body. Contents: []>, 'body_class': <Block Node: body_class. Contents: []>, 'extra_css': <Block Node: extra_css. Contents: []>, 'extra_js': <Block Node: extra_js. Contents: [<TextNode: '\n\t'>, <TextNode: '\n'>]>, 'json_ld': <Block Node: json_ld. Contents: []>, 'title': <Block Node: title. Contents: [<TextNode: '\n\t\t\t'>, <Variable Node: self.title>, <TextNode: '\n\t\t'>]>, 'title_suffix': <Block Node: title_suffix. Contents: [<TextNode: '\n\t\t\t'>, <WithNode>, <TextNode: '\n\t\t'>]>} |
compiled_parent | <django.template.base.Template object at 0x7fcaf39d8a50> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <django.template.defaulttags.LoadNode object at 0x7fcaf3af1510> |
self | <ExtendsNode: extends 'skeleton.html'> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <django.template.base.Template object at 0x7fcaf39d8a50> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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' |
bits | ['', '\n\n<!DOCTYPE html>\n<html lang="', 'hu', '">\n<head>\n\t<meta charset="utf-8">\n\t<title>\n\t\t', '\n\t\t\tMélyvíz\n\t\t', '\n\t\t', '\n\t\t\t\n\t\t\t\t - otpedia\n\t\t\t\n\t\t', '\n\t</title>\n', '\n', '\n\t<meta name="description" content="', 'Hogyan működik a pénz, a bankvilág és a gazdaság?', '">\n' '\t<meta name="viewport" content="width=device-width, initial-scale=1">\n' '\n' '\t<link rel="home" href="', 'http://otpedia.esolr.me', '">\n\n', '\n', '\n\n', '\n\t<meta property="og:site_name" content="', 'OTPédia', '"/>\n\t<meta property="og:url" content="', 'http://www.otpedia.hu/melyviz/', '">\n\t<meta property="og:type" content="', 'website', '">\n\t<meta property="og:title" content="', 'Mélyvíz', ' - otpedia', '">\n\t<meta property="og:description" content="', 'Hogyan működik a pénz, a bankvilág és a gazdaság?', '">\n\n\t', '', '\n\n', '', '\n\n', '\n\t<meta property="og:image" content="', 'http://', 'www.otpedia.hu', '/media/images/penzelmelet.2e16d0ba.fill-1200x628.jpg', '">\n' '\t<meta property="og:image:width" content="1200"/>\n' '\t<meta property="og:image:height" content="628"/>\n' '\t<meta property="fb:app_id" content="581696825983027"/>\n' '\n' '\t', '\n\t<link href="', '/static/default/dist/css/inline.css', '?ver=1.0.0" media="screen" rel="stylesheet" type="text/css"/>\n', '\n\t<link rel="stylesheet" href="', '/static/default/dist/css/screen.css', '" media="tty" onload="this.media=\'all\';">\n\t<link href="', '/static/default/dist/css/print.css', '?ver=1.0.0" media="none" rel="stylesheet" type="text/css" ' 'onload="if(media!==\'print\')media=\'print\'"/>\n' '\t<noscript>\n' '\t\t<link href="', '/static/default/dist/css/screen.css', '?ver=1.0.0" media="screen" rel="stylesheet" type="text/css"/>\n' '\t\t<link href="', '/static/default/dist/css/print.css', '?ver=1.0.0" media="print" rel="stylesheet" type="text/css"/>\n' '\t</noscript>\n' '\n' '\t', '\n\t', '\n' ' <script ' 'src="https://cdn.jsdelivr.net/npm/chart.js@2.9.3/dist/Chart.min.js"></script>\n' '\t<script>\n' '\n' "\t\tfunction ready(fn) { if (document.readyState !== 'loading') fn(); else " "document.addEventListener('DOMContentLoaded', fn); }\n" '\t\tfunction getScript(u, i, f, e) {\n' "\t\t\tvar s = document.createElement('script');\n" "\t\t\ts.type = 'text/javascript';\n" '\t\t\ts.src = u;\n' "\t\t\ts.id = i || 'id_script_' + new Date().getTime();\n" '\t\t\tif (!document.getElementById(i)) {\n' "\t\t\t\tdocument.getElementsByTagName('head')[0].appendChild(s);\n" '\t\t\t}\n' '\t\t\tif (!!f) {\n' "\t\t\t\ts.addEventListener('load', function () {\n" '\t\t\t\t\tf(s);\n' '\t\t\t\t});\n' '\t\t\t}\n' '\t\t}\n' '\n' '\t\tfunction ajaxGET(u, s, e, f, g) {var xhr = new ' 'XMLHttpRequest();xhr.open("GET", u, true);if (g !== undefined) {for (var key ' 'in g) {if (g.hasOwnProperty(key)) {xhr.setRequestHeader(key, ' 'g[key])}}}xhr.onload = function () {if (this.status >= 200 && this.status < ' '400) {if (s) s(this.response);} else { if (e) ' 'e(this.response);}};xhr.onerror = function () {if (f) ' 'f(this.response);};xhr.send();}\n' '\t\t', '\n' '\t\tfunction storageAvailable(type) {try {var storage = window[type], x = ' "'__storage_test__';storage.setItem(x, x);storage.removeItem(x);return true;} " 'catch (e) {return e instanceof DOMException && (e.code === 22 || e.code === ' "1014 || e.name === 'QuotaExceededError' || e.name === " "'NS_ERROR_DOM_QUOTA_REACHED') && storage.length !== 0;}}\n" "\t\tfunction getCookie(name) {var v = document.cookie.match('(^|;) ?' + name " "+ '=([^;]*)(;|$)');return v ? v[2] : null;}\n" '\t\tfunction setCookie(name, value, days) {var d = new ' 'Date;d.setTime(d.getTime() + 24*60*60*1000*days);document.cookie = name + ' '"=" + value + ";path=/;expires=" + d.toGMTString();}\n' "\t\tfunction deleteCookie(name) { setCookie(name, '', -1); }\n" '\n' '\t\t', '\n\t\t', '\n' '\t\tfunction copyText(i) {i.select();i.setSelectionRange(0, ' '99999);document.execCommand("copy");console.log("Copy text: " + i.value);}\n' '\n… <trimmed 11258 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <Block Node: body. Contents: []> |
self | [<django.template.defaulttags.LoadNode object at 0x7fcaf3af1510>, <TextNode: '\n\n<!DOCTYPE html>\n<html l'>, <Variable Node: LANGUAGE_CODE>, <TextNode: '">\n<head>\n\t<meta charset='>, <Block Node: title. Contents: [<TextNode: '\n\t\t\t'>, <Variable Node: self.title>, <TextNode: '\n\t\t'>]>, <TextNode: '\n\t\t'>, <Block Node: title_suffix. Contents: [<TextNode: '\n\t\t\t'>, <WithNode>, <TextNode: '\n\t\t'>]>, <TextNode: '\n\t</title>\n'>, <TextNode: '\n'>, <TextNode: '\n\t<meta name="description'>, <IfNode>, <TextNode: '">\n\t<meta name="viewport"'>, <Variable Node: request.site.root_url>, <TextNode: '">\n\n'>, <TextNode: '\n'>, <TextNode: '\n\n'>, <TextNode: '\n\t<meta property="og:site'>, <IfNode>, <TextNode: '"/>\n\t<meta property="og:u'>, <Variable Node: request.build_absolute_uri>, <TextNode: '">\n\t<meta property="og:ty'>, <IfNode>, <TextNode: '">\n\t<meta property="og:ti'>, <Variable Node: self.title>, <WithNode>, <TextNode: '">\n\t<meta property="og:de'>, <IfNode>, <TextNode: '">\n\n\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf36ea710>, <TextNode: '\n\n'>, <django.template.defaulttags.CommentNode object at 0x7fcaf36ea550>, <TextNode: '\n\n'>, <TextNode: '\n\t<meta property="og:imag'>, <IfNode>, <Variable Node: request.get_host>, <IfNode>, <TextNode: '">\n\t<meta property="og:im'>, <TextNode: '\n\t<link href="'>, <django.templatetags.static.StaticNode object at 0x7fcaf37d20d0>, <TextNode: '?ver=1.0.0" media="screen'>, <TextNode: '\n\t<link rel="stylesheet" '>, <django.templatetags.static.StaticNode object at 0x7fcaf36eae10>, <TextNode: '" media="tty" onload="thi'>, <django.templatetags.static.StaticNode object at 0x7fcaf385e910>, <TextNode: '?ver=1.0.0" media="none" '>, <django.templatetags.static.StaticNode object at 0x7fcaf385e810>, <TextNode: '?ver=1.0.0" media="screen'>, <django.templatetags.static.StaticNode object at 0x7fcaf385e0d0>, <TextNode: '?ver=1.0.0" media="print"'>, <TextNode: '\n\t'>, <TextNode: '\n <script src="https:/'>, <TextNode: '\n\t\tfunction storageAvaila'>, <TextNode: '\n\t\t'>, <TextNode: '\n\t\tfunction copyText(i) {'>, <Variable Node: LANGUAGE_CODE>, <TextNode: "',\n\t\t\turl: {\n\t\t\t\tajaxStar">, <TextNode: "\n\t\t\t\tstarred: 'starred_pa">, <IfNode>, <TextNode: '\n\t\t\t\t'>, <IfNode>, <TextNode: "\n\t\t\t\ttitle: '">, <Variable Node: page.title>, <TextNode: "'\n\t\t\t},\n\t\t\tGTAG: {\n\t\t\t\t">, <TextNode: '\n\t\t\t\tlexiconDetailsBtnCli'>, <TextNode: '\n\t\t\t\trichtextLinkClick: f'>, <TextNode: '\n\t\t\t\tcopyCurrentDateClick'>, <TextNode: '\n\t\t\t\tlexiconDetailsRelate'>, <IfNode>, <TextNode: ";\n\t\tvar STATIC_HASH = '1.">, <django.template.defaulttags.CommentNode object at 0x7fcaf3683510>, <TextNode: '\n\t\t!function () {\n\t\t\tvar '>, <Variable Node: self.title>, <WithNode>, <TextNode: "', 'non_interaction': tru">, <Variable Node: self.title>, <WithNode>, <TextNode: "', 'non_interaction': tru">, <Variable Node: self.title>, <WithNode>, <TextNode: "', 'non_interaction': tru">, <Variable Node: self.title>, <WithNode>, <TextNode: "', 'non_interaction': tru">, <TextNode: '\n\t\t\t\tpositions.forEach(fu'>, <TextNode: '\n'>, <TextNode: '\n\n\t<link rel="apple-touch'>, <django.templatetags.static.StaticNode object at 0x7fcaf3a93d90>, <TextNode: '">\n\t<link rel="icon" type'>, <django.templatetags.static.StaticNode object at 0x7fcaf3a93d10>, <TextNode: '">\n\t<link rel="icon" type'>, <django.templatetags.static.StaticNode object at 0x7fcaf3a93410>, <TextNode: '">\n'>, <TextNode: '\n\t<link rel="mask-icon" h'>, <django.templatetags.static.StaticNode object at 0x7fcaf3a93790>, <TextNode: '" color="#016438">\n\t<meta'>, <Block Node: json_ld. Contents: []>, <TextNode: '\n\n\t'>, <Block Node: extra_css. Contents: []>, <TextNode: '\n\n</head>\n\n'>, <django.template.defaulttags.CommentNode object at 0x7fcaf3a80750>, <TextNode: '\n\n<body class="'>, <Block Node: body_class. Contents: []>, <TextNode: ' '>, <Variable Node: page.specific.get_top_theme>, <TextNode: '… <trimmed 5526 bytes string> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <Block Node: body. Contents: []> |
/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py
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\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n\t<header class="header">'>, <Variable Node: settings.core.OtpSettings.logo_text|default:"">, <TextNode: '</a></h1>\n\t\t\t<div class="'>, <django.template.defaulttags.URLNode object at 0x7fcaf3b067d0>, <TextNode: '">\n\t\t\t\t\t<div class="field'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06150>, <TextNode: '</label>\n\t\t\t\t\t\t\t<input id'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b063d0>, <TextNode: '">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<bu'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06d50>, <TextNode: '</button>\n\t\t\t\t\t</div>\n\t\t\t'>, <django.template.library.SimpleNode object at 0x7fcaf33a7890>, <TextNode: '\n\t\t\t</nav>\n\t\t\t'>, <IfNode>, <TextNode: '\n\t\t</div>\n\t</header>\n\n\t<m'>, <Block Node: content. Contents: []>, <TextNode: '\n\t</main>\n\n\t<footer class'>, <django.template.library.SimpleNode object at 0x7fcaf33a7190>, <TextNode: '</nav>\n\t\t\t<p class="foote'>, <django.template.defaulttags.NowNode object at 0x7fcaf3aba7d0>, <TextNode: '. OTP Bank</p>\n\t\t</div>\n\t'>, <TextNode: '\n\t<div data-mobile-menu c'>, <django.template.library.SimpleNode object at 0x7fcaf39d8710>, <TextNode: '\n\t\t</nav>\n\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf39d8590>, <TextNode: '\n\t</div>\n\n'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7fcaf39fac90> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
push | <Block Node: body. Contents: [<TextNode: '\n\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n\t<header class="header">'>, <Variable Node: settings.core.OtpSettings.logo_text|default:"">, <TextNode: '</a></h1>\n\t\t\t<div class="'>, <django.template.defaulttags.URLNode object at 0x7fcaf3b067d0>, <TextNode: '">\n\t\t\t\t\t<div class="field'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06150>, <TextNode: '</label>\n\t\t\t\t\t\t\t<input id'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b063d0>, <TextNode: '">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<bu'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06d50>, <TextNode: '</button>\n\t\t\t\t\t</div>\n\t\t\t'>, <django.template.library.SimpleNode object at 0x7fcaf33a7890>, <TextNode: '\n\t\t\t</nav>\n\t\t\t'>, <IfNode>, <TextNode: '\n\t\t</div>\n\t</header>\n\n\t<m'>, <Block Node: content. Contents: []>, <TextNode: '\n\t</main>\n\n\t<footer class'>, <django.template.library.SimpleNode object at 0x7fcaf33a7190>, <TextNode: '</nav>\n\t\t\t<p class="foote'>, <django.template.defaulttags.NowNode object at 0x7fcaf3aba7d0>, <TextNode: '. OTP Bank</p>\n\t\t</div>\n\t'>, <TextNode: '\n\t<div data-mobile-menu c'>, <django.template.library.SimpleNode object at 0x7fcaf39d8710>, <TextNode: '\n\t\t</nav>\n\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf39d8590>, <TextNode: '\n\t</div>\n\n'>]> |
self | <Block Node: body. Contents: []> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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\t\t</div>\n\t</header>\n\n\t<main class="main">\n\t\t' |
bits | ['\n\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n', '\n' '\t<header class="header">\n' '\t\t<div class="header__content">\n' '\t\t\t<h1 class="header__logo"><a href="/" onclick="gtag(\'event\', \'Logóra ' "kattint', {'event_label': 'OTPédia', 'event_category': " '\'Header\'});">', 'A-tól Pénzig', '</a></h1>\n' '\t\t\t<div class="header__search">\n' '\t\t\t\t<form class="" action="', '/kereses/', '">\n' '\t\t\t\t\t<div class="fieldset">\n' '\t\t\t\t\t\t<div class="form-item">\n' '\t\t\t\t\t\t\t<label for="id_header_search">', 'Keresés', '</label>\n' '\t\t\t\t\t\t\t<input id="id_header_search" name="q" type="search" ' 'placeholder="', 'Keresés…', '">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<button>', 'Keresés', '</button>\n' '\t\t\t\t\t</div>\n' '\t\t\t\t</form>\n' '\t\t\t</div>\n' '\t\t\t<nav class="header__nav nav-mainmenu">\n' '\t\t\t\t', '\n' '<ul data-menu="1">\n' '\t\n' '\t\t<li data-menu-item="1" class=" has-handle theme1">\n' '\t\t\t\n' '\t\t\t\t<a data-menu-link="1" class="" ' 'href="/egyszer-volt/ki-vagy-inkabb-tucsok-vagy-hangya/" data-submenu="70" ' 'data-content-type="seriespage"\n' '\t\t\t\t aria-haspopup="false" aria-expanded="false"\n' '\t\t\t\t onclick="gtag(\'event\', \'Menüpont kattintása\', ' "{'event_label': 'Takarékosságra fel!', 'event_category': " '\'Menü\'});">\n' '\t\t\t\t\tTakarékosságra fel!\n' '\t\n' '\t\t\t\t\t\n' '\t\t\t\t\t\t<span class="handle">Aktuális téma</span>\n' '\t\t\t\t\t\n' '\t\t\t\t</a>\n' '\t\t\t\n' '\n' '\n' '\t\t\t\n' '\t\t</li>\n' '\t\n' '\t\n' '\t\t<li data-menu-item="1" class=" theme1">\n' '\t\t\t\n' '\t\t\t\t<a data-menu-link="1" class="" href="/egyszer-volt/" ' 'data-submenu="4" data-content-type="seriescollectionpage"\n' '\t\t\t\t aria-haspopup="false" aria-expanded="false"\n' '\t\t\t\t onclick="gtag(\'event\', \'Menüpont kattintása\', ' '{\'event_label\': \'Egyszer volt\', \'event_category\': \'Menü\'});">\n' '\t\t\t\t\tEgyszer volt\n' '\t\n' '\t\t\t\t\t\n' '\t\t\t\t</a>\n' '\t\t\t\n' '\n' '\n' '\t\t\t\n' '\t\t</li>\n' '\t\n' '\t\n' '\t\t<li data-menu-item="1" class="active theme3">\n' '\t\t\t\n' '\t\t\t\t<a data-menu-link="1" class="active" href="/melyviz/" ' 'data-submenu="8" data-content-type="seriescollectionpage"\n' '\t\t\t\t aria-haspopup="false" aria-expanded="false"\n' '\t\t\t\t onclick="gtag(\'event\', \'Menüpont kattintása\', ' '{\'event_label\': \'Mélyvíz\', \'event_category\': \'Menü\'});">\n' '\t\t\t\t\tMélyvíz\n' '\t\n' '\t\t\t\t\t\n' '\t\t\t\t</a>\n' '\t\t\t\n' '\n' '\n' '\t\t\t\n' '\t\t</li>\n' '\t\n' '\t\n' '\t\t<li data-menu-item="1" class=" dropdown theme5">\n' '\t\t\t\n' '\t\t\t\t<span style="cursor: default" data-menu-link="1" class="" ' 'href="/lexikon/" data-submenu="11" data-content-type="lexiconpage" ' 'aria-haspopup="true" aria-expanded="false">\n' '\t\t\t\t\tLexikon\n' '\t\n' '\t\t\t\t\t\n' '\t\t\t\t</span>\n' '\t\t\t\n' '\n' '\n' '\t\t\t\n' '\t\t\t\t<div data-menu="2">\n' '\t\t\t\t\t<div data-menu-wrap="2">\n' '\n' '\t\t\t\t\t\t\n' '\t\t\t\t\t\t\n' '\n' '\t<ul data-menu-list="2" data-submenu-id="11" ' 'aria-labelledby="ddtoggle_11">\n' '\t\t\n' '\t\t\t<li data-menu-item="2" class="">\n' '\t\t\t\t\n' '\t\t\t\t<a data-menu-link="2" href="/lexikon/arckepek/" ' 'onclick="gtag(\'event\', \'Menüpont kattintása\', {\'event_label\': ' '\'Arcképek\', \'event_category\': \'Menü\'});">\n' '\t\t\t\t\tArcképek\n' '\n' '\t\t\t\t</a>\n' '\t\t\t</li>\n' '\t\t\n' '\t\t\t<li data-menu-item="2" class="">\n' '\t\t\t\t\n' '\t\t\t\t<a data-menu-link="2" href="/lexikon/helyek/" ' 'onclick="gtag(\'event\', \'Menüpont kattintása\', {\'event_label\': ' '\'Helyek\', \'event_category\': \'Menü\'});">\n' '\t\t\t\t\tHelyek\n' '\n' '\t\t\t\t</a>\n' '\t\t\t</li>\n' '\t\t\n' '\t\t\t<li data-menu-item="2" class="">\n' '\t\t\t\t\n' '\t\t\t\t<a data-menu-link="2" href="/lexikon/fogalmak/" ' 'onclick="gtag(\'event\', \'Menüpont kattintása\', {\'event_label\': ' '\'Fogalmak\', \'event_category\': \'Menü\'});">\n' '\t\t\t\… <trimmed 5340 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <Block Node: content. Contents: []> |
self | [<TextNode: '\n\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n'>, <TextNode: '\n\t<header class="header">'>, <Variable Node: settings.core.OtpSettings.logo_text|default:"">, <TextNode: '</a></h1>\n\t\t\t<div class="'>, <django.template.defaulttags.URLNode object at 0x7fcaf3b067d0>, <TextNode: '">\n\t\t\t\t\t<div class="field'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06150>, <TextNode: '</label>\n\t\t\t\t\t\t\t<input id'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b063d0>, <TextNode: '">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<bu'>, <django.templatetags.i18n.TranslateNode object at 0x7fcaf3b06d50>, <TextNode: '</button>\n\t\t\t\t\t</div>\n\t\t\t'>, <django.template.library.SimpleNode object at 0x7fcaf33a7890>, <TextNode: '\n\t\t\t</nav>\n\t\t\t'>, <IfNode>, <TextNode: '\n\t\t</div>\n\t</header>\n\n\t<m'>, <Block Node: content. Contents: []>, <TextNode: '\n\t</main>\n\n\t<footer class'>, <django.template.library.SimpleNode object at 0x7fcaf33a7190>, <TextNode: '</nav>\n\t\t\t<p class="foote'>, <django.template.defaulttags.NowNode object at 0x7fcaf3aba7d0>, <TextNode: '. OTP Bank</p>\n\t\t</div>\n\t'>, <TextNode: '\n\t<div data-mobile-menu c'>, <django.template.library.SimpleNode object at 0x7fcaf39d8710>, <TextNode: '\n\t\t</nav>\n\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf39d8590>, <TextNode: '\n\t</div>\n\n'>] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <Block Node: content. Contents: []> |
/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py
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\n\t<article>\n\n\t\t<header c'>, <Variable Node: page.title>, <TextNode: '</h1>\n\t\t\t\t</div>\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</div>\n\t\t</header>\n\n\t'>, <ForNode: for block in page.body, tail_len: 16>, <TextNode: '\n\n\t\t'>, <TextNode: '\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf37d4d10>, <TextNode: '\n\n\t</article>\n\n'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7fcaf39fac90> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
push | <Block Node: content. Contents: [<TextNode: '\n\n\t<article>\n\n\t\t<header c'>, <Variable Node: page.title>, <TextNode: '</h1>\n\t\t\t\t</div>\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</div>\n\t\t</header>\n\n\t'>, <ForNode: for block in page.body, tail_len: 16>, <TextNode: '\n\n\t\t'>, <TextNode: '\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf37d4d10>, <TextNode: '\n\n\t</article>\n\n'>]> |
self | <Block Node: content. Contents: []> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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\t\t\t</div>\n\t\t</header>\n\n\t\t' |
bits | ['\n' '\n' '\t<article>\n' '\n' '\t\t<header class="block block--collection-header">\n' '\t\t\t<div class="block__content">\n' '\t\t\t\t<div class="block__header">\n' '\t\t\t\t\t<h1 class="block__title">', 'Mélyvíz', '</h1>\n\t\t\t\t</div>\n\t\t\t\t', '\n' '\t\t\t\t\t<div class="block__body">\n' '\t\t\t\t\t\t<h2 class="block__description">Hogyan működik a pénz, a ' 'bankvilág és a gazdaság?</h2>\n' '\t\t\t\t\t</div>\n' '\t\t\t\t', '\n\t\t\t</div>\n\t\t</header>\n\n\t\t'] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
node | <ForNode: for block in page.body, tail_len: 16> |
self | [<TextNode: '\n\n\t<article>\n\n\t\t<header c'>, <Variable Node: page.title>, <TextNode: '</h1>\n\t\t\t\t</div>\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</div>\n\t\t</header>\n\n\t'>, <ForNode: for block in page.body, tail_len: 16>, <TextNode: '\n\n\t\t'>, <TextNode: '\n\t\t'>, <django.template.defaulttags.CommentNode object at 0x7fcaf37d4d10>, <TextNode: '\n\n\t</article>\n\n'>] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <ForNode: for block in page.body, tail_len: 16> |
/usr/local/lib/python3.7/site-packages/django/template/defaulttags.py
in render
unpacked_vars = dict(zip(self.loopvars, item))
pop_context = True
context.update(unpacked_vars)
else:
context[self.loopvars[0]] = item
for node in self.nodelist_loop:
nodelist.append(node.render_annotated(context))…
if pop_context:
# Pop the loop variables pushed on to the context to avoid
# the context ending up in an inconsistent state when other
# tags (e.g., include and with) push data to context.
context.pop()
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
i | 7 |
item | <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710> |
len_values | 8 |
loop_dict | {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0} |
node | <wagtail.core.templatetags.wagtailcore_tags.IncludeBlockNode object at 0x7fcaf3a40550> |
nodelist | ['\n\t\t\t', '', '\n\t\t\t<section id="', 'c97e6549-5906-4e53-8282-06db7e7097ea', '" class="block block--', 'contentlist', ' has-title', '" ', 'data-display="default.html"', ' data-order="', '1', '"', '', '>\n\t\t\t\t<div class="block__content">', '\n' '\n' '\n' '\n' '\t<header class="block__header block__header-theme3">\n' '\t\t<h1 class="block__title">Mi a bank?\n' '\t\t\t<span class="block__icon block__icon-theme3"></span>\n' '\t\t</h1>\n' '\t\t\n' '\t\t\t<a href="/melyviz/mi-bank/" class="block__more btn_more"\n' '\t\t\t onclick="gtag(\'event\', \'Mi a bank\', {\'event_label\': ' '\'Érdekel\', \'event_category\': \'Mélyvíz\'});">Érdekel</a>\n' '\t\t\n' '\t</header>\n' '\n' '\n' '<div class="block__body swipe">\n' '\t<div class="block__list swipe__wrap">\n' '\t\t\n' '\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\t<article class="post" data-content-type="articlepage">\n' '\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t<figure class="post__media">\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\n' "\t\t\t\t\t\t\t\t<img class='post__img' " 'src="/media/images/csekk_hero.205f9e6e.fill-700x400.jpg" alt="">\n' '\t\t\t\t\t\t\t\t<a class="post__media-link" ' 'href="/melyviz/mi-bank/csak-csekk-udvozlet-keszpenzmentes-multban_1/"\n' '\t\t\t\t\t\t\t\t onclick="gtag(\'event\', \'Mi a bank\', {\'event_label\': ' "'Csak csekk: üdvözlet a készpénzmentes múltban', 'event_category': " '\'Mélyvíz\'});"></a>\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\t<a href="#" data-link="star" data-star-id="274" ' 'class="post__star">0</a>\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t</figure>\n' '\t\t\t\t\t\t\n' '\t\t\t\t\t\t<div class="post__header">\n' '\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t\t<a href="/melyviz/mi-bank/" class="post__series">Mi a ' 'bank?</a>\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t<h1 class="post__title">\n' '\t\t\t\t\t\t\t\t<a class="post__title-link" ' 'href="/melyviz/mi-bank/csak-csekk-udvozlet-keszpenzmentes-multban_1/"\n' '\t\t\t\t\t\t\t\t onclick="gtag(\'event\', \'Mi a bank\', {\'event_label\': ' "'Csak csekk: üdvözlet a készpénzmentes múltban', 'event_category': " '\'Mélyvíz\'});">Csak csekk: üdvözlet a készpénzmentes múltban</a>\n' '\t\t\t\t\t\t\t</h1>\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t<div class="post__reading-time">Olvasási idő – 9 perc</div>\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t</div>\n' '\t\t\t\t\t</article>\n' '\n' '\t\t\t\t\n' '\t\t\t\n' '\t\t\n' '\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\n' '\n' '\t\t\t\t\t<article class="post" data-content-type="articlepage">\n' '\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t<figure class="post__media">\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\n' "\t\t\t\t\t\t\t\t<img class='post__img' " 'src="/media/images/podcast_hero.2e16d0ba.fill-700x400.jpg" alt="">\n' '\t\t\t\t\t\t\t\t<a class="post__media-link" ' 'href="/melyviz/mi-bank/ha-csak-egy-valamit-akarsz-meghallgatni-bankrendszer-alapjairol-az-banfi-professzor-eloadasa-legyen_2/"\n' '\t\t\t\t\t\t\t\t onclick="gtag(\'event\', \'Mi a bank\', {\'event_label\': ' "'Mit érdemes tudni a bankrendszer alapjairól? (podcast)', 'event_category': " '\'Mélyvíz\'});"></a>\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\t\t<a href="#" data-link="star" data-star-id="198" ' 'class="post__star">0</a>\n' '\t\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t</figure>\n' '\t\t\t\t\t\t\n' '\t\t\t\t\t\t<div class="post__header">\n' '\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t\t<a href="/melyviz/mi-bank/" class="post__series">Mi a ' 'bank?</a>\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t\n' '\t\t\t\t\t\t\t\n' '\n' '\t\t\t\t\t\t\t<h1 class="post__title">\n' '\t\t\t\t\t\t\t\t<a class="post__title-link" ' 'href="/melyviz/mi-bank/ha-csak-egy-valamit-akarsz-meghallgatni-bankrendszer-alapjairol-az-banfi-professzor-eloadasa-legyen_2/"\n' '\t\t\t\t\t\t\t\t onclick="gtag(\'event\', \'Mi a bank\… <trimmed 40855 bytes string> |
num_loopvars | 1 |
parentloop | {} |
pop_context | False |
self | <ForNode: for block in page.body, tail_len: 16> |
unpack | False |
values | [<wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3854450>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf37e4fd0>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf33a2c50>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3799310>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf36d8590>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf37be0d0>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3b296d0>, <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
self | <wagtail.core.templatetags.wagtailcore_tags.IncludeBlockNode object at 0x7fcaf3a40550> |
/usr/local/lib/python3.7/site-packages/wagtail/core/templatetags/wagtailcore_tags.py
in render
else:
new_context = {}
if self.extra_context:
for var_name, var_value in self.extra_context.items():
new_context[var_name] = var_value.resolve(context)
return value.render_as_block(context=new_context)…
else:
return force_str(value)
@register.tag
def include_block(parser, token):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'page': <SeriesCollectionPage: Mélyvíz>, 'self': <SeriesCollectionPage: Mélyvíz>, 'request': <WSGIRequest: GET '/melyviz/'>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>}] |
new_context | {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'False': False, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'hu', 'MEDIA_URL': '/media/', 'None': None, 'True': True, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'csrf_token': <SimpleLazyObject: <function csrf.<locals>._get_val at 0x7fcaf36b3d40>>, 'forloop': {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'page': <SeriesCollectionPage: Mélyvíz>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': <SeriesCollectionPage: Mélyvíz>, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'user': <SimpleLazyObject: <function AuthenticationMiddleware.process_request.<locals>.<lambda> at 0x7fcaf36b3560>>, 'wagtailmenus_vals': {'current_page': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>, 'section_root': <SeriesCollectionPage: Mélyvíz>}} |
self | <wagtail.core.templatetags.wagtailcore_tags.IncludeBlockNode object at 0x7fcaf3a40550> |
value | <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710> |
/usr/local/lib/python3.7/site-packages/wagtail/core/blocks/base.py
in render_as_block
"""
Alias for render; the include_block tag will specifically check for the presence of a method
with this name. (This is because {% include_block %} is just as likely to be invoked on a bare
value as a BoundBlock. If we looked for a `render` method instead, we'd run the risk of finding
an unrelated method that just happened to have that name - for example, when called on a
PageChooserBlock it could end up calling page.render.
"""
return self.block.render(self.value, context=context)…
def id_for_label(self):
return self.block.id_for_label(self.prefix)
def __str__(self):
"""Render the value according to the block's native rendering"""
Variable | Value |
---|---|
context | {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'False': False, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'hu', 'MEDIA_URL': '/media/', 'None': None, 'True': True, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'forloop': {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'page': <SeriesCollectionPage: Mélyvíz>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': <SeriesCollectionPage: Mélyvíz>, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'wagtailmenus_vals': {'current_page': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>, 'section_root': <SeriesCollectionPage: Mélyvíz>}} |
self | <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710> |
/usr/local/lib/python3.7/site-packages/wagtail/core/blocks/base.py
in render
return self.render_basic(value, context=context)
if context is None:
new_context = self.get_context(value)
else:
new_context = self.get_context(value, parent_context=dict(context))
return mark_safe(render_to_string(template, new_context))…
def get_api_representation(self, value, context=None):
"""
Can be used to customise the API response and defaults to the value returned by get_prep_value.
"""
return self.get_prep_value(value)
Variable | Value |
---|---|
context | {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'False': False, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'hu', 'MEDIA_URL': '/media/', 'None': None, 'True': True, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'forloop': {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'page': <SeriesCollectionPage: Mélyvíz>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': <SeriesCollectionPage: Mélyvíz>, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'wagtailmenus_vals': {'current_page': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>, 'section_root': <SeriesCollectionPage: Mélyvíz>}} |
new_context | {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'False': False, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'hu', 'MEDIA_URL': '/media/', 'None': None, 'True': True, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'forloop': {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'page': <SeriesCollectionPage: Mélyvíz>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'wagtailmenus_vals': {'current_page': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>, 'section_root': <SeriesCollectionPage: Mélyvíz>}} |
self | <home.blocks.LargeImageBlock object at 0x7fcaf47cdb50> |
template | 'home/blocks/largeimage.html' |
value | StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]) |
/usr/local/lib/python3.7/site-packages/django/template/loader.py
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 | {'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'ERROR': 40, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30}, 'False': False, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_BIDI': False, 'LANGUAGE_CODE': 'hu', 'MEDIA_URL': '/media/', 'None': None, 'True': True, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'forloop': {'counter': 8, 'counter0': 7, 'first': False, 'last': True, 'parentloop': {}, 'revcounter': 1, 'revcounter0': 0}, 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'page': <SeriesCollectionPage: Mélyvíz>, 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'request': <WSGIRequest: GET '/melyviz/'>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'wagtailmenus_vals': {'current_page': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>, 'section_root': <SeriesCollectionPage: Mélyvíz>}} |
request | None |
template | <django.template.backends.django.Template object at 0x7fcaf368c490> |
template_name | 'home/blocks/largeimage.html' |
using | None |
/usr/local/lib/python3.7/site-packages/django/template/backends/django.py
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}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
request | None |
self | <django.template.backends.django.Template object at 0x7fcaf368c490> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
self | <django.template.base.Template object at 0x7fcaf38036d0> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
self | <django.template.base.Template object at 0x7fcaf38036d0> |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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 | '">' |
bits | ['', '\n' '\n' '<div class="block__content">\n' '\n' '\t<div class="block__body">\n' '\t\t<article class="post">\n' '\n' '\t\t\t<figure class="post__media">\n' '\t\t\t\t<a href="', '#', '">'] |
context | [{'True': True, 'False': False, 'None': None}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
node | <wagtail.images.templatetags.wagtailimages_tags.ImageNode object at 0x7fcaf3657110> |
self | [<django.template.defaulttags.LoadNode object at 0x7fcaf3657c50>, <TextNode: '\n\n<div class="block__cont'>, <Variable Node: value.url|default:"#">, <TextNode: '">'>, <wagtail.images.templatetags.wagtailimages_tags.ImageNode object at 0x7fcaf3657110>, <TextNode: '</a>\n\t\t\t</figure>\n\n\t\t\t<di'>, <IfNode>, <TextNode: '\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t\t'>, <IfNode>, <TextNode: '\n\t\t\t</div>\n\t\t</article>\n\t'>] |
/usr/local/lib/python3.7/site-packages/django/template/base.py
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}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
self | <wagtail.images.templatetags.wagtailimages_tags.ImageNode object at 0x7fcaf3657110> |
/usr/local/lib/python3.7/site-packages/wagtail/images/templatetags/wagtailimages_tags.py
in render
if not image:
return ''
if not hasattr(image, 'get_rendition'):
raise ValueError("image tag expected an Image object, got %r" % image)
rendition = get_rendition_or_not_found(image, self.filter)…
if self.output_var_name:
# return the rendition object in the given variable
context[self.output_var_name] = rendition
return ''
else:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {'True': True, 'False': False, 'None': None, 'csrf_token': <SimpleLazyObject: 'xqCEVMZcPhlQTJmyrkyvIYZ02BEehCO6jtGUawDg7wASxN80df6Xj62LV0z1omaJ'>, 'request': <WSGIRequest: GET '/melyviz/'>, 'user': <SimpleLazyObject: <django.contrib.auth.models.AnonymousUser object at 0x7fcaf3bf3550>>, 'perms': <django.contrib.auth.context_processors.PermWrapper object at 0x7fcaf39fa3d0>, 'LANGUAGES': (('hu', 'Magyar'),), 'LANGUAGE_CODE': 'hu', 'LANGUAGE_BIDI': False, 'MEDIA_URL': '/media/', 'messages': <django.contrib.messages.storage.fallback.FallbackStorage object at 0x7fcaf3762ed0>, 'DEFAULT_MESSAGE_LEVELS': {'DEBUG': 10, 'INFO': 20, 'SUCCESS': 25, 'WARNING': 30, 'ERROR': 40}, 'settings': {'core': {'otpsettings': <OtpSettings: OtpSettings object (1)>}}, 'wagtailmenus_vals': <SimpleLazyObject: {'current_page': <SeriesCollectionPage: Mélyvíz>, 'section_root': <SeriesCollectionPage: Mélyvíz>, 'current_page_ancestor_ids': <PageQuerySet [8]>}>, 'page': <SeriesCollectionPage: Mélyvíz>, 'self': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')]), 'page_teaser': <OtpRendition: OtpRendition object (2613)>, 'block': <wagtail.core.blocks.stream_block.StreamValue.StreamChild object at 0x7fcaf3ac2710>, 'forloop': {'parentloop': {}, 'counter0': 7, 'counter': 8, 'revcounter': 1, 'revcounter0': 0, 'first': False, 'last': True}, 'value': StructValue([('title', 'Tesztkép'), ('gtag_action', 'Kiemelt'), ('subtitle', ''), ('image', <OtpImage: adós.jpg>), ('url', ''), ('caption', '')])}] |
image | <OtpImage: adós.jpg> |
self | <wagtail.images.templatetags.wagtailimages_tags.ImageNode object at 0x7fcaf3657110> |
/usr/local/lib/python3.7/site-packages/wagtail/images/shortcuts.py
in get_rendition_or_not_found
Tries to get / create the rendition for the image or renders a not-found image if it does not exist.
:param image: AbstractImage
:param specs: str or Filter
:return: Rendition
"""
try:
return image.get_rendition(specs)…
except SourceImageIOError:
# Image file is (probably) missing from /media/original_images - generate a dummy
# rendition so that we just output a broken image, rather than crashing out completely
# during rendering.
Rendition = image.renditions.model # pick up any custom Image / Rendition classes that may be in use
rendition = Rendition(image=image, width=0, height=0)
Variable | Value |
---|---|
image | <OtpImage: adós.jpg> |
specs | <wagtail.images.models.Filter object at 0x7fcaf3ba6a50> |
/usr/local/lib/python3.7/site-packages/wagtail/images/models.py
in get_rendition
# Truncate filename to prevent it going over 60 chars
output_filename_without_extension = input_filename_without_extension[:(59 - len(output_extension))]
output_filename = output_filename_without_extension + '.' + output_extension
rendition, created = self.renditions.get_or_create(
filter_spec=filter.spec,
focal_point_key=cache_key,
defaults={'file': File(generated_image.f, name=output_filename)}…
)
return rendition
def is_portrait(self):
return (self.width < self.height)
Variable | Value |
---|---|
FORMAT_EXTENSIONS | {'gif': '.gif', 'jpeg': '.jpg', 'png': '.png', 'webp': '.webp'} |
Rendition | <class 'core.models.OtpRendition'> |
cache_key | '2e16d0ba' |
filter | <wagtail.images.models.Filter object at 0x7fcaf3ba6a50> |
generated_image | <willow.image.JPEGImageFile object at 0x7fcaf3803990> |
input_extension | '.jpg' |
input_filename | 'ados.jpg' |
input_filename_without_extension | 'ados' |
output_extension | '2e16d0ba.fill-2880x1440.jpg' |
output_filename | 'ados.2e16d0ba.fill-2880x1440.jpg' |
output_filename_without_extension | 'ados' |
self | <OtpImage: adós.jpg> |
/usr/local/lib/python3.7/site-packages/django/db/models/fields/related_descriptors.py
in get_or_create
db = router.db_for_write(self.model, instance=self.instance)
return super(RelatedManager, self.db_manager(db)).create(**kwargs)
create.alters_data = True
def get_or_create(self, **kwargs):
kwargs[self.field.name] = self.instance
db = router.db_for_write(self.model, instance=self.instance)
return super(RelatedManager, self.db_manager(db)).get_or_create(**kwargs)…
get_or_create.alters_data = True
def update_or_create(self, **kwargs):
kwargs[self.field.name] = self.instance
db = router.db_for_write(self.model, instance=self.instance)
return super(RelatedManager, self.db_manager(db)).update_or_create(**kwargs)
Variable | Value |
---|---|
RelatedManager | <class 'django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager'> |
__class__ | <class 'django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager'> |
db | 'default' |
kwargs | {'defaults': {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>}, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
self | <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x7fcaf3803250> |
/usr/local/lib/python3.7/site-packages/django/db/models/manager.py
in manager_method
def check(self, **kwargs):
return []
@classmethod
def _get_queryset_methods(cls, queryset_class):
def create_method(name, method):
def manager_method(self, *args, **kwargs):
return getattr(self.get_queryset(), name)(*args, **kwargs)…
manager_method.__name__ = method.__name__
manager_method.__doc__ = method.__doc__
return manager_method
new_methods = {}
for name, method in inspect.getmembers(queryset_class, predicate=inspect.isfunction):
Variable | Value |
---|---|
args | () |
kwargs | {'defaults': {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>}, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
name | 'get_or_create' |
self | <django.db.models.fields.related_descriptors.create_reverse_many_to_one_manager.<locals>.RelatedManager object at 0x7fcaf3854390> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in get_or_create
# The get() needs to be targeted at the write database in order
# to avoid potential transaction consistency problems.
self._for_write = True
try:
return self.get(**kwargs), False
except self.model.DoesNotExist:
params = self._extract_model_params(defaults, **kwargs)
return self._create_object_from_params(kwargs, params)…
def update_or_create(self, defaults=None, **kwargs):
"""
Look up an object with the given kwargs, updating one with defaults
if it exists, otherwise create a new one.
Return a tuple (object, created), where created is a boolean
Variable | Value |
---|---|
defaults | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>} |
kwargs | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
params | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in _create_object_from_params
"""
Try to create an object using passed params. Used by get_or_create()
and update_or_create().
"""
try:
with transaction.atomic(using=self.db):
params = {k: v() if callable(v) else v for k, v in params.items()}
obj = self.create(**params)…
return obj, True
except IntegrityError as e:
try:
qs = self.select_for_update() if lock else self
return qs.get(**lookup), False
except self.model.DoesNotExist:
Variable | Value |
---|---|
lock | False |
lookup | {'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
params | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in create
def create(self, **kwargs):
"""
Create a new object with the given kwargs, saving it to the database
and returning the created object.
"""
obj = self.model(**kwargs)
self._for_write = True
obj.save(force_insert=True, using=self.db)…
return obj
def _populate_pk_values(self, objs):
for obj in objs:
if obj.pk is None:
obj.pk = obj._meta.pk.get_pk_value_on_save(obj)
Variable | Value |
---|---|
kwargs | {'file': <File: ados.2e16d0ba.fill-2880x1440.jpg>, 'filter_spec': 'fill-2880x1440', 'focal_point_key': '2e16d0ba', 'image': <OtpImage: adós.jpg>} |
obj | <OtpRendition: OtpRendition object (None)> |
self | <QuerySet [<OtpRendition: OtpRendition object (6990)>, <OtpRendition: OtpRendition object (6991)>, <OtpRendition: OtpRendition object (6992)>, <OtpRendition: OtpRendition object (6993)>]> |
/usr/local/lib/python3.7/site-packages/django/db/models/base.py
in save
if not field.primary_key and not hasattr(field, 'through'):
field_names.add(field.attname)
loaded_fields = field_names.difference(deferred_fields)
if loaded_fields:
update_fields = frozenset(loaded_fields)
self.save_base(using=using, force_insert=force_insert,
force_update=force_update, update_fields=update_fields)…
save.alters_data = True
def save_base(self, raw=False, force_insert=False,
force_update=False, using=None, update_fields=None):
"""
Handle the parts of saving which should be done only once per save,
Variable | Value |
---|---|
deferred_fields | set() |
field | <django.db.models.fields.related.ForeignKey: image> |
force_insert | True |
force_update | False |
obj | <OtpImage: adós.jpg> |
self | <OtpRendition: OtpRendition object (None)> |
update_fields | None |
using | 'default' |
/usr/local/lib/python3.7/site-packages/django/db/models/base.py
in save_base
context_manager = transaction.mark_for_rollback_on_error(using=using)
with context_manager:
parent_inserted = False
if not raw:
parent_inserted = self._save_parents(cls, using, update_fields)
updated = self._save_table(
raw, cls, force_insert or parent_inserted,
force_update, using, update_fields,…
)
# Store the database on which the object was saved
self._state.db = using
# Once saved, this is no longer a to-be-added instance.
self._state.adding = False
Variable | Value |
---|---|
cls | <class 'core.models.OtpRendition'> |
context_manager | <contextlib._GeneratorContextManager object at 0x7fcaf38549d0> |
force_insert | True |
force_update | False |
meta | <Options for OtpRendition> |
origin | <class 'core.models.OtpRendition'> |
parent_inserted | False |
raw | False |
self | <OtpRendition: OtpRendition object (None)> |
update_fields | None |
using | 'default' |
/usr/local/lib/python3.7/site-packages/django/db/models/base.py
in _save_table
self._order = order_value
fields = meta.local_concrete_fields
if not pk_set:
fields = [f for f in fields if f is not meta.auto_field]
update_pk = meta.auto_field and not pk_set
result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)…
if update_pk:
setattr(self, meta.pk.attname, result)
return updated
def _do_update(self, base_qs, using, pk_val, values, update_fields, forced_update):
"""
Variable | Value |
---|---|
cls | <class 'core.models.OtpRendition'> |
fields | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
force_insert | True |
force_update | False |
meta | <Options for OtpRendition> |
non_pks | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
pk_set | False |
pk_val | None |
raw | False |
self | <OtpRendition: OtpRendition object (None)> |
update_fields | None |
update_pk | True |
updated | False |
using | 'default' |
/usr/local/lib/python3.7/site-packages/django/db/models/base.py
in _do_insert
def _do_insert(self, manager, using, fields, update_pk, raw):
"""
Do an INSERT. If update_pk is defined then this method should return
the new pk for the model.
"""
return manager._insert([self], fields=fields, return_id=update_pk,
using=using, raw=raw)…
def delete(self, using=None, keep_parents=False):
using = using or router.db_for_write(self.__class__, instance=self)
assert self.pk is not None, (
"%s object can't be deleted because its %s attribute is set to None." %
(self._meta.object_name, self._meta.pk.attname)
Variable | Value |
---|---|
fields | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
manager | <django.db.models.manager.Manager object at 0x7fcaf3aa7a50> |
raw | False |
self | <OtpRendition: OtpRendition object (None)> |
update_pk | True |
using | 'default' |
/usr/local/lib/python3.7/site-packages/django/db/models/manager.py
in manager_method
def check(self, **kwargs):
return []
@classmethod
def _get_queryset_methods(cls, queryset_class):
def create_method(name, method):
def manager_method(self, *args, **kwargs):
return getattr(self.get_queryset(), name)(*args, **kwargs)…
manager_method.__name__ = method.__name__
manager_method.__doc__ = method.__doc__
return manager_method
new_methods = {}
for name, method in inspect.getmembers(queryset_class, predicate=inspect.isfunction):
Variable | Value |
---|---|
args | ([<OtpRendition: OtpRendition object (None)>],) |
kwargs | {'fields': [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>], 'raw': False, 'return_id': True, 'using': 'default'} |
name | '_insert' |
self | <django.db.models.manager.Manager object at 0x7fcaf3aa7a50> |
/usr/local/lib/python3.7/site-packages/django/db/models/query.py
in _insert
the InsertQuery class and is how Model.save() is implemented.
"""
self._for_write = True
if using is None:
using = self.db
query = sql.InsertQuery(self.model, ignore_conflicts=ignore_conflicts)
query.insert_values(fields, objs, raw=raw)
return query.get_compiler(using=using).execute_sql(return_id)…
_insert.alters_data = True
_insert.queryset_only = False
def _batched_insert(self, objs, fields, batch_size, ignore_conflicts=False):
"""
Helper method for bulk_create() to insert objs one batch at a time.
Variable | Value |
---|---|
fields | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
ignore_conflicts | False |
objs | [<OtpRendition: OtpRendition object (None)>] |
query | <django.db.models.sql.subqueries.InsertQuery object at 0x7fcaf33a2310> |
raw | False |
return_id | True |
self | <QuerySet [<OtpRendition: OtpRendition object (1)>, <OtpRendition: OtpRendition object (2)>, <OtpRendition: OtpRendition object (3)>, <OtpRendition: OtpRendition object (4)>, <OtpRendition: OtpRendition object (5)>, <OtpRendition: OtpRendition object (6)>, <OtpRendition: OtpRendition object (7)>, <OtpRendition: OtpRendition object (8)>, <OtpRendition: OtpRendition object (9)>, <OtpRendition: OtpRendition object (10)>, <OtpRendition: OtpRendition object (11)>, <OtpRendition: OtpRendition object (12)>, <OtpRendition: OtpRendition object (13)>, <OtpRendition: OtpRendition object (14)>, <OtpRendition: OtpRendition object (15)>, <OtpRendition: OtpRendition object (16)>, <OtpRendition: OtpRendition object (17)>, <OtpRendition: OtpRendition object (18)>, <OtpRendition: OtpRendition object (19)>, <OtpRendition: OtpRendition object (20)>, '...(remaining elements truncated)...']> |
using | 'default' |
/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in execute_sql
def execute_sql(self, return_id=False):
assert not (
return_id and len(self.query.objs) != 1 and
not self.connection.features.can_return_ids_from_bulk_insert
)
self.return_id = return_id
with self.connection.cursor() as cursor:
for sql, params in self.as_sql():…
cursor.execute(sql, params)
if not return_id:
return
if self.connection.features.can_return_ids_from_bulk_insert and len(self.query.objs) > 1:
return self.connection.ops.fetch_returned_insert_ids(cursor)
if self.connection.features.can_return_id_from_insert:
Variable | Value |
---|---|
cursor | <django.db.backends.utils.CursorDebugWrapper object at 0x7fcaf3803110> |
return_id | True |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7fcaf33a2510> |
/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in as_sql
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
for obj in self.query.objs…
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
fields | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
insert_statement | 'INSERT INTO' |
opts | <Options for OtpRendition> |
qn | <bound method DatabaseOperations.quote_name of <django.db.backends.postgresql.operations.DatabaseOperations object at 0x7fcaf5837750>> |
result | ['INSERT INTO "core_otprendition"', '("filter_spec", "file", "width", "height", "focal_point_key", "image_id")'] |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7fcaf33a2510> |
/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in <listcomp>
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
for obj in self.query.objs…
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7fcaf33a24d0> |
fields | [<django.db.models.fields.CharField: filter_spec>, <django.db.models.fields.files.ImageField: file>, <django.db.models.fields.IntegerField: width>, <django.db.models.fields.IntegerField: height>, <django.db.models.fields.CharField: focal_point_key>, <django.db.models.fields.related.ForeignKey: image>] |
obj | <OtpRendition: OtpRendition object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7fcaf33a2510> |
/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in <listcomp>
insert_statement = self.connection.ops.insert_statement(ignore_conflicts=self.query.ignore_conflicts)
result = ['%s %s' % (insert_statement, qn(opts.db_table))]
fields = self.query.fields or [opts.pk]
result.append('(%s)' % ', '.join(qn(f.column) for f in fields))
if self.query.fields:
value_rows = [
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]…
for obj in self.query.objs
]
else:
# An empty object.
value_rows = [[self.connection.ops.pk_default_value()] for _ in self.query.objs]
fields = [None]
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7fcaf33a2b10> |
field | <django.db.models.fields.files.ImageField: file> |
obj | <OtpRendition: OtpRendition object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7fcaf33a2510> |
/usr/local/lib/python3.7/site-packages/django/db/models/sql/compiler.py
in pre_save_val
def pre_save_val(self, field, obj):
"""
Get the given field's value off the given obj. pre_save() is used for
things like auto_now on DateTimeField. Skip it if this is a raw query.
"""
if self.query.raw:
return getattr(obj, field.attname)
return field.pre_save(obj, add=True)…
def assemble_as_sql(self, fields, value_rows):
"""
Take a sequence of N fields and a sequence of M rows of values, and
generate placeholder SQL and parameters for each field and value.
Return a pair containing:
Variable | Value |
---|---|
field | <django.db.models.fields.files.ImageField: file> |
obj | <OtpRendition: OtpRendition object (None)> |
self | <django.db.models.sql.compiler.SQLInsertCompiler object at 0x7fcaf33a2510> |
/usr/local/lib/python3.7/site-packages/django/db/models/fields/files.py
in pre_save
return None
return str(value)
def pre_save(self, model_instance, add):
file = super().pre_save(model_instance, add)
if file and not file._committed:
# Commit the file to storage prior to saving the model
file.save(file.name, file.file, save=False)…
return file
def contribute_to_class(self, cls, name, **kwargs):
super().contribute_to_class(cls, name, **kwargs)
setattr(cls, self.name, self.descriptor_class(self))
Variable | Value |
---|---|
__class__ | <class 'django.db.models.fields.files.FileField'> |
add | True |
file | <ImageFieldFile: ados.2e16d0ba.fill-2880x1440.jpg> |
model_instance | <OtpRendition: OtpRendition object (None)> |
self | <django.db.models.fields.files.ImageField: file> |
/usr/local/lib/python3.7/site-packages/django/db/models/fields/files.py
in save
# In addition to the standard File API, FieldFiles have extra methods
# to further manipulate the underlying file, as well as update the
# associated model instance.
def save(self, name, content, save=True):
name = self.field.generate_filename(self.instance, name)
self.name = self.storage.save(name, content, max_length=self.field.max_length)…
setattr(self.instance, self.field.name, self.name)
self._committed = True
# Save the object because it has changed, unless save is False
if save:
self.instance.save()
Variable | Value |
---|---|
content | <File: ados.2e16d0ba.fill-2880x1440.jpg> |
name | 'images/ados.2e16d0ba.fill-2880x1440.jpg' |
save | False |
self | <ImageFieldFile: ados.2e16d0ba.fill-2880x1440.jpg> |
/usr/local/lib/python3.7/site-packages/django/core/files/storage.py
in save
if name is None:
name = content.name
if not hasattr(content, 'chunks'):
content = File(content, name)
name = self.get_available_name(name, max_length=max_length)
return self._save(name, content)…
# These methods are part of the public API, with default implementations.
def get_valid_name(self, name):
"""
Return a filename, based on the provided filename, that's suitable for
Variable | Value |
---|---|
content | <File: ados.2e16d0ba.fill-2880x1440.jpg> |
max_length | 100 |
name | 'images/ados.2e16d0ba.fill-2880x1440.jpg' |
self | <django.core.files.storage.FileSystemStorage object at 0x7fcaf3b5d1d0> |
/usr/local/lib/python3.7/site-packages/django/core/files/storage.py
in _save
# This file has a file path that we can move.
if hasattr(content, 'temporary_file_path'):
file_move_safe(content.temporary_file_path(), full_path)
# This is a normal uploadedfile that we can stream.
else:
# The current umask value is masked out by os.open!
fd = os.open(full_path, self.OS_OPEN_FLAGS, 0o666)…
_file = None
try:
locks.lock(fd, locks.LOCK_EX)
for chunk in content.chunks():
if _file is None:
mode = 'wb' if isinstance(chunk, bytes) else 'wt'
Variable | Value |
---|---|
content | <File: ados.2e16d0ba.fill-2880x1440.jpg> |
directory | '/code/media/images' |
full_path | '/code/media/images/ados.2e16d0ba.fill-2880x1440.jpg' |
name | 'images/ados.2e16d0ba.fill-2880x1440.jpg' |
self | <django.core.files.storage.FileSystemStorage object at 0x7fcaf3b5d1d0> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CSRF_COOKIE | '9dQKdrsJGLCPDDPyNFVnbhgSsm3G8ABsVgU0sb6NY0RRhHB0zAtPMpjDlLYtfkX5' |
CSRF_COOKIE_USED | True |
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'www.otpedia.hu' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '107.23.85.179' |
HTTP_X_REAL_IP | '107.23.85.179' |
PATH_INFO | '/melyviz/' |
QUERY_STRING | '' |
RAW_URI | '/melyviz/' |
REMOTE_ADDR | '192.168.205.35' |
REMOTE_PORT | '42810' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | '0.0.0.0' |
SERVER_PORT | '8000' |
SERVER_PROTOCOL | 'HTTP/1.0' |
SERVER_SOFTWARE | 'gunicorn/20.1.0' |
WAGTAILMENUS_CURRENT_PAGE | <SeriesCollectionPage: Mélyvíz> |
WAGTAILMENUS_CURRENT_SECTION_ROOT | <SeriesCollectionPage: Mélyvíz> |
gunicorn.socket | <socket.socket fd=11, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.26.0.2', 8000), raddr=('192.168.205.35', 42810)> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7fcaf37a4310> |
wsgi.file_wrapper | '' |
wsgi.input | <gunicorn.http.body.Body object at 0x7fcaf37a4910> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
otpedia.settings.dev
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['*'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | '/code' |
BASE_URL | '127.0.0.1:8000' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CELERY_ACCEPT_CONTENT | ['json'] |
CELERY_BROKER_URL | 'redis://127.0.0.1:6379/0' |
CELERY_RESULT_BACKEND | 'django-db' |
CELERY_TASK_SERIALIZER | 'json' |
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 | [] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': '', 'NAME': 'otpedia', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'postgres'}} |
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', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y'] |
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_CHARSET | 'utf-8' |
DEFAULT_CONTENT_TYPE | 'text/html' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
DEFAULT_FROM_EMAIL | 'webmaster@localhost' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.console.EmailBackend' |
EMAIL_HOST | 'localhost' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | '' |
EMAIL_PORT | 25 |
EMAIL_SSL_CERTFILE | None |
EMAIL_SSL_KEYFILE | '********************' |
EMAIL_SUBJECT_PREFIX | '[Django] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_LOCALTIME | False |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | False |
FILE_CHARSET | 'utf-8' |
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 | None |
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' |
GOOGLE_MAPS_V3_APIKEY | '********************' |
HOMEPAGE_BLOCKS_DEFAULT_CLOSED | True |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ['wagtail_react_streamfield', 'wagtail.contrib.forms', 'wagtail.contrib.redirects', 'wagtail.contrib.modeladmin', 'wagtail.contrib.postgres_search', 'wagtail.contrib.table_block', 'wagtail.contrib.settings', 'wagtail.contrib.styleguide', 'wagtail.contrib.routable_page', 'wagtail.embeds', 'wagtail.sites', 'wagtail.users', 'wagtail.snippets', 'wagtail.documents', 'wagtail.images', 'wagtail.search', 'wagtail.admin', 'wagtail.core', 'wagtailmenus', 'wagtailgeowidget', 'modelcluster', 'taggit', 'el_pagination', 'rest_framework', 'formtools', 'home', 'search', 'core', 'content', 'lexicon', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sitemaps'] |
INTERNAL_IPS | [] |
LANGUAGES | (('hu', 'Magyar'),) |
LANGUAGES_BIDI | ['he', 'ar', 'fa', 'ur'] |
LANGUAGE_CODE | 'hu' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LOCALE_PATHS | [] |
LOGGING | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/code/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.security.SecurityMiddleware', 'wagtail.core.middleware.SiteMiddleware', 'wagtail.contrib.redirects.middleware.RedirectMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
NUMBER_OF_RELATED_ITEMS | 3 |
PAGE_THEMES | {('', 'Alapértelmezett'), ('theme1', 'Múlt / narancs'), ('theme2', 'Jövő / májva'), ('theme3', 'Alapok / sötétkék'), ('theme4', '7 percben / ibolya'), ('theme5', 'Lexikon / kék'), ('theme6', 'Kincsek / sárga')} |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
PROJECT_DIR | '/code/otpedia' |
READING_TIME_WPM | 200 |
RICH_TEXT_ELEMENTS | ['h2', 'h3', 'bold', 'italic', 'underline', 'hr', 'link', 'ol', 'ul', 'document-link', 'button', 'image', 'embed', 'superscript', 'subscript', 'blockquote'] |
ROOT_URLCONF | 'otpedia.urls' |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | False |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_PRELOAD | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
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 | 'Lax' |
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.JSONSerializer' |
SETTINGS_MODULE | 'otpedia.settings.dev' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
STAR_COOKIE_NAME | 'starred_pages' |
STATICFILES_DIRS | ['/code/otpedia/static'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' |
STATIC_ROOT | '/code/static' |
STATIC_URL | '/static/' |
STREAMPAGE_BLOCKS_DEFAULT_CLOSED | False |
TAGGIT_CASE_INSENSITIVE | True |
TAG_SPACES_ALLOWED | True |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/code/otpedia/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.contrib.messages.context_processors.messages', 'wagtail.contrib.settings.context_processors.settings', 'wagtailmenus.context_processors.wagtailmenus']}}] |
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 | 'CET' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | False |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WAGTAILEMBEDS_FINDERS | [{'class': 'wagtail.embeds.finders.oembed', 'options': {'color': '#000000', 'show_comments': False}, 'providers': [{'endpoint': 'https://soundcloud.com/oembed', 'urls': ['^https://soundcloud\\.com/.+$']}]}, {'class': 'wagtail.embeds.finders.oembed'}] |
WAGTAILIMAGES_IMAGE_MODEL | 'core.OtpImage' |
WAGTAILIMAGES_MAX_UPLOAD_SIZE | 20971520 |
WAGTAILSEARCH_BACKENDS | {'default': {'BACKEND': 'wagtail.contrib.postgres_search.backend'}} |
WAGTAIL_ALLOW_UNICODE_SLUGS | False |
WAGTAIL_DATETIME_FORMAT | '%Y.%m.%d. %H:%M' |
WAGTAIL_DATE_FORMAT | '%Y.%m.%d.' |
WAGTAIL_SITE_NAME | 'OTPedia' |
WSGI_APPLICATION | 'otpedia.wsgi.application' |
X_FRAME_OPTIONS | 'SAMEORIGIN' |
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.