<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</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/iÿÿÿÿi   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   		<