'Bootstrap4LinkPlugin'
Request Method: | GET |
---|---|
Request URL: | http://localhost:8007/en/resources/tntit/pcn/ |
Django Version: | 4.2.7 |
Exception Type: | KeyError |
Exception Value: | 'Bootstrap4LinkPlugin' |
Exception Location: | /home/xen/.local/lib/python3.10/site-packages/cms/plugin_pool.py, line 186, in get_plugin |
Raised during: | cms.views.details |
Python Executable: | /usr/bin/python3 |
Python Version: | 3.10.12 |
Python Path: | ['/home/xen/2022/xen_tnidb', '/usr/lib/python310.zip', '/usr/lib/python3.10', '/usr/lib/python3.10/lib-dynload', '/home/xen/.local/lib/python3.10/site-packages', '/usr/local/lib/python3.10/dist-packages', '/usr/lib/python3/dist-packages'] |
Server time: | Fri, 29 Mar 2024 11:34:50 +0530 |
In template /home/xen/2022/xen_tnidb/xen_tnidb/templates/base.html
, error at line 247
237 | </div> |
---|---|
238 | <div class="swiper-button-next" id="main-slider__swiper-button-prev"> |
239 | <span class="icon-right-arrow-2"></span> |
240 | </div> |
241 | </div> |
242 | </div> |
243 | </section> |
244 | <!--Main Slider End--> |
245 | {% endif %} |
246 | {% block content %} |
247 | {% placeholder "feature" %} |
248 | {% placeholder "content" %} |
249 | {% placeholder "splashbox" %} |
250 | {% endblock content %} |
251 | |
252 | |
253 | {% if current_page.is_home == True %} |
254 | <section class="blog-two"> |
255 | <div class="container"> |
256 | <div class="row"> |
257 |
/home/xen/.local/lib/python3.10/site-packages/django/core/handlers/exception.py
, line 55, in inner
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request)…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | KeyError('Bootstrap4LinkPlugin') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f31edb63be0>> |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
/home/xen/.local/lib/python3.10/site-packages/django/core/handlers/base.py
, line 220, in _get_response
self.check_response(
response,
middleware_method,
name="%s.process_template_response"
% (middleware_method.__self__.__class__.__name__,),
)
try:
response = response.render()…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
return response
Variable | Value |
---|---|
callback | <function details at 0x7f31ede4d120> |
callback_args | () |
callback_kwargs | {'slug': 'resources/tntit/pcn'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f31edb63be0> |
wrapped_callback | <function details at 0x7f31ede4d120> |
/home/xen/.local/lib/python3.10/site-packages/django/template/response.py
, line 114, 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"> |
/home/xen/.local/lib/python3.10/site-packages/django/template/response.py
, line 92, 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)
return template.render(context, self._request)…
def add_post_render_callback(self, callback):
"""Add a new post-rendering callback.
If the response has already been rendered,
invoke the callback immediately.
Variable | Value |
---|---|
context | {'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'lang': 'en'} |
self | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
template | <django.template.backends.django.Template object at 0x7f31ece5b280> |
/home/xen/.local/lib/python3.10/site-packages/django/template/backends/django.py
, line 61, in render
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}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
self | <django.template.backends.django.Template object at 0x7f31ece5b280> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 175, 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}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Template template_string="{% load cms_tags men..."> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 167, in _render
def __repr__(self):
return '<%s template_string="%s...">' % (
self.__class__.__qualname__,
self.source[:20].replace("\n", ""),
)
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}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Template template_string="{% load cms_tags men..."> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | [<django.template.defaulttags.LoadNode object at 0x7f31ed8b9cf0>, <TextNode: '\n'>, <django.template.defaulttags.LoadNode object at 0x7f31ed8bace0>, <TextNode: '\n'>, <django.template.defaulttags.LoadNode object at 0x7f31ed8b8220>, <TextNode: '\n<!DOCTYPE html>\n<html la'>, <Variable Node: LANGUAGE_CODE>, <TextNode: '">\n\n<head>\n <meta char'>, <Block Node: title. Contents: [<Tag: page_attribute>]>, <TextNode: '</title>\n \n <!-- fa'>, <Tag: render_block>] |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f31ecf2c460> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
node | <Tag: render_block> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 966, 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:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Tag: render_block> |
/home/xen/.local/lib/python3.10/site-packages/classytags/core.py
, line 142, in render
"""
INTERNAL method to prepare rendering
Usually you should not override this method, but rather use render_tag.
"""
items = self.kwargs.items()
kwargs = {key: value.resolve(context) for key, value in items}
kwargs.update(self.blocks)
return str(self.render_tag(context, **kwargs))…
def render_tag(self, context, **kwargs):
"""
The method you should override in your custom tags
"""
raise NotImplementedError
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
items | dict_items([('name', <classytags.values.StringValue object at 0x7f31ed8bb9a0>), ('postprocessor', <TemplateConstant: None>)]) |
kwargs | {'name': 'css', 'nodelist': [<TextNode: '\n\n \n\n\n\n\n</head>\n\n<body'>, <Tag: cms_toolbar>], 'postprocessor': None} |
self | <Tag: render_block> |
/home/xen/.local/lib/python3.10/site-packages/sekizai/templatetags/sekizai_tags.py
, line 87, in render_tag
Argument('postprocessor', required=False, default=None, resolve=False),
parser_class=SekizaiParser,
)
def render_tag(self, context, name, postprocessor, nodelist):
if not validate_context(context):
return nodelist.render(context)
rendered_contents = nodelist.render(context)…
varname = get_varname()
data = '\n'.join(context[varname][name])
if postprocessor:
func = import_processor(postprocessor)
data = func(context, data, name)
return f'{data}\n{rendered_contents}'
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
name | 'css' |
nodelist | [<TextNode: '\n\n \n\n\n\n\n</head>\n\n<body'>, <Tag: cms_toolbar>] |
postprocessor | None |
self | <Tag: render_block> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | [<TextNode: '\n\n \n\n\n\n\n</head>\n\n<body'>, <Tag: cms_toolbar>] |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f31eceeb520> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
node | <Tag: cms_toolbar> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 966, 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:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Tag: cms_toolbar> |
/home/xen/.local/lib/python3.10/site-packages/classytags/core.py
, line 142, in render
"""
INTERNAL method to prepare rendering
Usually you should not override this method, but rather use render_tag.
"""
items = self.kwargs.items()
kwargs = {key: value.resolve(context) for key, value in items}
kwargs.update(self.blocks)
return str(self.render_tag(context, **kwargs))…
def render_tag(self, context, **kwargs):
"""
The method you should override in your custom tags
"""
raise NotImplementedError
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
items | dict_items([('name', <TemplateConstant: None>)]) |
kwargs | {'name': None, 'nodelist': [<TextNode: '\n \n <!-- <div class'>, <URLNode view_name=''login'' args=[] kwargs={} as=None>, <TextNode: '">Login/Signup</a></p>\n '>, <django.template.defaulttags.AutoEscapeControlNode object at 0x7f31ed7d5300>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]>, <TextNode: '\n\n\n '>, <IfNode>, <TextNode: '\n <!--Start Footer'>, <Tag: render_block>]} |
self | <Tag: cms_toolbar> |
/home/xen/.local/lib/python3.10/site-packages/cms/templatetags/cms_tags.py
, line 433, in render_tag
return nodelist.render(context)
toolbar = get_toolbar_from_request(request)
if toolbar and toolbar.show_toolbar:
toolbar.init_toolbar(request)
return toolbar.render_with_structure(context, nodelist)
return nodelist.render(context)…
class CMSEditableObject(InclusionTag):
"""
Templatetag that links a content extracted from a generic django model
to the model admin changeform.
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
name | None |
nodelist | [<TextNode: '\n \n <!-- <div class'>, <URLNode view_name=''login'' args=[] kwargs={} as=None>, <TextNode: '">Login/Signup</a></p>\n '>, <django.template.defaulttags.AutoEscapeControlNode object at 0x7f31ed7d5300>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]>, <TextNode: '\n\n\n '>, <IfNode>, <TextNode: '\n <!--Start Footer'>, <Tag: render_block>] |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
self | <Tag: cms_toolbar> |
toolbar | <cms.toolbar.toolbar.CMSToolbar object at 0x7f31eceb2170> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | [<TextNode: '\n \n <!-- <div class'>, <URLNode view_name=''login'' args=[] kwargs={} as=None>, <TextNode: '">Login/Signup</a></p>\n '>, <django.template.defaulttags.AutoEscapeControlNode object at 0x7f31ed7d5300>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n '>, <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]>, <TextNode: '\n\n\n '>, <IfNode>, <TextNode: '\n <!--Start Footer'>, <Tag: render_block>] |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f31ecee9030> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
node | <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 966, 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:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]> |
/home/xen/.local/lib/python3.10/site-packages/django/template/loader_tags.py
, line 54, in render
return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
def render(self, context):
block_context = context.render_context.get(BLOCK_CONTEXT_KEY)
with context.push():
if block_context is None:
context["block"] = self
result = self.nodelist.render(context)…
else:
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)
Variable | Value |
---|---|
block_context | None |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Block Node: content. Contents: [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>]> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in render
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | [<TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>, <Tag: placeholder>, <TextNode: '\n '>] |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 1005, in <listcomp>
class NodeList(list):
# Set to True the first time a non-TextNode is inserted by
# extend_nodelist().
contains_nontext = False
def render(self, context):
return SafeString("".join([node.render_annotated(context) for node in self]))…
def get_nodes_by_type(self, nodetype):
"Return a list of all nodes of the given type"
nodes = []
for node in self:
nodes.extend(node.get_nodes_by_type(nodetype))
Variable | Value |
---|---|
.0 | <list_iterator object at 0x7f31eceeaaa0> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
node | <Tag: placeholder> |
/home/xen/.local/lib/python3.10/site-packages/django/template/base.py
, line 966, 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:
# Store the actual node that caused the exception.
if not hasattr(e, "_culprit_node"):
e._culprit_node = self
if (
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
self | <Tag: placeholder> |
/home/xen/.local/lib/python3.10/site-packages/classytags/core.py
, line 142, in render
"""
INTERNAL method to prepare rendering
Usually you should not override this method, but rather use render_tag.
"""
items = self.kwargs.items()
kwargs = {key: value.resolve(context) for key, value in items}
kwargs.update(self.blocks)
return str(self.render_tag(context, **kwargs))…
def render_tag(self, context, **kwargs):
"""
The method you should override in your custom tags
"""
raise NotImplementedError
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
items | dict_items([('name', <classytags.values.StringValue object at 0x7f31ed7d52d0>), ('extra_bits', <TemplateConstant: []>)]) |
kwargs | {'extra_bits': [], 'name': 'feature'} |
self | <Tag: placeholder> |
/home/xen/.local/lib/python3.10/site-packages/cms/templatetags/cms_tags.py
, line 294, in render_tag
validate_placeholder_name(name)
toolbar = get_toolbar_from_request(request)
renderer = toolbar.get_content_renderer()
inherit = 'inherit' in extra_bits
try:
content = renderer.render_page_placeholder(…
slot=name,
context=context,
inherit=inherit,
nodelist=nodelist,
)
except PlaceholderNotFound:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
extra_bits | [] |
inherit | False |
name | 'feature' |
nodelist | None |
renderer | <cms.plugin_rendering.ContentRenderer object at 0x7f31ec1f3100> |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
self | <Tag: placeholder> |
toolbar | <cms.toolbar.toolbar.CMSToolbar object at 0x7f31eceb2170> |
/home/xen/.local/lib/python3.10/site-packages/cms/plugin_rendering.py
, line 325, in render_page_placeholder
current_page = page or self.current_page
placeholder_cache = self._placeholders_by_page_cache
if current_page.pk not in placeholder_cache:
# Instead of loading plugins for this one placeholder
# try and load them for all placeholders on the page.
self._preload_placeholders_for_page(current_page)…
try:
placeholder = placeholder_cache[current_page.pk][slot]
except KeyError:
content = ''
placeholder = None
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'lang': 'en', 'current_page': <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0>, 'has_change_permissions': False, 'has_view_permissions': True, 'children': [<Navigation Node: Home>, <Navigation Node: About Us>, <Navigation Node: Projects>, <Navigation Node: Notifications>, <Navigation Node: Resources>, <Navigation Node: Submission Forms>, <Navigation Node: CCP>, <Navigation Node: Contact Us>], 'template': 'nav-menu.html', 'from_level': 0, 'to_level': 100, 'extra_inactive': 100, 'extra_active': 100, 'namespace': None}] |
current_page | <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0> |
editable | True |
inherit | False |
nodelist | None |
page | None |
placeholder_cache | {} |
self | <cms.plugin_rendering.ContentRenderer object at 0x7f31ec1f3100> |
slot | 'feature' |
/home/xen/.local/lib/python3.10/site-packages/cms/plugin_rendering.py
, line 520, in _preload_placeholders_for_page
]
else:
# cache is disabled, prefetch plugins for all
# placeholders in the page.
placeholders_to_fetch = placeholders
if placeholders_to_fetch:
assign_plugins(…
request=self.request,
placeholders=placeholders_to_fetch,
template=page.get_template(),
lang=self.request_language,
is_fallback=inherit,
)
Variable | Value |
---|---|
_cached_content | <bound method ContentRenderer._get_cached_placeholder_content of <cms.plugin_rendering.ContentRenderer object at 0x7f31ec1f3100>> |
assign_plugins | <function assign_plugins at 0x7f31fb9475b0> |
inherit | False |
page | <cms.models.pagemodel.Page id=98 is_draft=False object at 0x7f31ece59ae0> |
placeholders | odict_values([<cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>]) |
placeholders_to_fetch | [<cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>] |
self | <cms.plugin_rendering.ContentRenderer object at 0x7f31ec1f3100> |
slots | None |
slots_w_inheritance | [] |
/home/xen/.local/lib/python3.10/site-packages/cms/utils/plugins.py
, line 74, in assign_plugins
non_fallback_phs = [ph for ph in placeholders if ph.pk not in fallbacks]
# If no plugin is present in non fallback placeholders, create default plugins if enabled)
if not plugins:
plugins = create_default_plugins(request, non_fallback_phs, template, lang)
plugins = downcast_plugins(plugins, non_fallback_phs, request=request)
# split the plugins up by placeholder
# Plugins should still be sorted by placeholder
plugin_groups = {key: list(plugins) for key, plugins in groupby(plugins, attrgetter('placeholder_id'))}…
all_plugins_groups = plugin_groups.copy()
for group in plugin_groups:
plugin_groups[group] = build_plugin_tree(plugin_groups[group])
groups = fallbacks.copy()
groups.update(plugin_groups)
for placeholder in placeholders:
Variable | Value |
---|---|
disjoint_placeholders | <generator object assign_plugins.<locals>.<genexpr> at 0x7f31ed9461f0> |
fallback_language | 'ta' |
fallback_plugins | [] |
fallbacks | defaultdict(<class 'list'>, {}) |
is_fallback | False |
lang | 'en' |
non_fallback_phs | [<cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>] |
placeholder | <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80> |
placeholders | (<cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>) |
plugins | <generator object downcast_plugins at 0x7f31ec44fc30> |
qs | <MP_NodeQuerySet [<cms.models.pluginmodel.CMSPlugin id=16393 plugin_type='TextPlugin' object at 0x7f31ec1f1210>, <cms.models.pluginmodel.CMSPlugin id=16394 plugin_type='StylePlugin' object at 0x7f31ec1f1f00>, <cms.models.pluginmodel.CMSPlugin id=16395 plugin_type='StylePlugin' object at 0x7f31ec1f37f0>, <cms.models.pluginmodel.CMSPlugin id=16396 plugin_type='StylePlugin' object at 0x7f31ec1f36a0>, <cms.models.pluginmodel.CMSPlugin id=16397 plugin_type='StylePlugin' object at 0x7f31ec1f0fa0>, <cms.models.pluginmodel.CMSPlugin id=16398 plugin_type='TextPlugin' object at 0x7f31ec1f3970>, <cms.models.pluginmodel.CMSPlugin id=16399 plugin_type='StylePlugin' object at 0x7f31ec3f56f0>, <cms.models.pluginmodel.CMSPlugin id=16400 plugin_type='TextPlugin' object at 0x7f31ec3f6170>, <cms.models.pluginmodel.CMSPlugin id=16401 plugin_type='Bootstrap4LinkPlugin' object at 0x7f31ec3f5a20>]> |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
template | 'base.html' |
/home/xen/.local/lib/python3.10/site-packages/cms/utils/plugins.py
, line 74, in <dictcomp>
non_fallback_phs = [ph for ph in placeholders if ph.pk not in fallbacks]
# If no plugin is present in non fallback placeholders, create default plugins if enabled)
if not plugins:
plugins = create_default_plugins(request, non_fallback_phs, template, lang)
plugins = downcast_plugins(plugins, non_fallback_phs, request=request)
# split the plugins up by placeholder
# Plugins should still be sorted by placeholder
plugin_groups = {key: list(plugins) for key, plugins in groupby(plugins, attrgetter('placeholder_id'))}…
all_plugins_groups = plugin_groups.copy()
for group in plugin_groups:
plugin_groups[group] = build_plugin_tree(plugin_groups[group])
groups = fallbacks.copy()
groups.update(plugin_groups)
for placeholder in placeholders:
Variable | Value |
---|---|
.0 | <itertools.groupby object at 0x7f31ec1c02c0> |
/home/xen/.local/lib/python3.10/site-packages/cms/utils/plugins.py
, line 275, in downcast_plugins
plugin_ids.append(plugin.pk)
plugin_types_map[plugin.plugin_type].append(plugin.pk)
placeholders = placeholders or []
placeholders_by_id = {placeholder.pk: placeholder for placeholder in placeholders}
for plugin_type, pks in plugin_types_map.items():
cls = plugin_pool.get_plugin(plugin_type)…
# get all the plugins of type cls.model
plugin_qs = cls.get_render_queryset().filter(pk__in=pks)
if select_placeholder:
plugin_qs = plugin_qs.select_related('placeholder')
Variable | Value |
---|---|
cls | <class 'djangocms_style.cms_plugins.StylePlugin'> |
instance | <djangocms_style.models.Style id=16399 plugin_type='StylePlugin' object at 0x7f31ec1f0940> |
pks | [16401] |
placeholder | <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00> |
placeholders | [<cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>] |
placeholders_by_id | {318: <cms.models.placeholdermodel.Placeholder id=318 slot='feature' object at 0x7f31ec1f2b60>, 319: <cms.models.placeholdermodel.Placeholder id=319 slot='content' object at 0x7f31ec1f3a00>, 320: <cms.models.placeholdermodel.Placeholder id=320 slot='splashbox' object at 0x7f31ec1f3e80>} |
plugin | <cms.models.pluginmodel.CMSPlugin id=16401 plugin_type='Bootstrap4LinkPlugin' object at 0x7f31ec1f2650> |
plugin_ids | [16393, 16394, 16395, 16396, 16397, 16398, 16399, 16400, 16401] |
plugin_lookup | {16393: <djangocms_text_ckeditor.models.Text id=16393 plugin_type='TextPlugin' object at 0x7f31ec1f2260>, 16394: <djangocms_style.models.Style id=16394 plugin_type='StylePlugin' object at 0x7f31ec1f1f90>, 16395: <djangocms_style.models.Style id=16395 plugin_type='StylePlugin' object at 0x7f31ec1f1600>, 16396: <djangocms_style.models.Style id=16396 plugin_type='StylePlugin' object at 0x7f31ec1f3820>, 16397: <djangocms_style.models.Style id=16397 plugin_type='StylePlugin' object at 0x7f31ec1f2b90>, 16398: <djangocms_text_ckeditor.models.Text id=16398 plugin_type='TextPlugin' object at 0x7f31ec1f18a0>, 16399: <djangocms_style.models.Style id=16399 plugin_type='StylePlugin' object at 0x7f31ec1f0940>, 16400: <djangocms_text_ckeditor.models.Text id=16400 plugin_type='TextPlugin' object at 0x7f31ec1f0820>} |
plugin_qs | <MP_NodeQuerySet [<djangocms_style.models.Style id=16394 plugin_type='StylePlugin' object at 0x7f31ec3f5060>, <djangocms_style.models.Style id=16395 plugin_type='StylePlugin' object at 0x7f31ec3f5d50>, <djangocms_style.models.Style id=16396 plugin_type='StylePlugin' object at 0x7f31ecc8d7e0>, <djangocms_style.models.Style id=16397 plugin_type='StylePlugin' object at 0x7f31ecc8dd80>, <djangocms_style.models.Style id=16399 plugin_type='StylePlugin' object at 0x7f31ecc8ff40>]> |
plugin_type | 'Bootstrap4LinkPlugin' |
plugin_types_map | defaultdict(<class 'list'>, {'Bootstrap4LinkPlugin': [16401], 'StylePlugin': [16394, 16395, 16396, 16397, 16399], 'TextPlugin': [16393, 16398, 16400]}) |
plugins | [<cms.models.pluginmodel.CMSPlugin id=16393 plugin_type='TextPlugin' object at 0x7f31ece48760>, <cms.models.pluginmodel.CMSPlugin id=16394 plugin_type='StylePlugin' object at 0x7f31ece49a50>, <cms.models.pluginmodel.CMSPlugin id=16395 plugin_type='StylePlugin' object at 0x7f31ec1f1ea0>, <cms.models.pluginmodel.CMSPlugin id=16396 plugin_type='StylePlugin' object at 0x7f31ec1f1540>, <cms.models.pluginmodel.CMSPlugin id=16397 plugin_type='StylePlugin' object at 0x7f31ec1f0ac0>, <cms.models.pluginmodel.CMSPlugin id=16398 plugin_type='TextPlugin' object at 0x7f31ec1f31f0>, <cms.models.pluginmodel.CMSPlugin id=16399 plugin_type='StylePlugin' object at 0x7f31ec1f1360>, <cms.models.pluginmodel.CMSPlugin id=16400 plugin_type='TextPlugin' object at 0x7f31ec1f1ba0>, <cms.models.pluginmodel.CMSPlugin id=16401 plugin_type='Bootstrap4LinkPlugin' object at 0x7f31ec1f2650>] |
request | <WSGIRequest: GET '/en/resources/tntit/pcn/'> |
select_placeholder | False |
/home/xen/.local/lib/python3.10/site-packages/cms/plugin_pool.py
, line 186, in get_plugin
key=attrgetter('module', 'name'))
def get_plugin(self, name):
"""
Retrieve a plugin from the cache.
"""
self.discover_plugins()
return self.plugins[name]…
def get_patterns(self):
self.discover_plugins()
# We want untranslated name of the plugin for its slug so we deactivate translation
lang = get_language()
Variable | Value |
---|---|
name | 'Bootstrap4LinkPlugin' |
self | <cms.plugin_pool.PluginPool object at 0x7f31fb904100> |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '' |
CONTENT_TYPE | 'text/plain' |
DBUS_SESSION_BUS_ADDRESS | 'unix:path=/run/user/1004/bus' |
DJANGO_SETTINGS_MODULE | 'xen_tnidb.settings' |
GATEWAY_INTERFACE | 'CGI/1.1' |
HOME | '/home/xen' |
HTTP_ACCEPT | '*/*' |
HTTP_CONNECTION | 'Keep-Alive' |
HTTP_HOST | 'localhost:8007' |
HTTP_USER_AGENT | 'claudebot' |
HTTP_X_FORWARDED_FOR | '23.20.51.162' |
HTTP_X_FORWARDED_HOST | 'tnidb.xenovex.com' |
HTTP_X_FORWARDED_SERVER | 'tnidb.xenovex.com' |
LANG | 'C.UTF-8' |
LESSCLOSE | '/usr/bin/lesspipe %s %s' |
LESSOPEN | '| /usr/bin/lesspipe %s' |
LOGNAME | 'xen' |
LS_COLORS | 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:' |
MOTD_SHOWN | 'pam' |
OLDPWD | '/home/xen/2022/xen_tnidb/static' |
PATH | '/home/ubuntu/2020/aed_vir/bin:/home/xen/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin' |
PATH_INFO | '/en/resources/tntit/pcn/' |
PS1 | '(aed_vir) ${debian_chroot:+($debian_chroot)}\\u@\\h:\\w\\$ ' |
PWD | '/home/xen/2022/xen_tnidb' |
QUERY_STRING | '' |
REMOTE_ADDR | '127.0.0.1' |
REMOTE_HOST | '' |
REQUEST_METHOD | 'GET' |
RUN_MAIN | 'true' |
SCRIPT_NAME | '' |
SERVER_NAME | 'localhost' |
SERVER_PORT | '8007' |
SERVER_PROTOCOL | 'HTTP/1.1' |
SERVER_SOFTWARE | 'WSGIServer/0.2' |
SHELL | '/bin/bash' |
SHLVL | '2' |
SSH_CLIENT | '103.16.202.102 14335 22' |
SSH_CONNECTION | '103.16.202.102 14335 10.160.0.3 22' |
SSH_TTY | '/dev/pts/6' |
STY | '895376.tnidb' |
TERM | 'screen' |
TERMCAP | ('SC|screen|VT 100/ANSI X3.64 virtual ' 'terminal:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:li#68:co#238:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mh=\\E[2m:mr=\\E[7m:me=\\E[m:ms:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:po=\\E[5i:pf=\\E[4i:Km=\\E[<:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:F1=\\E[23~:F2=\\E[24~:kB=\\E[Z:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:@7=\\E[4~:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:kd=\\EOB:kr=\\EOC:kl=\\EOD:km:') |
TZ | 'Asia/Kolkata' |
USER | 'xen' |
VIRTUAL_ENV | '/home/ubuntu/2020/aed_vir' |
WINDOW | '0' |
XDG_DATA_DIRS | '/usr/local/share:/usr/share:/var/lib/snapd/desktop' |
XDG_RUNTIME_DIR | '/run/user/1004' |
XDG_SESSION_CLASS | 'user' |
XDG_SESSION_ID | '6669' |
XDG_SESSION_TYPE | 'tty' |
_ | '/usr/bin/python3' |
wsgi.errors | <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'> |
wsgi.file_wrapper | <class 'wsgiref.util.FileWrapper'> |
wsgi.input | <django.core.handlers.wsgi.LimitedStream object at 0x7f31ec2342e0> |
wsgi.multiprocess | False |
wsgi.multithread | True |
wsgi.run_once | False |
wsgi.url_scheme | 'http' |
wsgi.version | (1, 0) |
xen_tnidb.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['tnidb.xenovex.com', 'nrt.xenovex.com', 'localhost', '127.0.0.1', 'ptc.xenovex.com'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | PosixPath('/home/xen/2022/xen_tnidb') |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CMS_LANGUAGES | {1: [{'code': 'en', 'fallbacks': ['ta'], 'hide_untranslated': False, 'name': 'en', 'public': True, 'redirect_on_fallback': True}, {'code': 'ta', 'fallbacks': ['en'], 'hide_untranslated': False, 'name': 'தமிழ்', 'public': True, 'redirect_on_fallback': True}], 'default': {'hide_untranslated': False, 'public': True, 'redirect_on_fallback': True}, <class 'cms.utils.conf.VERIFIED'>: True} |
CMS_PERMISSION | True |
CMS_PLACEHOLDER_CONF | {} |
CMS_TEMPLATES | (('base.html', 'Home page template'),) |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | True |
CSRF_COOKIE_MASKED | 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 | True |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'NAME': 'tnidb', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '3306', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'root'}} |
DATABASE_ROUTERS | [] |
DATA_DIR | '/home/xen/2022/xen_tnidb' |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATA_UPLOAD_MAX_NUMBER_FILES | 100 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_AUTO_FIELD | 'django.db.models.BigAutoField' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
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_LANGUAGE | 1 |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
EMAIL_BACKEND | 'django.core.mail.backends.smtp.EmailBackend' |
EMAIL_HOST | 'smtp.gmail.com' |
EMAIL_HOST_PASSWORD | '********************' |
EMAIL_HOST_USER | 'harish10010@gmail.com' |
EMAIL_PORT | 587 |
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 | True |
FILER_IMAGE_MODEL | 'filer.Image' |
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 | [] |
INSTALLED_APPS | ['djangocms_admin_style', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'django.contrib.messages', 'cms', 'menus', 'sekizai', 'treebeard', 'djangocms_text_ckeditor', 'filer', 'easy_thumbnails', 'djangocms_file', 'djangocms_icon', 'djangocms_link', 'djangocms_picture', 'djangocms_style', 'djangocms_snippet', 'djangocms_googlemap', 'djangocms_video', 'tnidb_controller', 'user_controller'] |
INTERNAL_IPS | [] |
LANGUAGES | (('en', 'en'),) |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ur'] |
LANGUAGE_CODE | 'en' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_HTTPONLY | False |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LANGUAGE_COOKIE_SAMESITE | None |
LANGUAGE_COOKIE_SECURE | False |
LOCALE_PATHS | [] |
LOGGING | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | 'login_success' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | 'logout_success' |
MANAGERS | [] |
MEDIA_ROOT | '/home/xen/2022/xen_tnidb/media' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ['cms.middleware.utils.ApphookReloadMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'cms.middleware.user.CurrentUserMiddleware', 'cms.middleware.page.CurrentPageMiddleware', 'cms.middleware.toolbar.ToolbarMiddleware', 'cms.middleware.language.LanguageCookieMiddleware'] |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PARLER_DEFAULT_LANGUAGE | 'en' |
PARLER_LANGUAGES | {1: ({'code': 'en'}, {'code': 'ta'}), 'default': {'code': 'ta'}} |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
ROOT_URLCONF | 'xen_tnidb.urls' |
SECRET_KEY | '********************' |
SECRET_KEY_FALLBACKS | '********************' |
SECURE_BROWSER_XSS_FILTER | True |
SECURE_CONTENT_TYPE_NOSNIFF | True |
SECURE_CROSS_ORIGIN_OPENER_POLICY | 'same-origin' |
SECURE_HSTS_INCLUDE_SUBDOMAINS | True |
SECURE_HSTS_PRELOAD | True |
SECURE_HSTS_SECONDS | 15768000 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_REFERRER_POLICY | 'same-origin' |
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 | 'xen_tnidb.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
SITE_ID | 1 |
STATICFILES_DIRS | ('/home/xen/2022/xen_tnidb/xen_tnidb/static',) |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/home/xen/2022/xen_tnidb/static' |
STATIC_URL | '/static/' |
STORAGES | {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'}, 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}} |
TEMPLATES | [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/home/xen/2022/xen_tnidb/xen_tnidb/templates'], 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.i18n', 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.template.context_processors.media', 'django.template.context_processors.csrf', 'django.template.context_processors.tz', 'sekizai.context_processors.sekizai', 'django.template.context_processors.static', 'cms.context_processors.cms_settings'], 'loaders': ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader']}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THOUSAND_SEPARATOR | ',' |
THUMBNAIL_PROCESSORS | ('easy_thumbnails.processors.colorspace', 'easy_thumbnails.processors.autocrop', 'filer.thumbnail_processors.scale_and_crop_with_subject_location', 'easy_thumbnails.processors.filters') |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'Asia/Kolkata' |
USE_DEPRECATED_PYTZ | False |
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 | 'xen_tnidb.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.