Skip to content

Commit

Permalink
HH-24363 change parameter to debug=pass, fix setting of bytes produce…
Browse files Browse the repository at this point in the history
…d info [p.trukhanov]
  • Loading branch information
AndreySumin committed Sep 3, 2012
1 parent c96ecd2 commit a115575
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 21 deletions.
4 changes: 2 additions & 2 deletions frontik/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ def finish(self, chunk = None):
self._response_size = sum(imap(len, self._write_buffer))
self._response_size += len(chunk) if chunk is not None else 0

if self.debug.debug_mode_inherited:
if self.debug.debug_return_response:
headers = {'Content-Length': str(self._response_size)}
original_response = {
'buffer': ''.join(self._write_buffer) + (chunk if chunk is not None else ''),
Expand Down Expand Up @@ -353,7 +353,7 @@ def _callback(response):
self.log.warn('got strange response.body of type %s', type(response.body))
callback(response)

if hasattr(self, 'debug') and self.debug.pass_debug_mode:
if hasattr(self, 'debug') and self.debug.pass_debug_mode_further:
req.headers[self.INHERIT_DEBUG_HEADER_NAME] = True

req.headers['X-Request-Id'] = self.request_id
Expand Down
13 changes: 7 additions & 6 deletions frontik/handler_xml.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import frontik.xml_util

import logging

log = logging.getLogger('frontik.server')
log_xsl = logging.getLogger('frontik.handler.xsl')
log_fileloader = logging.getLogger('frontik.server.fileloader')
Expand Down Expand Up @@ -81,12 +82,12 @@ def _source_comment(src):
return etree.Comment('Source: {0}'.format(frontik.util.asciify_url(src).replace('--', '%2D%2D')))

def xml_from_file(filename):
'''
"""
filename -> (status, et.Element)
status == True - результат хороший можно кешировать
== False - результат плохой, нужно вернуть, но не кешировать
'''
"""

if os.path.exists(filename):
try:
Expand All @@ -103,11 +104,11 @@ def xml_from_file(filename):


def xsl_from_file(filename):
'''
"""
filename -> (True, et.XSLT)
в случае ошибки выкидывает исключение
'''
"""

transform, xsl_files = frontik.xml_util.read_xsl(filename)

Expand Down Expand Up @@ -165,7 +166,7 @@ def __init__(self, handler):
self.log.debug('ignoring set_xsl() because config.apply_xsl=%s', self.handler.config.apply_xsl)
self.apply_xsl = False

elif self.handler.get_argument('noxsl', None) is not None or self.handler.get_cookie("noxsl") is not None:
elif frontik.util.get_cookie_or_url_param_value(self.handler, 'noxsl') is not None:
self.handler.require_debug_access()
self.apply_xsl = False
self.log.debug('apply_xsl==False due to ?noxsl query arg')
Expand Down
24 changes: 12 additions & 12 deletions frontik/handler_xml_debug.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import lxml.etree as etree
import tornado.options
from lxml.builder import E
from frontik.util import get_cookie_or_url_param_value
from frontik.xml_util import dict_to_xml


Expand Down Expand Up @@ -163,13 +164,12 @@ def handle(self, record):
class PageHandlerDebug(object):
def __init__(self, handler):
self.handler = weakref.proxy(handler)
debug_mode_enabled = (self.handler.get_argument('debug', None) is not None or
self.handler.get_cookie("debug") is not None)
debug_enabled = get_cookie_or_url_param_value(self.handler, 'debug')
self.debug_mode_inherited = self.handler.request.headers.get(frontik.handler.PageHandler.INHERIT_DEBUG_HEADER_NAME)
self.pass_debug_mode = (self.handler.get_argument('pass_debug', None) is not None or
self.handler.get_cookie("pass_debug") is not None or self.debug_mode_inherited)
self.debug_return_response = debug_enabled == 'pass' or self.debug_mode_inherited
self.pass_debug_mode_further = self.debug_return_response

if debug_mode_enabled or self.debug_mode_inherited or self.pass_debug_mode:
if debug_enabled is not None or self.debug_mode_inherited:
self.handler.require_debug_access()
self.handler.log.debug('debug mode is on')
self.debug_mode = True
Expand All @@ -184,25 +184,25 @@ def __init__(self, handler):
else:
self.debug_mode_logging = False

if self.pass_debug_mode:
self.handler.log.debug('debug mode will be passed to all frontik apps requested')

if self.debug_mode_inherited:
self.handler.log.debug('debug mode is inherited due to request header')
self.handler.log.debug('debug mode is inherited due to X-Inherit-Debug request header')

if self.debug_return_response:
self.handler.log.debug('debug mode will be passed to all frontik apps requested (debug=pass)')

def get_debug_page(self, status_code, original_response=None, **kwargs):
self.debug_log_handler.log_data.set("code", str(status_code))
self.debug_log_handler.log_data.set("mode", self.handler.get_argument('debug', 'text'))
self.debug_log_handler.log_data.set("request-id", str(self.handler.request_id))

if getattr(self.handler, "response-size", None) is not None:
if getattr(self.handler, "_response_size", None) is not None:
self.debug_log_handler.log_data.set("response-size", str(self.handler._response_size))

if self.pass_debug_mode and original_response is not None:
if self.debug_return_response and original_response is not None:
self.debug_log_handler.log_data.append(dict_to_xml(original_response, 'original-response'))

# show debug page if apply_xsl=True ('noxsl' flag is not set) or if 500 error occured
# if debug mode is inherited ('pass_debug' flag), than the response is always xml
# if debug mode is inherited (through X-Inherit-Debug request header), than the response is always xml
if (self.handler.xml.apply_xsl or not self.debug_mode) and not self.debug_mode_inherited:
try:
xsl_file = open(tornado.options.options.debug_xsl)
Expand Down
3 changes: 3 additions & 0 deletions frontik/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,9 @@ def _asciify_url_char(c):
def asciify_url(url):
return ''.join(map(_asciify_url_char, url))

def get_cookie_or_url_param_value(handler, param_name):
return handler.get_argument(param_name, handler.get_cookie(param_name, None))

MIN_MSG_LENGTH_LIMIT = 100
STD_MSG_LENGTH_LIMIT = 2048

Expand Down
1 change: 0 additions & 1 deletion frontik/xml_util.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ def dict_to_xml(dict_value, element_name):
element.append(dict_to_xml(v, k))
return element


def xml_to_dict(xml):
if len(xml) == 0:
return xml.text.encode('ascii', 'xmlcharrefreplace') if xml.text is not None else ''
Expand Down

0 comments on commit a115575

Please sign in to comment.