'<' not supported between instances of 'NoneType' and 'float'
Request Method: | GET |
---|---|
Request URL: | https://nuestropresupuesto.org/presupuestos/funcionales/2015/15/ |
Django Version: | 1.10.3 |
Exception Type: | TypeError |
Exception Value: | '<' not supported between instances of 'NoneType' and 'float' |
Exception Location: | ./observatorio/internal/templatetags/ieepp_tags.py in str_number, line 14 |
Python Executable: | /usr/local/bin/uwsgi |
Python Version: | 3.7.3 |
Python Path: | ['.', '', '/usr/lib/python37.zip', '/usr/lib/python3.7', '/usr/lib/python3.7/lib-dynload', '/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages', '/home/fitoria/observatorio'] |
Server time: | Jue, 28 Mar 2024 11:20:18 +0000 |
In template /home/fitoria/observatorio/observatorio/templates/budgets/functional/detail.html
, error at line 83
73 | </a> |
---|---|
74 | <div class="dropdown-menu"> |
75 | {% for b in budgets %} |
76 | <a href="{% url 'detail_function' budget_year=b.year pk=function.pk %}" class="dropdown-item"> |
77 | {{ b.year|safe }} - {{ b.budget_status }} |
78 | </a> |
79 | {% endfor %} |
80 | </div> |
81 | </li> |
82 | <li class="nav-item"> |
83 | <a class="nav-link nav-total" >TOTAL C$: <em>{{ function_total|str_number }}</em></a> |
84 | </li> |
85 | <li class="nav-item"> |
86 | <a href="{% url 'make_functional_excel' budget_year=budget.year pk=function.pk %}" class="btn btn-primary"><i class="fa fa-file-excel-o" aria-hidden="true"></i> Descargar</a> |
87 | </li> |
88 | </ul> |
89 | <div class="row"> |
90 | {# list instituions of functional budgets #} |
91 | {% if functionalbudgets|length <= 6 %} |
92 | <div class="col-sm-12"> |
93 | <table class="table table-bordered graph-table box-shadow mb30"> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/core/handlers/exception.py
in inner
This decorator is automatically applied to all middleware to ensure that
no middleware leaks an exception and that the next middleware in the stack
can rely on getting a response instead of an exception.
"""
@wraps(get_response, assigned=available_attrs(get_response))
def inner(request):
try:
response = get_response(request)...
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | TypeError("'<' not supported between instances of 'NoneType' and 'float'") |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f821ffbc5f8>> |
request | <WSGIRequest: GET '/presupuestos/funcionales/2015/15/'> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
"HttpResponse object. It returned None instead."
% (middleware_method.__self__.__class__.__name__)
)
try:
response = response.render()
except Exception as e:
response = self.process_exception_by_middleware(e, request)...
return response
def process_exception_by_middleware(self, exception, request):
"""
Pass the exception to the exception middleware. If no middleware
Variable | Value |
---|---|
callback | <function FunctionDetail at 0x7f821ea99950> |
callback_args | () |
callback_kwargs | {'budget_year': '2015', 'pk': '15'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f821eac0550>> |
request | <WSGIRequest: GET '/presupuestos/funcionales/2015/15/'> |
resolver | <RegexURLResolver 'config.urls' (None:None) ^/> |
resolver_match | ResolverMatch(func=observatorio.budgets.views.FunctionDetail, args=(), kwargs={'budget_year': '2015', 'pk': '15'}, url_name=detail_function, app_names=[], namespaces=[]) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f821ffbc5f8> |
wrapped_callback | <function FunctionDetail at 0x7f821ea99950> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/core/handlers/base.py
in _get_response
raise ValueError(
"%s.process_template_response didn't return an "
"HttpResponse object. It returned None instead."
% (middleware_method.__self__.__class__.__name__)
)
try:
response = response.render()...
except Exception as e:
response = self.process_exception_by_middleware(e, request)
return response
def process_exception_by_middleware(self, exception, request):
Variable | Value |
---|---|
callback | <function FunctionDetail at 0x7f821ea99950> |
callback_args | () |
callback_kwargs | {'budget_year': '2015', 'pk': '15'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <django.middleware.csrf.CsrfViewMiddleware object at 0x7f821eac0550>> |
request | <WSGIRequest: GET '/presupuestos/funcionales/2015/15/'> |
resolver | <RegexURLResolver 'config.urls' (None:None) ^/> |
resolver_match | ResolverMatch(func=observatorio.budgets.views.FunctionDetail, args=(), kwargs={'budget_year': '2015', 'pk': '15'}, url_name=detail_function, app_names=[], namespaces=[]) |
response | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7f821ffbc5f8> |
wrapped_callback | <function FunctionDetail at 0x7f821ea99950> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/response.py
in render
If the content has already been rendered, this is a no-op.
Returns 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/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/response.py
in rendered_content
This *does not* set the final content of the response. To set the
response content, you must either call render(), or set the
content explicitly using the value of this property.
"""
template = self.resolve_template(self.template_name)
context = self.resolve_context(self.context_data)
content = template.render(context, self._request)...
return content
def add_post_render_callback(self, callback):
"""Adds a new post-rendering callback.
If the response has already been rendered,
Variable | Value |
---|---|
context | {'budget': <Budget: Presupuesto Funcional - 2015>, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'functionalbudgets': <QuerySet []>, 'is_paginated': False, 'object_list': <QuerySet []>, 'page_obj': None, 'paginator': None, 'publications': <QuerySet []>, 'tips': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>} |
self | <TemplateResponse status_code=200, "text/html; charset=utf-8"> |
template | <django.template.backends.django.Template object at 0x7f821e4ba6a0> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/backends/django.py
in render
@property
def origin(self):
return self.template.origin
def render(self, context=None, request=None):
context = make_context(context, request, autoescape=self.backend.engine.autoescape)
try:
return self.template.render(context)...
except TemplateDoesNotExist as exc:
reraise(exc, self.backend)
def copy_exception(exc, backend=None):
"""
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
request | <WSGIRequest: GET '/presupuestos/funcionales/2015/15/'> |
self | <django.template.backends.django.Template object at 0x7f821e4ba6a0> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render
def render(self, context):
"Display stage -- can be called many times"
context.render_context.push()
try:
if context.template is None:
with context.bind_template(self):
context.template_name = self.name
return self._render(context)...
else:
return self._render(context)
finally:
context.render_context.pop()
def compile_nodelist(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <django.template.base.Template object at 0x7f821e5aad68> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in _render
def __iter__(self):
for node in self.nodelist:
for subnode in node:
yield subnode
def _render(self, context):
return self.nodelist.render(context)...
def render(self, context):
"Display stage -- can be called many times"
context.render_context.push()
try:
if context.template is None:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <django.template.base.Template object at 0x7f821e5aad68> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bits | [] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
node | <ExtendsNode: extends "base.html"> |
self | [<ExtendsNode: extends "base.html">] |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)...
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <ExtendsNode: extends "base.html"> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/loader_tags.py
in render
blocks = {n.name: n for n in
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.
return compiled_parent._render(context)...
class IncludeNode(Node):
context_key = '__include_context'
def __init__(self, template, *args, **kwargs):
Variable | Value |
---|---|
block_context | <django.template.loader_tags.BlockContext object at 0x7f821e515908> |
blocks | {'bodyClass': <Block Node: bodyClass. Contents: [<TextNode: 'home'>]>, 'content': <Block Node: content. Contents: [<TextNode: '\n '>]>, 'css': <Block Node: css. Contents: [<TextNode: '\n <link rel="styleshee'>, <django.templatetags.static.StaticNode object at 0x7f821e8a4ba8>, <TextNode: '" rel="stylesheet">\n '>]>, 'custom-javascript': <Block Node: custom-javascript. Contents: [<TextNode: '\n '>]>, 'javascript': <Block Node: javascript. Contents: [<TextNode: '\n <script src="https'>, <django.templatetags.static.StaticNode object at 0x7f821e8aa198>, <TextNode: '"></script>\n '>]>, 'meta_tags': <Block Node: meta_tags. Contents: [<TextNode: '\n '>, <django.template.defaulttags.CommentNode object at 0x7f821e91bc88>, <TextNode: '\n '>]>, 'modal': <Block Node: modal. Contents: []>, 'stylesheets': <Block Node: stylesheets. Contents: [<TextNode: '\n '>]>, 'title': <Block Node: title. Contents: [<TextNode: 'observatorio'>]>} |
compiled_parent | <django.template.base.Template object at 0x7f821e913be0> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
node | <django.template.defaulttags.LoadNode object at 0x7f821e8a49b0> |
self | <ExtendsNode: extends "base.html"> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in _render
def __iter__(self):
for node in self.nodelist:
for subnode in node:
yield subnode
def _render(self, context):
return self.nodelist.render(context)...
def render(self, context):
"Display stage -- can be called many times"
context.render_context.push()
try:
if context.template is None:
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <django.template.base.Template object at 0x7f821e913be0> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | '\n </header>\n\n ' |
bits | ['', '\n' '<!DOCTYPE html>\n' '<html lang="en">\n' ' <head>\n' ' <meta charset="utf-8">\n' ' <meta http-equiv="x-ua-compatible" content="ie=edge">\n' ' <title>', 'Presupuesto Funcional - Agricultura, Silvicultura, Pesca y Caza | ' 'Observatorio', '</title>\n' ' <meta name="viewport" content="width=device-width, initial-scale=1.0">\n' '\n' ' ', '\n \n ', '\n' ' <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->\n' ' <!--[if lt IE 9]>\n' ' <script ' 'src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>\n' ' <![endif]-->\n' '\n' ' ', '\n' ' <link rel="stylesheet" ' 'href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" ' 'integrity="sha384-AysaV+vQoT3kOAXZkl02PThvDr8HYKPZhNT5h/CXfBThSRXQ6jW5DO2ekP5ViFdi" ' 'crossorigin="anonymous">\n' ' <script src="https://use.fontawesome.com/55a1cc20ef.js"></script>\n' ' <link ' 'href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,900" ' 'rel="stylesheet">\n' ' <link href="/static/css/project.min.css" rel="stylesheet">\n' ' ', '\n\n ', '\n ', '\n\n </head>\n\n <body class="', 'functions container-large', '">\n' '\n' ' <header class="header-primary">\n' ' <div class="banner">\n' ' <div class="container">\n' ' <div class="row img-row"> \n' ' <div class="col-xs-6">\n' ' <a href="/">\n' ' <img src="', '/static/images/observatorio-logo.png', '">\n' ' </a>\n' ' </div>\n' ' <div class="col-xs-6">\n' ' <img src="', '/static/images/expediente-publico.png', '" class="pull-right">\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' ', '<nav class="main-menu navbar navbar-dark navbar-static-top navbar-full">\n' ' <div class="container">\n' ' <button type="button" class="navbar-toggler hidden-lg-up pull-xs-right" ' 'data-toggle="collapse" data-target="#bs-navbar-collapse-1">\n' '\n' ' </button>\n' '\n' ' <div class="collapse navbar-toggleable-md" id="bs-navbar-collapse-1">\n' ' <ul class="nav navbar-nav">\n' ' <li class="nav-item dropdown">\n' ' <a class="nav-link dropdown-toggle" href="/" ' 'id="modulosNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" ' 'aria-expanded="false">\n' ' El Observatorio\n' ' </a>\n' ' <div class="dropdown-menu" ' 'aria-labelledby="modulosNavbarDropdown">\n' ' <a class="dropdown-item" ' 'href="/acerca-del-observatorio/">¿Qué es el observatorio?</a>\n' ' \n' ' </div>\n' ' </li>\n' ' <li class="nav-item dropdown">\n' ' <a class="nav-link dropdown-toggle" href="#" ' 'id="modulosNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" ' 'aria-expanded="false">\n' ' Presupuestos\n' ' </a>\n' ' <div class="dropdown-menu" ' 'aria-labelledby="modulosNavbarDropdown">\n' ' <a class="dropdown-item" ' 'href="/presupuestos/funcionales/">Presupuestos Funcionales</a>\n' ' <a class="dropdown-item" ' 'href="/presupuestos/institucionales/">Presupuestos Institucionales</a>\n' ' <a class="dropdown-item" ' 'href="/contrataciones/nacionales/">Contrataciones Nacionales</a>\n' ' <a class="dropdown-item" ' 'href="/contrataciones/municipales/">Contrataciones Municipales</a>\n' ' <a class="dropdown-item" href="/proyectos/">Proyectos de ' 'inversión pública</a>\n' ' <a class="dropdown-item" href="/ingresos/">Ingresos</a>\n' ' </div>\n' ' </li>\n' ' <li class="nav-item dropdown">\n' ' <a class="nav-link dropdown-toggle" href="#" ' 'id="modulosNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" '... <trimmed 5079 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
node | <Block Node: content. Contents: [<TextNode: '\n '>]> |
self | [<django.template.defaulttags.LoadNode object at 0x7f821e8a49b0>, <TextNode: '\n<!DOCTYPE html>\n<html la'>, <Block Node: title. Contents: [<TextNode: 'observatorio'>]>, <TextNode: '</title>\n <meta name="'>, <Block Node: meta_tags. Contents: [<TextNode: '\n '>, <django.template.defaulttags.CommentNode object at 0x7f821e91bc88>, <TextNode: '\n '>]>, <TextNode: '\n <!-- HTML5 shim, for'>, <Block Node: css. Contents: [<TextNode: '\n <link rel="styleshee'>, <django.templatetags.static.StaticNode object at 0x7f821e8a4ba8>, <TextNode: '" rel="stylesheet">\n '>]>, <TextNode: '\n\n '>, <Block Node: stylesheets. Contents: [<TextNode: '\n '>]>, <TextNode: '\n\n </head>\n\n <body clas'>, <Block Node: bodyClass. Contents: [<TextNode: 'home'>]>, <TextNode: '">\n\n <header class="he'>, <django.templatetags.static.StaticNode object at 0x7f821e8a4940>, <TextNode: '">\n </a>\n '>, <django.templatetags.static.StaticNode object at 0x7f821e8a4908>, <TextNode: '" class="pull-right">\n '>, <django.template.loader_tags.IncludeNode object at 0x7f821e8a4da0>, <TextNode: '\n </header>\n\n '>, <Block Node: content. Contents: [<TextNode: '\n '>]>, <TextNode: '\n\n <footer class="foot'>, <django.template.defaulttags.CommentNode object at 0x7f821e8a44a8>, <TextNode: '\n <div class="copyri'>, <django.templatetags.static.StaticNode object at 0x7f821e8a4e48>, <TextNode: '">\n </a>'>, <Block Node: modal. Contents: []>, <TextNode: '\n\n '>, <Block Node: javascript. Contents: [<TextNode: '\n <script src="https'>, <django.templatetags.static.StaticNode object at 0x7f821e8aa198>, <TextNode: '"></script>\n '>]>, <TextNode: '\n\n '>, <Block Node: custom-javascript. Contents: [<TextNode: '\n '>]>, <TextNode: '\n <script>\n (func'>] |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)...
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <Block Node: content. Contents: [<TextNode: '\n '>]> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/loader_tags.py
in render
push = block = block_context.pop(self.name)
if block is None:
block = self
# Create new block so we can store context without thread-safety issues.
block = type(self)(block.name, block.nodelist)
block.context = context
context['block'] = block
result = block.nodelist.render(context)...
if push is not None:
block_context.push(self.name, push)
return result
def super(self):
if not hasattr(self, 'context'):
Variable | Value |
---|---|
block | <Block Node: content. Contents: [<TextNode: '\n\n'>, <TextNode: '\n<nav class="breadcrumb p'>, <django.template.defaulttags.URLNode object at 0x7f821e5cf400>, <TextNode: '">Gastos Institucionales '>, <Variable Node: budget.get_functional_budgets_url>, <TextNode: '">'>, <Variable Node: budget.title>, <TextNode: '</a>\n <span class='>, <Variable Node: function.name>, <TextNode: '</span>\n </div>\n</nav>'>, <TextNode: '\n'>, <TextNode: '\n<main class="main mt20">'>, <TextNode: '\n '>, <TextNode: "\n <div class='">, <IfNode>, <TextNode: "'>\n <secti">, <Variable Node: function.photo.url>, <TextNode: ');background-size:cover;"'>, <Variable Node: function.name>, <TextNode: '</h2>\n '>, <Variable Node: function.description>, <TextNode: '\n </p>'>, <TextNode: '\n '>, <TextNode: '\n <div class="'>, <IfNode>, <TextNode: '">\n <div c'>, <django.templatetags.static.StaticNode object at 0x7f821e5b7128>, <TextNode: '" alt="Tips" class="image'>, <For Node: for tip in tips, tail_len: 3>, <TextNode: '\n '>, <TextNode: '\n </div>\n '>, <TextNode: '\n <ul class="nav n'>, <Variable Node: function.name>, <TextNode: '\n </a>\n '>, <For Node: for f in budget.functions.all, tail_len: 5>, <TextNode: '\n </div>\n '>, <Variable Node: budget.year|safe>, <TextNode: ' - '>, <Variable Node: budget.budget_status>, <TextNode: '\n </a>\n '>, <For Node: for b in budgets, tail_len: 7>, <TextNode: '\n </div>\n '>, <Variable Node: function_total|str_number>, <TextNode: '</em></a>\n </l'>, <django.template.defaulttags.URLNode object at 0x7f821e5d4f28>, <TextNode: '" class="btn btn-primary"'>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n \n </d'>, <IfNode>, <TextNode: '\n <div class="row"'>, <IfNode>, <TextNode: '">\n <div c'>, <For Node: for publication in publications, tail_len: 10>, <TextNode: '\n </di'>, <IfNode>, <TextNode: '">\n <div c'>, <django.template.defaulttags.URLNode object at 0x7f821e567b38>, <TextNode: '">\n '>, <django.templatetags.static.StaticNode object at 0x7f821e5ca5c0>, <TextNode: '" alt="Descargar Xls">\n '>]> |
block_context | <django.template.loader_tags.BlockContext object at 0x7f821e515908> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
push | <Block Node: content. Contents: [<TextNode: '\n\n'>, <TextNode: '\n<nav class="breadcrumb p'>, <django.template.defaulttags.URLNode object at 0x7f821e5cf400>, <TextNode: '">Gastos Institucionales '>, <Variable Node: budget.get_functional_budgets_url>, <TextNode: '">'>, <Variable Node: budget.title>, <TextNode: '</a>\n <span class='>, <Variable Node: function.name>, <TextNode: '</span>\n </div>\n</nav>'>, <TextNode: '\n'>, <TextNode: '\n<main class="main mt20">'>, <TextNode: '\n '>, <TextNode: "\n <div class='">, <IfNode>, <TextNode: "'>\n <secti">, <Variable Node: function.photo.url>, <TextNode: ');background-size:cover;"'>, <Variable Node: function.name>, <TextNode: '</h2>\n '>, <Variable Node: function.description>, <TextNode: '\n </p>'>, <TextNode: '\n '>, <TextNode: '\n <div class="'>, <IfNode>, <TextNode: '">\n <div c'>, <django.templatetags.static.StaticNode object at 0x7f821e5b7128>, <TextNode: '" alt="Tips" class="image'>, <For Node: for tip in tips, tail_len: 3>, <TextNode: '\n '>, <TextNode: '\n </div>\n '>, <TextNode: '\n <ul class="nav n'>, <Variable Node: function.name>, <TextNode: '\n </a>\n '>, <For Node: for f in budget.functions.all, tail_len: 5>, <TextNode: '\n </div>\n '>, <Variable Node: budget.year|safe>, <TextNode: ' - '>, <Variable Node: budget.budget_status>, <TextNode: '\n </a>\n '>, <For Node: for b in budgets, tail_len: 7>, <TextNode: '\n </div>\n '>, <Variable Node: function_total|str_number>, <TextNode: '</em></a>\n </l'>, <django.template.defaulttags.URLNode object at 0x7f821e5d4f28>, <TextNode: '" class="btn btn-primary"'>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n \n </d'>, <IfNode>, <TextNode: '\n <div class="row"'>, <IfNode>, <TextNode: '">\n <div c'>, <For Node: for publication in publications, tail_len: 10>, <TextNode: '\n </di'>, <IfNode>, <TextNode: '">\n <div c'>, <django.template.defaulttags.URLNode object at 0x7f821e567b38>, <TextNode: '">\n '>, <django.templatetags.static.StaticNode object at 0x7f821e5ca5c0>, <TextNode: '" alt="Descargar Xls">\n '>]> |
self | <Block Node: content. Contents: [<TextNode: '\n '>]> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render
# extend_nodelist().
contains_nontext = False
def render(self, context):
bits = []
for node in self:
if isinstance(node, Node):
bit = node.render_annotated(context)...
else:
bit = node
bits.append(force_text(bit))
return mark_safe(''.join(bits))
def get_nodes_by_type(self, nodetype):
Variable | Value |
---|---|
bit | ('\n' ' </div>\n' ' </li>\n' ' <li class="nav-item">\n' ' <a class="nav-link nav-total" >TOTAL C$: <em>') |
bits | ['\n\n', '\n' '<nav class="breadcrumb pl0">\n' ' <div class="container">\n' ' <a class="breadcrumb-item" href="/">Observatorio</a>\n' ' <a class="breadcrumb-item" href="', '/gastos-instituciones-publicas/', '">Gastos Institucionales Públicas</a>\n' ' <a class="breadcrumb-item" href="', '/presupuestos/funcionales/2015/', '">', 'Presupuesto Funcional', '</a>\n <span class="breadcrumb-item active">', 'Agricultura, Silvicultura, Pesca y Caza', '</span>\n </div>\n</nav>\n', '\n', '\n' '<main class="main mt20">\n' ' <div class="container" id="page-wrapper">\n' ' <div class="row">\n' ' ', '\n ', "\n <div class='", 'col-xs-12', "'>\n" ' <section class="page-header pl30 min-200 mb30" ' 'style="background-image:url(', '/media/relatedlinks/agricultura---.png', ');background-size:cover;">\n' ' <div class="page-header-overlay"></div>\n' ' <h2 class="section-title text-white">', 'Agricultura, Silvicultura, Pesca y Caza', '</h2>\n' ' <p class="fsize14 text-white">\n' ' ', 'Muestra los gastos dirigidos al mejoramiento de los procesos de regulación y ' 'fomento del sector agrÃcola, ganadero, de bosques, caza y pesca.', '\n' ' </p>\n' ' </section>\n' ' </div>\n' ' ', '\n ', '\n <div class="', 'hidden', '">\n' ' <div class="card card-tips min-200 box-shadow">\n' ' <div class="card-block">\n' ' <div class="flex">\n' ' <div class="col-xs-5 np">\n' ' <img src="', '/static/images/tips.png', '" alt="Tips" class="image-fluid">\n' ' </div>\n' ' <div class="col-xs-7">\n' ' <h4 class="section-title">TIPS</h4>\n' ' <div id="tips-carousel">\n' ' ', '', '\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' </div>\n' ' ', '\n </div>\n ', '\n' ' <ul class="nav nav-pills mb30 nav-card nav-border-top-blue">\n' ' <li class="nav-item dropdown">\n' ' <a class="nav-link dropdown-toggle nav-title" ' 'data-toggle="dropdown" href="#" role="button" aria-haspopup="true" ' 'aria-expanded="false">\n' ' ', 'Agricultura, Silvicultura, Pesca y Caza', '\n' ' </a>\n' ' <div class="dropdown-menu">\n' ' ', '\n' ' <a href="/presupuestos/funcionales/2015/1/" ' 'class="dropdown-item">Administracion Gubernamental</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/6/" ' 'class="dropdown-item">Servicios Sociales y Asistencia Social</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/5/" ' 'class="dropdown-item">Servicios de Defensa, Orden Público y Seguridad</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/3/" ' 'class="dropdown-item">Salud</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/7/" ' 'class="dropdown-item">Vivienda y Servicios Comunitarios</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/2/" ' 'class="dropdown-item">Educación</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/10/" ' 'class="dropdown-item">Deuda Pública Intereses y Gastos</a>\n' ' \n' ' <a href="/presupuestos/funcionales/2015/9/" ' 'class="dropdown-item">Servicios Económicos</a>\n' ' \n' ' <a... <trimmed 6269 bytes string> |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
node | <Variable Node: function_total|str_number> |
self | [<TextNode: '\n\n'>, <TextNode: '\n<nav class="breadcrumb p'>, <django.template.defaulttags.URLNode object at 0x7f821e5cf400>, <TextNode: '">Gastos Institucionales '>, <Variable Node: budget.get_functional_budgets_url>, <TextNode: '">'>, <Variable Node: budget.title>, <TextNode: '</a>\n <span class='>, <Variable Node: function.name>, <TextNode: '</span>\n </div>\n</nav>'>, <TextNode: '\n'>, <TextNode: '\n<main class="main mt20">'>, <TextNode: '\n '>, <TextNode: "\n <div class='">, <IfNode>, <TextNode: "'>\n <secti">, <Variable Node: function.photo.url>, <TextNode: ');background-size:cover;"'>, <Variable Node: function.name>, <TextNode: '</h2>\n '>, <Variable Node: function.description>, <TextNode: '\n </p>'>, <TextNode: '\n '>, <TextNode: '\n <div class="'>, <IfNode>, <TextNode: '">\n <div c'>, <django.templatetags.static.StaticNode object at 0x7f821e5b7128>, <TextNode: '" alt="Tips" class="image'>, <For Node: for tip in tips, tail_len: 3>, <TextNode: '\n '>, <TextNode: '\n </div>\n '>, <TextNode: '\n <ul class="nav n'>, <Variable Node: function.name>, <TextNode: '\n </a>\n '>, <For Node: for f in budget.functions.all, tail_len: 5>, <TextNode: '\n </div>\n '>, <Variable Node: budget.year|safe>, <TextNode: ' - '>, <Variable Node: budget.budget_status>, <TextNode: '\n </a>\n '>, <For Node: for b in budgets, tail_len: 7>, <TextNode: '\n </div>\n '>, <Variable Node: function_total|str_number>, <TextNode: '</em></a>\n </l'>, <django.template.defaulttags.URLNode object at 0x7f821e5d4f28>, <TextNode: '" class="btn btn-primary"'>, <TextNode: '\n '>, <IfNode>, <TextNode: '\n \n </d'>, <IfNode>, <TextNode: '\n <div class="row"'>, <IfNode>, <TextNode: '">\n <div c'>, <For Node: for publication in publications, tail_len: 10>, <TextNode: '\n </di'>, <IfNode>, <TextNode: '">\n <div c'>, <django.template.defaulttags.URLNode object at 0x7f821e567b38>, <TextNode: '">\n '>, <django.templatetags.static.StaticNode object at 0x7f821e5ca5c0>, <TextNode: '" alt="Descargar Xls">\n '>] |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in render_annotated
"""
Render the node. If debug is True and an exception occurs during
rendering, the exception is annotated with contextual line information
where it occurred in the template. For internal usage this method is
preferred over using the render method directly.
"""
try:
return self.render(context)...
except Exception as e:
if context.template.engine.debug and not hasattr(e, 'template_debug'):
e.template_debug = context.template.get_exception_info(e, self.token)
raise
def __iter__(self):
Variable | Value |
---|---|
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <Variable Node: function_total|str_number> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/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}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
self | <Variable Node: function_total|str_number> |
/home/fitoria/.virtualenvs/observatorio/lib/python3.7/site-packages/django/template/base.py
in resolve
else:
arg_vals.append(arg.resolve(context))
if getattr(func, 'expects_localtime', False):
obj = template_localtime(obj, context.use_tz)
if getattr(func, 'needs_autoescape', False):
new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
else:
new_obj = func(obj, *arg_vals)...
if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
obj = mark_safe(new_obj)
elif isinstance(obj, EscapeData):
with warnings.catch_warnings():
# Ignore mark_for_escaping deprecation as this will be
# removed in Django 2.0.
Variable | Value |
---|---|
arg_vals | [] |
args | [] |
context | [{'True': True, 'False': False, 'None': None}, {}, {}, {'paginator': None, 'page_obj': None, 'is_paginated': False, 'object_list': <QuerySet []>, 'functionalbudgets': <QuerySet []>, 'view': <observatorio.budgets.views.FunctionDetail object at 0x7f821e59cbe0>, 'function': <Function: Agricultura, Silvicultura, Pesca y Caza>, 'function_total': None, 'budgets': <QuerySet [<Budget: Presupuesto Funcional - 2012>, <Budget: Presupuesto Funcional - 2013>, <Budget: Presupuesto Funcional - 2014>, <Budget: Presupuesto Funcional - 2015>, <Budget: Presupuesto Funcional - 2016>, <Budget: Presupuesto Funcional - 2017>, <Budget: Presupuesto Funcional - 2018>]>, 'budget': <Budget: Presupuesto Funcional - 2015>, 'tips': <QuerySet []>, 'publications': <QuerySet []>}] |
escape_isnt_last_filter | True |
func | <function str_number at 0x7f821e8fd510> |
ignore_failures | False |
obj | None |
self | <django.template.base.FilterExpression object at 0x7f821e5b7b00> |
./observatorio/internal/templatetags/ieepp_tags.py
in str_number
register = template.Library()
@register.filter
def str_number(number):
''' Get a number and covert it into an human readable name '''
if number < 10000.0:...
return '{:,.2f} miles'.format(number/ 1000.0)
return '{:,.2f} millones'.format(number / 1000000.0)
@register.assignment_tag
def get_description(assignment, institution):
Variable | Value |
---|---|
number | None |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '' |
CONTENT_TYPE | '' |
DOCUMENT_ROOT | '/usr/share/nginx/html' |
HTTPS | 'on' |
HTTP_ACCEPT | '*/*' |
HTTP_HOST | 'nuestropresupuesto.org' |
HTTP_REFERER | 'http://nuestropresupuesto.org/presupuestos/funcionales/2015/15/' |
HTTP_USER_AGENT | 'claudebot' |
PATH_INFO | '/presupuestos/funcionales/2015/15/' |
QUERY_STRING | '' |
REMOTE_ADDR | '18.206.12.31' |
REMOTE_PORT | '38976' |
REQUEST_METHOD | 'GET' |
REQUEST_SCHEME | 'https' |
REQUEST_URI | '/presupuestos/funcionales/2015/15/' |
SCRIPT_NAME | '' |
SERVER_NAME | 'nuestropresupuesto.org' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/1.1' |
uwsgi.node | b'bourne' |
uwsgi.version | b'2.0.19.1' |
wsgi.errors | <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'> |
wsgi.file_wrapper | '' |
wsgi.input | <uwsgi._Input object at 0x7f821e9b7c60> |
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 | (('Kronoscode', 'lead@kronoscode.com'),) |
ADMIN_URL | '^admin/' |
ALLOWED_HOSTS | ['.nuestropresupuesto.org'] |
APPEND_SLASH | True |
APPS_DIR | <Path:/home/fitoria/observatorio/observatorio> |
AUTHENTICATION_BACKENDS | ('django.contrib.auth.backends.ModelBackend',) |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
AUTOSLUG_SLUGIFY_FUNCTION | 'slugify.slugify' |
CACHES | {'default': {'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/0', 'OPTIONS': {'CLIENT_CLASS': 'django_redis.client.DefaultClient', 'IGNORE_EXCEPTIONS': True}}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 600 |
CELERY_APP_NAME | 'celery_presupuesto' |
CELERY_BROKER_URL | 'redis://localhost:6379/0' |
CELERY_IGNORE_RESULT | False |
CELERY_RESULT_BACKEND | 'redis://localhost:6379/0' |
CRISPY_TEMPLATE_PACK | 'bootstrap4' |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SECURE | False |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | [] |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'HOST': 'localhost', 'NAME': 'observatorio', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': 5432, 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'observatorio'}} |
DATABASE_ROUTERS | [] |
DATA_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
DATA_UPLOAD_MAX_NUMBER_FIELDS | 1000 |
DATETIME_FORMAT | 'N j, Y, P' |
DATETIME_INPUT_FORMATS | ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y'] |
DATE_FORMAT | 'N j, Y' |
DATE_INPUT_FORMATS | ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] |
DEBUG | True |
DEBUG_PROPAGATE_EXCEPTIONS | False |
DECIMAL_SEPARATOR | '.' |
DEFAULT_CHARSET | 'utf-8' |
DEFAULT_CONTENT_TYPE | 'text/html' |
DEFAULT_EXCEPTION_REPORTER_FILTER | 'django.views.debug.SafeExceptionReporterFilter' |
DEFAULT_FILE_STORAGE | 'django.core.files.storage.FileSystemStorage' |
DEFAULT_FROM_EMAIL | 'observatorio <noreply@example.com>' |
DEFAULT_INDEX_TABLESPACE | '' |
DEFAULT_TABLESPACE | '' |
DISALLOWED_USER_AGENTS | [] |
DJANGO_APPS | ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin') |
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 | '[observatorio] ' |
EMAIL_TIMEOUT | None |
EMAIL_USE_SSL | False |
EMAIL_USE_TLS | False |
FILE_CHARSET | 'utf-8' |
FILE_UPLOAD_DIRECTORY_PERMISSIONS | None |
FILE_UPLOAD_HANDLERS | ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] |
FILE_UPLOAD_MAX_MEMORY_SIZE | 2621440 |
FILE_UPLOAD_PERMISSIONS | None |
FILE_UPLOAD_TEMP_DIR | None |
FIRST_DAY_OF_WEEK | 0 |
FIXTURE_DIRS | ('/home/fitoria/observatorio/observatorio/fixtures',) |
FORCE_SCRIPT_NAME | None |
FORMAT_MODULE_PATH | None |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ('django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'nested_admin', 'django_select2', 'xlsxwriter', 'import_export', 'ckeditor', 'mptt', 'observatorio.budgets', 'observatorio.internal', 'observatorio.contract', 'observatorio.projects', 'observatorio.revenue') |
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'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('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 | 'es-NI' |
LANGUAGE_COOKIE_AGE | None |
LANGUAGE_COOKIE_DOMAIN | None |
LANGUAGE_COOKIE_NAME | 'django_language' |
LANGUAGE_COOKIE_PATH | '/' |
LOCALE_PATHS | ('/home/fitoria/observatorio/observatorio/locale',) |
LOCAL_APPS | ('observatorio.budgets', 'observatorio.internal', 'observatorio.contract', 'observatorio.projects', 'observatorio.revenue') |
LOGGING | {'disable_existing_loggers': False, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(module)s ' '%(process)d %(thread)d %(message)s'}}, 'handlers': {'console': {'class': 'logging.StreamHandler', 'formatter': 'verbose', 'level': 'DEBUG'}, 'mail_admins': {'class': 'django.utils.log.AdminEmailHandler', 'filters': ['require_debug_false'], 'level': 'ERROR'}}, 'loggers': {'django.request': {'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True}, 'django.security.DisallowedHost': {'handlers': ['console', 'mail_admins'], 'level': 'ERROR', 'propagate': True}}, 'version': 1} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | (('Kronoscode', 'lead@kronoscode.com'),) |
MEDIA_ROOT | '/home/fitoria/observatorio/observatorio/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', 'django.middleware.locale.LocaleMiddleware') |
MIDDLEWARE_CLASSES | ['django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware'] |
MIGRATION_MODULES | {'sites': 'observatorio.contrib.sites.migrations'} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT_DAYS | '********************' |
PREPEND_WWW | False |
REDIS_LOCATION | 'redis://127.0.0.1:6379/0' |
ROOT_DIR | <Path:/home/fitoria/observatorio> |
ROOT_URLCONF | 'config.urls' |
SECRET_KEY | '********************' |
SECURE_BROWSER_XSS_FILTER | False |
SECURE_CONTENT_TYPE_NOSNIFF | False |
SECURE_HSTS_INCLUDE_SUBDOMAINS | False |
SECURE_HSTS_SECONDS | 0 |
SECURE_PROXY_SSL_HEADER | None |
SECURE_REDIRECT_EXEMPT | [] |
SECURE_SSL_HOST | None |
SECURE_SSL_REDIRECT | False |
SELECT2_CACHE_BACKEND | 'default' |
SELECT2_CACHE_PREFIX | 'select2_' |
SELECT2_CSS | '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css' |
SELECT2_JS | '//cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js' |
SERVER_EMAIL | 'observatorio <noreply@example.com>' |
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_SECURE | False |
SESSION_ENGINE | 'django.contrib.sessions.backends.db' |
SESSION_EXPIRE_AT_BROWSER_CLOSE | False |
SESSION_FILE_PATH | None |
SESSION_SAVE_EVERY_REQUEST | False |
SESSION_SERIALIZER | 'django.contrib.sessions.serializers.JSONSerializer' |
SETTINGS_MODULE | '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 | [] |
SITE_ID | 1 |
STATICFILES_DIRS | ('/home/fitoria/observatorio/observatorio/static',) |
STATICFILES_FINDERS | ('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder') |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/home/fitoria/observatorio/staticfiles' |
STATIC_URL | '/static/' |
TEMPLATES | [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/home/fitoria/observatorio/observatorio/templates'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages'], 'debug': True, 'loaders': [('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])]}}] |
TEST_NON_SERIALIZED_APPS | [] |
TEST_RUNNER | 'django.test.runner.DiscoverRunner' |
THIRD_PARTY_APPS | ('nested_admin', 'django_select2', 'xlsxwriter', 'import_export', 'ckeditor', 'mptt') |
THOUSAND_SEPARATOR | ',' |
TIME_FORMAT | 'P' |
TIME_INPUT_FORMATS | ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] |
TIME_ZONE | 'UTC' |
USE_ETAGS | False |
USE_I18N | True |
USE_L10N | False |
USE_THOUSAND_SEPARATOR | True |
USE_TZ | True |
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.