ó ¿öYc@@sTdZddlmZddlZddlmZd„Zdd„Zd„Z dS(s± raven.contrib.django.utils ~~~~~~~~~~~~~~~~~~~~~~~~~~ :copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details. :license: BSD, see LICENSE for more details. i(tabsolute_importN(tsettingscc@sYdV|jdƒ}x/|dkrE|dV|jd|dƒ}qWt|ƒdVdS(Nis i(tfindtlen(ttemplate_sourcetp((sK/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pytlinebreak_iters  cC@s d„}|dk rˆ|d}|d}g}|dg|ddd7}x%|dD]\}}|j|ƒqWW|dgd7}nÐ|rL|\}\} } t|ddƒ}} |jƒ} d}d} g}x[tt| ƒƒD]G\}}| | kr| |kr|}n|j| | |!ƒ|} qçW| sE|dkrXiSn td ƒ‚|dkrsd }d } n|jd ƒd } ||t|d dƒ|!ƒ}|||d|d!ƒ}|||gƒd}iit j j |ƒd6|d6|d6|d6|d6|d6d6| d6S(NcS@s\g}xO|D]G}t|ttfƒrGt|ƒdkrG|d}n|j|ƒq W|S(Nii(t isinstancetlistttupleRtappend(titemstrvtitem((sK/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt_remove_numberss  ' tlinetnamett source_linesiitloadnamesSource or debug neededss /templates/iÿÿÿÿiitfilenametabs_patht pre_contextt context_linetlinenot post_contextttemplatetculprit( tNoneR tgetattrtreloadt enumerateRt TypeErrortsplittmaxtostpathtbasename(tsourcetdebugRRRRtnumRtorigintstarttendRRtuptotnextRRR((sK/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pytget_data_from_templatesP           cC@sœtjr(d|jkr(|jd}npd|jkrG|jd}nQ|jd}t|jdƒ}||jƒr|dpdkr˜d||f}n|S(s] A reimplementation of Django's get_host, without the SuspiciousOperation check. tHTTP_X_FORWARDED_HOSTt HTTP_HOSTt SERVER_NAMEt SERVER_PORTt443t80s%s:%s(RtUSE_X_FORWARDED_HOSTtMETAtstrt is_secure(trequestthostt server_port((sK/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pytget_hostTs  ( t__doc__t __future__RR#t django.confRRRR.R<(((sK/opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyts   <