£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

Yc           @@  sT   d  Z  d d l m Z d d l Z d d l m Z d   Z d d  Z d   Z	 d S(   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    (   t   absolute_importN(   t   settingsc         c@  sY   d V|  j  d  } x/ | d k rE | d V|  j  d | d  } q Wt |   d Vd  S(   Ni    s   
i   (   t   findt   len(   t   template_sourcet   p(    (    sK   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt   linebreak_iter   s    	c         C@  s   d   } | d  k	 r | d } | d } g  } | d g | d d d 7} x% | d D] \ } } | j |  qW W| d g d 7} n |  rL|  \ } \ }	 }
 t | d d   } } | j   } d  } d } g  } x[ t t |   D]G \ } } |	 | k r|
 | k r| } n  | j | | | ! | } q W| sE| d  k rXi  Sn t d	   | d  k rsd
 } d
 } n | j d  d } | | t | d d  | ! } | | | d | d ! } | | | g  d } i i t	 j
 j |  d 6| d 6| d 6| d 6| d 6| d 6d 6| d 6S(   Nc         S@  s\   g  } xO |  D]G } t  | t t f  rG t |  d k rG | d } n  | j |  q W| S(   Ni   i   (   t
   isinstancet   listt   tupleR   t   append(   t   itemst   rvt   item(    (    sK   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt   _remove_numbers   s    't   linet   namet    t   source_linesi    i   t   loadnames   Source or debug neededs   <unknown filename>s   /templates/ii   i   t   filenamet   abs_patht   pre_contextt   context_linet   linenot   post_contextt   templatet   culprit(   t   NoneR
   t   getattrt   reloadt	   enumerateR   t	   TypeErrort   splitt   maxt   ost   patht   basename(   t   sourcet   debugR   R   R   R   t   numR   t   origint   startt   endR   R   t   uptot   nextR   R   R   (    (    sK   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt   get_data_from_template   sP    	


	
	 c         C@  s   t  j r( d |  j k r( |  j d } np d |  j k rG |  j d } nQ |  j d } t |  j d  } | |  j   r| d p d k r d | | f } n  | S(   s]   
    A reimplementation of Django's get_host, without the
    SuspiciousOperation check.
    t   HTTP_X_FORWARDED_HOSTt	   HTTP_HOSTt   SERVER_NAMEt   SERVER_PORTt   443t   80s   %s:%s(   R   t   USE_X_FORWARDED_HOSTt   METAt   strt	   is_secure(   t   requestt   hostt   server_port(    (    sK   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt   get_hostT   s    	(
   t   __doc__t
   __future__R    R#   t   django.confR   R   R   R.   R<   (    (    (    sK   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/utils.pyt   <module>   s   		<