[Errno 19] No such device: '/srv/webapps/congress/staticfiles/media/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG.jpg'
Request Method: | GET |
---|---|
Request URL: | https://congress.muctr.ru/2018/event/v-programme-foruma/vystavka/ |
Django Version: | 2.2 |
Exception Type: | OSError |
Exception Value: | [Errno 19] No such device: '/srv/webapps/congress/staticfiles/media/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG.jpg' |
Exception Location: | /srv/webapps/.envs/congress/lib/python3.8/site-packages/django/core/files/storage.py in _open, line 224 |
Python Executable: | /srv/webapps/.envs/congress/bin/python |
Python Version: | 3.8.5 |
Python Path: | ['/srv/webapps/.envs/congress/bin', '/srv/webapps/congress/congress', '/usr/lib/python38.zip', '/usr/lib/python3.8', '/usr/lib/python3.8/lib-dynload', '/srv/webapps/.envs/congress/lib/python3.8/site-packages', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf', '/srv/webapps/.envs/congress/lib/python3.8/site-packages/odf'] |
Server time: | Пт, 29 Мар 2024 14:29:59 +0300 |
In template /srv/webapps/congress/congress/templates/base.html
, error at line 33
23 | <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> |
---|---|
24 | <!-- Bootstrap core CSS --> |
25 | <link href="{% static 'css/bootstrap.min.css' %}" rel="stylesheet"> |
26 | <!-- Material Design Bootstrap --> |
27 | <link href="{% static 'css/mdb.min.css' %}" rel="stylesheet"> |
28 | <!-- Your custom styles (optional) --> |
29 | <link href="{% static 'css/style.css' %}" rel="stylesheet"> |
30 | <link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" rel="stylesheet"> |
31 | <link type="text/css" rel="stylesheet" |
32 | href="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.11/css/lightgallery.min.css"> |
33 | <script type="text/javascript" src="{% static 'js/jquery-3.3.1.min.js' %}"></script> |
34 | <script src="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.11/js/lightgallery-all.min.js"></script> |
35 | <script src="https://cdn.jsdelivr.net/picturefill/2.3.1/picturefill.min.js"></script> |
36 | </head> |
37 | <body id="section_home" onload="{% block onload %}{% endblock %}"> |
38 | <header> |
39 | <nav class="navbar fixed-top navbar-expand-lg navbar-dark scrolling-navbar"> |
40 | <div class="container"> |
41 | <a class="navbar-brand" href="/"> |
42 | <img src="{% static 'img/logo.png' %}"> |
43 | </a> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/base.py
in _resolve_lookup
detail and shouldn't be called by external code. Use Variable.resolve()
instead.
"""
current = context
try: # catch-all for silent variable failures
for bit in self.lookups:
try: # dictionary lookup
current = current[bit]…
# ValueError/IndexError are for numpy.array lookup on
# numpy < 1.9 and 1.9+ respectively
except (TypeError, AttributeError, KeyError, ValueError, IndexError):
try: # attribute lookup
# Don't return class attributes if the class is the context:
if isinstance(current, BaseContext) and getattr(type(current), bit):
Variable | Value |
---|---|
bit | 'url' |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
current | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
self | <Variable: 'event.previewImageResize.url'> |
template_name | 'event.html' |
/srv/webapps/.envs/congress/lib/python3.8/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 | OSError(19, 'No such device') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f387507d130>> |
request | <WSGIRequest: GET '/2018/event/v-programme-foruma/vystavka/'> |
/srv/webapps/.envs/congress/lib/python3.8/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 EventPageView at 0x7f387387ddc0> |
callback_args | () |
callback_kwargs | {'block': 'v-programme-foruma', 'congressYear': '2018', 'event': 'vystavka'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f3873aabbe0>> |
request | <WSGIRequest: GET '/2018/event/v-programme-foruma/vystavka/'> |
resolver | <URLResolver 'config.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=events.views.EventPageView, args=(), kwargs={'congressYear': '2018', 'block': 'v-programme-foruma', 'event': 'vystavka'}, url_name=event, app_names=[], namespaces=[], route=<slug:congressYear>/event/<slug:block>/<slug:event>/) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f387507d130> |
wrapped_callback | <function EventPageView at 0x7f387387ddc0> |
/srv/webapps/.envs/congress/lib/python3.8/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 EventPageView at 0x7f387387ddc0> |
callback_args | () |
callback_kwargs | {'block': 'v-programme-foruma', 'congressYear': '2018', 'event': 'vystavka'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f3873aabbe0>> |
request | <WSGIRequest: GET '/2018/event/v-programme-foruma/vystavka/'> |
resolver | <URLResolver 'config.urls' (None:None) '^/'> |
resolver_match | ResolverMatch(func=events.views.EventPageView, args=(), kwargs={'congressYear': '2018', 'block': 'v-programme-foruma', 'event': 'vystavka'}, url_name=event, app_names=[], namespaces=[], route=<slug:congressYear>/event/<slug:block>/<slug:event>/) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f387507d130> |
wrapped_callback | <function EventPageView at 0x7f387387ddc0> |
/srv/webapps/.envs/congress/lib/python3.8/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"> |
/srv/webapps/.envs/congress/lib/python3.8/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 | {'block': 'v-programme-foruma', 'block_url': 'v-programme-foruma', 'congressYear': '2018', 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'event': <Event: Выставка (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]], 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>} |
self | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
template | <django.template.backends.django.Template object at 0x7f38734d5280> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
request | <WSGIRequest: GET '/2018/event/v-programme-foruma/vystavka/'> |
self | <django.template.backends.django.Template object at 0x7f38734d5280> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <django.template.base.Template object at 0x7f387349fe50> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <django.template.base.Template object at 0x7f387349fe50> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <ExtendsNode: extends "base.html"> |
/srv/webapps/.envs/congress/lib/python3.8/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 0x7f3873555190> |
blocks | {'carousel': <Block Node: carousel. Contents: []>, 'content': <Block Node: content. Contents: [<TextNode: ' '>]>, 'menu': <Block Node: menu. Contents: []>, 'onload': <Block Node: onload. Contents: []>, 'title': <Block Node: title. Contents: []>} |
compiled_parent | <django.template.base.Template object at 0x7f387349f400> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
node | <django.template.defaulttags.LoadNode object at 0x7f38736c7580> |
self | <ExtendsNode: extends "base.html"> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <django.template.base.Template object at 0x7f387349f400> |
/srv/webapps/.envs/congress/lib/python3.8/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' ' </div>\n' ' </li>\n' ' </ul>\n' ' </div>\n' ' </div>\n' ' </nav>\n' ' ') |
bits | ['', '\n' '<!DOCTYPE html>\n' '<html lang="ru">\n' '<head>\n' ' <script async ' 'src="https://www.googletagmanager.com/gtag/js?id=UA-127192849-1"></script>\n' ' <script>\n' ' window.dataLayer = window.dataLayer || [];\n' '\n' ' function gtag() {\n' ' dataLayer.push(arguments);\n' ' }\n' '\n' " gtag('js', new Date());\n" " gtag('config', 'UA-127192849-1');\n" ' </script>\n' ' <meta charset="utf-8">\n' ' <meta name="viewport" content="width=device-width, initial-scale=1, ' 'shrink-to-fit=no">\n' ' <meta http-equiv="x-ua-compatible" content="ie=edge">\n' ' <meta name="theme-color" content="#929FBA">\n' ' <title>', '\n Выставка\n', '</title>\n <link rel="icon" href="', '/static/img/logo.png', '">\n' ' <!-- Font Awesome -->\n' ' <link rel="stylesheet" ' 'href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">\n' ' <!-- Bootstrap core CSS -->\n' ' <link href="', '/static/css/bootstrap.min.css', '" rel="stylesheet">\n' ' <!-- Material Design Bootstrap -->\n' ' <link href="', '/static/css/mdb.min.css', '" rel="stylesheet">\n' ' <!-- Your custom styles (optional) -->\n' ' <link href="', '/static/css/style.css', '" rel="stylesheet">\n' ' <link ' 'href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" ' 'rel="stylesheet">\n' ' <link type="text/css" rel="stylesheet"\n' ' ' 'href="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.11/css/lightgallery.min.css">\n' ' <script type="text/javascript" src="', '/static/js/jquery-3.3.1.min.js', '"></script>\n' ' <script ' 'src="https://cdnjs.cloudflare.com/ajax/libs/lightgallery/1.6.11/js/lightgallery-all.min.js"></script>\n' ' <script ' 'src="https://cdn.jsdelivr.net/picturefill/2.3.1/picturefill.min.js"></script>\n' '</head>\n' '<body id="section_home" onload="', '', '">\n' '<header>\n' ' <nav class="navbar fixed-top navbar-expand-lg navbar-dark ' 'scrolling-navbar">\n' ' <div class="container">\n' ' <a class="navbar-brand" href="/">\n' ' <img src="', '/static/img/logo.png', '">\n' ' </a>\n' ' <button class="navbar-toggler" type="button" ' 'data-toggle="collapse" data-target="#navbarSupportedContent"\n' ' aria-controls="navbarSupportedContent"\n' ' aria-expanded="false" aria-label="Toggle navigation">\n' ' <span class="navbar-toggler-icon"></span>\n' ' </button>\n' ' <div class="collapse navbar-collapse" ' 'id="navbarSupportedContent">\n' ' <ul class="navbar-nav mr-auto">\n' ' ', '\n' ' <li class="nav-item">\n' ' <a class="nav-link" href="/">\n' ' Главная\n' ' </a>\n' ' </li>\n' ' \n' ' <li class="nav-item">\n' ' <a class="nav-link" href="#section_1">\n' ' Описание мероприятия\n' ' </a>\n' ' </li>\n' ' \n' ' \n' ' \n' ' \n' ' </li>\n', '\n' ' </ul>\n' ' <ul class="navbar-nav mr-right">\n' ' <li class="nav-item dropdown">\n' ' <a class="nav-link dropdown-toggle" ' 'id="navbarDropdownMenuLink" data-toggle="dropdown"\n' ' aria-haspopup="true" aria-expanded="false">Год ' 'проведения: ', '2018', '</a>\n' ' <div class="dropdown-menu dropdown-primary" ' 'aria-labelledby="navbarDropdownMenuLink">\n' ' ', '\n' ' <a class="dropdown-item" ' 'href="/2018/">2018</a>\n' ' ', '\n' ' </div>\n' ' </li>\n' ' </ul>\n' ' </div>\n' ' </div>\n' ' </nav>\n' ' '] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
node | <Block Node: carousel. Contents: []> |
self | [<django.template.defaulttags.LoadNode object at 0x7f38736c7580>, <TextNode: '\n<!DOCTYPE html>\n<html la'>, <Block Node: title. Contents: []>, <TextNode: '</title>\n <link rel="i'>, <django.templatetags.static.StaticNode object at 0x7f38736c7190>, <TextNode: '">\n <!-- Font Awesome '>, <django.templatetags.static.StaticNode object at 0x7f387366d370>, <TextNode: '" rel="stylesheet">\n <'>, <django.templatetags.static.StaticNode object at 0x7f3873641fa0>, <TextNode: '" rel="stylesheet">\n <'>, <django.templatetags.static.StaticNode object at 0x7f38735550d0>, <TextNode: '" rel="stylesheet">\n <'>, <django.templatetags.static.StaticNode object at 0x7f3873555640>, <TextNode: '"></script>\n <script s'>, <Block Node: onload. Contents: []>, <TextNode: '">\n<header>\n <nav clas'>, <django.templatetags.static.StaticNode object at 0x7f3873555280>, <TextNode: '">\n </a>\n '>, <Block Node: menu. Contents: []>, <TextNode: '\n </ul>\n '>, <Variable Node: congressYear>, <TextNode: '</a>\n '>, <ForNode: for congressYear in congressYears, tail_len: 5>, <TextNode: '\n '>, <Block Node: carousel. Contents: []>, <TextNode: '\n</header>\n<main>\n '>, <Block Node: content. Contents: [<TextNode: ' '>]>, <TextNode: '\n</main>\n<footer class="p'>, <Variable Node: congressYear>, <TextNode: '\n </div>\n</footer>\n<sc'>, <django.templatetags.static.StaticNode object at 0x7f3873555d90>, <TextNode: '"></script>\n<script type='>, <django.templatetags.static.StaticNode object at 0x7f3873555c40>, <TextNode: '"></script>\n<script type='>, <django.templatetags.static.StaticNode object at 0x7f3873555af0>, <TextNode: '"></script>\n<script src=\''>, <django.templatetags.static.StaticNode object at 0x7f387353ee50>, <TextNode: '?11"></script>\n<script ty'>] |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <Block Node: carousel. Contents: []> |
/srv/webapps/.envs/congress/lib/python3.8/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: carousel. Contents: [<TextNode: '\n <div id="carousel-ex'>, <IfNode>, <TextNode: "'); background-position: ">, <IfNode>, <TextNode: '\n </di'>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7f3873555190> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
push | <Block Node: carousel. Contents: [<TextNode: '\n <div id="carousel-ex'>, <IfNode>, <TextNode: "'); background-position: ">, <IfNode>, <TextNode: '\n </di'>]> |
self | <Block Node: carousel. Contents: []> |
/srv/webapps/.envs/congress/lib/python3.8/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' ' <div id="carousel-example-1z" class="carousel slide carousel-fade" ' 'data-ride="carousel">\n' ' <div class="carousel-inner" role="listbox">\n' ' <div class="carousel-item active">\n' ' <div class="view" style="background-image: url(\'') |
bits | ['\n' ' <div id="carousel-example-1z" class="carousel slide carousel-fade" ' 'data-ride="carousel">\n' ' <div class="carousel-inner" role="listbox">\n' ' <div class="carousel-item active">\n' ' <div class="view" style="background-image: url(\''] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
node | <IfNode> |
self | [<TextNode: '\n <div id="carousel-ex'>, <IfNode>, <TextNode: "'); background-position: ">, <IfNode>, <TextNode: '\n </di'>] |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <IfNode> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/defaulttags.py
in render
match = condition.eval(context)
except VariableDoesNotExist:
match = None
else: # else clause
match = True
if match:
return nodelist.render(context)…
return ''
class LoremNode(Node):
def __init__(self, count, method, common):
Variable | Value |
---|---|
condition | None |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
match | True |
nodelist | [<Variable Node: event.previewImageResize.url>] |
self | <IfNode> |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
node | <Variable Node: event.previewImageResize.url> |
self | [<Variable Node: event.previewImageResize.url>] |
/srv/webapps/.envs/congress/lib/python3.8/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}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <Variable Node: event.previewImageResize.url> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/base.py
in render
self.filter_expression = filter_expression
def __repr__(self):
return "<Variable Node: %s>" % self.filter_expression
def render(self, context):
try:
output = self.filter_expression.resolve(context)…
except UnicodeDecodeError:
# Unicode conversion can fail sometimes for reasons out of our
# control (e.g. exception rendering). In that case, we fail
# quietly.
return ''
return render_value_in_context(output, context)
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <Variable Node: event.previewImageResize.url> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/base.py
in resolve
self.filters = filters
self.var = var_obj
def resolve(self, context, ignore_failures=False):
if isinstance(self.var, Variable):
try:
obj = self.var.resolve(context)…
except VariableDoesNotExist:
if ignore_failures:
obj = None
else:
string_if_invalid = context.template.engine.string_if_invalid
if string_if_invalid:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
ignore_failures | False |
self | <django.template.base.FilterExpression object at 0x7f38735c7af0> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/base.py
in resolve
var)
self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
def resolve(self, context):
"""Resolve this variable against a given context."""
if self.lookups is not None:
# We're dealing with a variable that needs to be resolved
value = self._resolve_lookup(context)…
else:
# We're dealing with a literal, so it's already been "resolved"
value = self.literal
if self.translate:
is_safe = isinstance(value, SafeData)
msgid = value.replace('%', '%%')
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
self | <Variable: 'event.previewImageResize.url'> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/template/base.py
in _resolve_lookup
# ValueError/IndexError are for numpy.array lookup on
# numpy < 1.9 and 1.9+ respectively
except (TypeError, AttributeError, KeyError, ValueError, IndexError):
try: # attribute lookup
# Don't return class attributes if the class is the context:
if isinstance(current, BaseContext) and getattr(type(current), bit):
raise AttributeError
current = getattr(current, bit)…
except (TypeError, AttributeError):
# Reraise if the exception was raised by a @property
if not isinstance(current, BaseContext) and bit in dir(current):
raise
try: # list-index lookup
current = current[int(bit)]
Variable | Value |
---|---|
bit | 'url' |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'congressYear': '2018', 'block': 'v-programme-foruma', 'event': <Event: Выставка (Активность: True)>, 'view': <events.views.EventPageView object at 0x7f3873528af0>, 'congressYears': <QuerySet [<CongressYear: 2018>]>, 'registration': <Block: Регистрация на мероприятия (Активность: True)>, 'block_url': 'v-programme-foruma', 'preEvent': <Event: XII КОНКУРС ПРОЕКТОВ МОЛОДЫХ УЧЕНЫХ (Активность: True)>, 'nextEvent': <Event: Всероссийское совещание кафедр «Общей химической технологии» (Активность: True)>, 'personsShow': [[]]}] |
current | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
self | <Variable: 'event.previewImageResize.url'> |
template_name | 'event.html' |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/__init__.py
in url
@property
def path(self):
return self._storage_attr('path')
@property
def url(self):
return self._storage_attr('url')…
def generate(self, force=False):
"""
Generate the file. If ``force`` is ``True``, the file will be generated
whether the file already exists or not.
Variable | Value |
---|---|
self | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/__init__.py
in _storage_attr
# require the file to exist; they do not need its contents to work. This
# distinction gives the user the flexibility to create a cache file
# strategy that assumes the existence of a file, but can still make the file
# available when its contents are required.
def _storage_attr(self, attr):
if getattr(self, '_file', None) is None:
existence_required.send(sender=self, file=self)…
fn = getattr(self.storage, attr)
return fn(self.name)
@property
def path(self):
return self._storage_attr('path')
Variable | Value |
---|---|
attr | 'url' |
self | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/dispatch/dispatcher.py
in send
Named arguments which will be passed to receivers.
Return a list of tuple pairs [(receiver, response), ... ].
"""
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
return []
return […
(receiver, receiver(signal=self, sender=sender, **named))
for receiver in self._live_receivers(sender)
]
def send_robust(self, sender, **named):
"""
Variable | Value |
---|---|
named | {'file': <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg>} |
self | <django.dispatch.dispatcher.Signal object at 0x7f3876f0d430> |
sender | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/dispatch/dispatcher.py
in <listcomp>
Return a list of tuple pairs [(receiver, response), ... ].
"""
if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
return []
return [
(receiver, receiver(signal=self, sender=sender, **named))…
for receiver in self._live_receivers(sender)
]
def send_robust(self, sender, **named):
"""
Send signal from sender to all connected receivers catching errors.
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f387353ee20> |
named | {'file': <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg>} |
receiver | <bound method GeneratorRegistry.existence_required_receiver of <imagekit.registry.GeneratorRegistry object at 0x7f3876f0d0d0>> |
self | <django.dispatch.dispatcher.Signal object at 0x7f3876f0d430> |
sender | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/registry.py
in existence_required_receiver
autodiscover()
return self._generators.keys()
def content_required_receiver(self, sender, file, **kwargs):
self._receive(file, 'on_content_required')
def existence_required_receiver(self, sender, file, **kwargs):
self._receive(file, 'on_existence_required')…
def _receive(self, file, callback):
generator = file.generator
# FIXME: I guess this means you can't register functions?
if generator.__class__ in self._generators.values():
Variable | Value |
---|---|
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
kwargs | {'signal': <django.dispatch.dispatcher.Signal object at 0x7f3876f0d430>} |
self | <imagekit.registry.GeneratorRegistry object at 0x7f3876f0d0d0> |
sender | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/registry.py
in _receive
def _receive(self, file, callback):
generator = file.generator
# FIXME: I guess this means you can't register functions?
if generator.__class__ in self._generators.values():
# Only invoke the strategy method for registered generators.
call_strategy_method(file, callback)…
class SourceGroupRegistry(object):
"""
The source group registry is responsible for listening to source_* signals
on source groups, and relaying them to the image generated file strategies
Variable | Value |
---|---|
callback | 'on_existence_required' |
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
generator | <imagekit.specs.DynamicSpec object at 0x7f387353e070> |
self | <imagekit.registry.GeneratorRegistry object at 0x7f3876f0d0d0> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/utils.py
in call_strategy_method
return f
def call_strategy_method(file, method_name):
strategy = getattr(file, 'cachefile_strategy', None)
fn = getattr(strategy, method_name, None)
if fn is not None:
fn(file)…
def get_cache():
try:
from django.core.cache import caches
except ImportError:
Variable | Value |
---|---|
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
fn | <bound method JustInTime.on_existence_required of <imagekit.cachefiles.strategies.JustInTime object at 0x7f38738d0fa0>> |
method_name | 'on_existence_required' |
strategy | <imagekit.cachefiles.strategies.JustInTime object at 0x7f38738d0fa0> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/strategies.py
in on_existence_required
class JustInTime(object):
"""
A strategy that ensures the file exists right before it's needed.
"""
def on_existence_required(self, file):
file.generate()…
def on_content_required(self, file):
file.generate()
class Optimistic(object):
Variable | Value |
---|---|
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
self | <imagekit.cachefiles.strategies.JustInTime object at 0x7f38738d0fa0> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/__init__.py
in generate
def generate(self, force=False):
"""
Generate the file. If ``force`` is ``True``, the file will be generated
whether the file already exists or not.
"""
if force or getattr(self, '_file', None) is None:
self.cachefile_backend.generate(self, force)…
def _generate(self):
# Generate the file
content = generate(self.generator)
actual_name = self.storage.save(self.name, content)
Variable | Value |
---|---|
force | False |
self | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/backends.py
in generate
"""
The most basic file backend. The storage is consulted to see if the file
exists. Files are generated synchronously.
"""
def generate(self, file, force=False):
self.generate_now(file, force=force)…
def _exists(self, file):
return bool(getattr(file, '_file', None)
or file.storage.exists(file.name))
Variable | Value |
---|---|
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
force | False |
self | <imagekit.cachefiles.backends.Simple object at 0x7f38738d0e20> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/backends.py
in generate_now
def generate(self, file, force=False):
raise NotImplementedError
def generate_now(self, file, force=False):
if force or self.get_state(file) not in (CacheFileState.GENERATING, CacheFileState.EXISTS):
self.set_state(file, CacheFileState.GENERATING)
file._generate()…
self.set_state(file, CacheFileState.EXISTS)
file.close()
class Simple(CachedFileBackend):
"""
Variable | Value |
---|---|
file | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
force | False |
self | <imagekit.cachefiles.backends.Simple object at 0x7f38738d0e20> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/cachefiles/__init__.py
in _generate
"""
if force or getattr(self, '_file', None) is None:
self.cachefile_backend.generate(self, force)
def _generate(self):
# Generate the file
content = generate(self.generator)…
actual_name = self.storage.save(self.name, content)
# We're going to reuse the generated file, so we need to reset the pointer.
content.seek(0)
Variable | Value |
---|---|
self | <ImageCacheFile: CACHE/images/img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG/f8a0f58b0622e180def4821d4b97b2ba.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/utils.py
in generate
def generate(generator):
"""
Calls the ``generate()`` method of a generator instance, and then wraps the
result in a Django File object so Django knows how to save it.
"""
content = generator.generate()…
f = File(content)
# The size of the File must be known or Django will try to open a file
# without a name and raise an Exception.
f.size = len(content.read())
# After getting the size reset the file pointer for future reads.
content.seek(0)
Variable | Value |
---|---|
generator | <imagekit.specs.DynamicSpec object at 0x7f387353e070> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/imagekit/specs/__init__.py
in generate
# TODO: Move into a generator base class
# TODO: Factor out a generate_image function so you can create a generator and only override the PIL.Image creating part. (The tricky part is how to deal with original_format since generator base class won't have one.)
closed = self.source.closed
if closed:
# Django file object should know how to reopen itself if it was closed
# https://code.djangoproject.com/ticket/13750
self.source.open()…
try:
img = open_image(self.source)
new_image = process_image(img,
processors=self.processors,
format=self.format,
Variable | Value |
---|---|
closed | True |
self | <imagekit.specs.DynamicSpec object at 0x7f387353e070> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/db/models/fields/files.py
in open
if not self._committed:
return self.file.size
return self.storage.size(self.name)
def open(self, mode='rb'):
self._require_file()
if getattr(self, '_file', None) is None:
self.file = self.storage.open(self.name, mode)…
else:
self.file.open(mode)
return self
# open() doesn't alter the file's contents, but it does reset the pointer
open.alters_data = True
Variable | Value |
---|---|
mode | 'rb' |
self | <ImageFieldFile: img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG.jpg> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/core/files/storage.py
in open
"""
# The following methods represent a public interface to private methods.
# These shouldn't be overridden by subclasses unless absolutely necessary.
def open(self, name, mode='rb'):
"""Retrieve the specified file from storage."""
return self._open(name, mode)…
def save(self, name, content, max_length=None):
"""
Save new content to the file specified by name. The content should be
a proper File object or any Python file-like object, ready to be read
from the beginning.
Variable | Value |
---|---|
mode | 'rb' |
name | 'img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG.jpg' |
self | <django.core.files.storage.FileSystemStorage object at 0x7f38738dc700> |
/srv/webapps/.envs/congress/lib/python3.8/site-packages/django/core/files/storage.py
in _open
return self._value_or_setting(self._file_permissions_mode, settings.FILE_UPLOAD_PERMISSIONS)
@cached_property
def directory_permissions_mode(self):
return self._value_or_setting(self._directory_permissions_mode, settings.FILE_UPLOAD_DIRECTORY_PERMISSIONS)
def _open(self, name, mode='rb'):
return File(open(self.path(name), mode))…
def _save(self, name, content):
full_path = self.path(name)
# Create any intermediate directories that do not exist.
directory = os.path.dirname(full_path)
Variable | Value |
---|---|
mode | 'rb' |
name | 'img/event/программа_мероприятия_Монтажная_область_1_копия_11_p3JYXfG.jpg' |
self | <django.core.files.storage.FileSystemStorage object at 0x7f38738dc700> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
HTTP_ACCEPT | '*/*' |
HTTP_ACCEPT_ENCODING | 'gzip, br' |
HTTP_CDN_LOOP | 'cloudflare' |
HTTP_CF_CONNECTING_IP | '35.168.18.209' |
HTTP_CF_IPCOUNTRY | 'US' |
HTTP_CF_RAY | '86bf86884d2c9c84-IAD' |
HTTP_CF_VISITOR | '{"scheme":"https"}' |
HTTP_CONNECTION | 'close' |
HTTP_HOST | 'congress.muctr.ru' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '35.168.18.209, 172.70.135.101, 10.11.12.11, 10.16.11.12' |
HTTP_X_FORWARDED_PROTO | 'https' |
HTTP_X_FRAME_OPTIONS | 'SAMEORIGIN' |
HTTP_X_REAL_IP | '10.16.11.12' |
PATH_INFO | '/2018/event/v-programme-foruma/vystavka/' |
QUERY_STRING | '' |
RAW_URI | '/2018/event/v-programme-foruma/vystavka/' |
REMOTE_ADDR | '' |
REQUEST_METHOD | 'GET' |
SCRIPT_NAME | '' |
SERVER_NAME | 'congress.muctr.ru' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'gunicorn/20.0.4' |
gunicorn.socket | <socket.socket fd=3, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0, laddr=/srv/webapps/.envs/congress/run/gunicorn.sock> |
wsgi.errors | <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f3873592460> |
wsgi.file_wrapper | '' |
wsgi.input | <gunicorn.http.body.Body object at 0x7f387343b550> |
wsgi.input_terminated | True |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
config.settings.production
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['congress.muctr.ru'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | '/srv/webapps/congress/congress' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CKEDITOR_CONFIGS | {'default': {'allowedContent': True, 'contentsCss': ['/static/css/style.css', '/static/css/mdb.css', '/static/css/bootstrap.css', 'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'], 'fillEmptyBlocks': True, 'height': 500, 'toolbar': 'full', 'width': 1200}} |
CKEDITOR_UPLOAD_PATH | '' |
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 | True |
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.mysql', 'HOST': '192.168.7.204', 'NAME': 'congress', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'congress'}} |
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'] |
DB_HOST | '192.168.7.204' |
DB_NAME | 'congress' |
DB_PASS | '********************' |
DB_USER | 'congress' |
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 | [] |
DOMAIN | 'congress.muctr.ru' |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.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 | 420 |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | [] |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
IMAGEKIT_CACHEFILE_DIR | 'CACHE/images' |
IMAGEKIT_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.hash' |
IMAGEKIT_CACHE_BACKEND | 'default' |
IMAGEKIT_CACHE_PREFIX | 'imagekit:' |
IMAGEKIT_CACHE_TIMEOUT | 300 |
IMAGEKIT_DEFAULT_CACHEFILE_BACKEND | 'imagekit.cachefiles.backends.Simple' |
IMAGEKIT_DEFAULT_CACHEFILE_STRATEGY | 'imagekit.cachefiles.strategies.JustInTime' |
IMAGEKIT_DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
IMAGEKIT_SPEC_CACHEFILE_NAMER | 'imagekit.cachefiles.namers.source_name_as_path' |
IMAGEKIT_USE_MEMCACHED_SAFE_CACHE_KEY | '********************' |
INSTALLED_APPS | ['django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'import_export', 'imagekit', 'adminsortable2', 'ckeditor', 'ckeditor_uploader', 'rangefilter', 'core', 'registration', 'events', 'photogallry'] |
INTERNAL_IPS | [] |
LANGUAGES | [('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')] |
LANGUAGES_BIDI | ['he', 'ar', 'fa', 'ur'] |
LANGUAGE_CODE | 'ru-Ru' |
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 | '/srv/webapps/congress/staticfiles/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['django.middleware.security.SecurityMiddleware', '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'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'config.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 | ('HTTP_X_FORWARDED_PROTO', 'https') |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | True |
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 | True |
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 | 'config.settings.production' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
STATICFILES_DIRS | ['/srv/webapps/congress/congress/static'] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/srv/webapps/congress/staticfiles/static' |
STATIC_URL | '/static/' |
TEMPLATES | [{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages']}}] |
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 | 'Europe/Moscow' |
USE_I18N | True |
USE_L10N | True |
USE_THOUSAND_SEPARATOR | False |
USE_TZ | False |
USE_X_FORWARDED_HOST | False |
USE_X_FORWARDED_PORT | False |
WSGI_APPLICATION | 'config.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.