<!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           @@  sำ  d  Z  d d l m Z d d l Z d d l Z d d l m Z d d l m	 Z	 d d l
 m Z d d l m Z d d l m Z d d	 l m Z y d d
 l m Z Wn! e k
 rล d d l m Z n Xd d l m Z d d l m Z m Z d d l m Z d d l m Z m  Z  m! Z! d d l" m# Z# d d l$ m% Z% m& Z& m' Z' d d l( m) Z) d d l* m+ Z+ d Z, e d k  rd   Z- n	 d   Z- d e. f d     YZ/ d   Z0 e) d    Z1 d e f d     YZ2 d S(    sด   
raven.contrib.django.client
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

: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   VERSION(   t   settings(   t   SuspiciousOperation(   t   HttpRequest(   t   TemplateSyntaxError(   t   MultiValueDict(   t   Origin(   t   LoaderOrigin(   t   Client(   t   get_data_from_templatet   get_host(   t   SentryMiddleware(   t   string_typest   binary_typet	   iterlists(   t   RouteResolver(   t   get_headerst   get_environt   get_client_ip(   t   once(   t   breadcrumbst   DjangoClienti   i
   c         C@  s
   |  j    S(   N(   t   is_authenticated(   t   request_user(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR   *   s    c         C@  s   |  j  S(   N(   R   (   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR   -   s    t   _FormatConverterc           B@  s   e  Z d    Z d   Z RS(   c         C@  s   | |  _  g  |  _ d  S(   N(   t   param_mappingt   params(   t   selfR   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   __init__3   s    	c         C@  s    |  j  j |  j j |   d S(   Ns   %s(   R   t   appendR   t   get(   R   t   val(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   __getitem__7   s    (   t   __name__t
   __module__R   R!   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR   1   s   	c         C@  s  g  } t  | t  rF t |  } | r= |  | }  | j } qF d	 } n  xน | pR d
 D]ซ } | d  k ru | j d  qS t  | t  r๋ t  | t  rจ | j d d  } n  t	 |  d k rห | d  d } n  | j d | j
 d d   qS | j t |   qS W|  | f S(   Nt   NULLs   utf-8t   replacei   u   โฆs   '%s't   's   ''(    (    (   t
   isinstancet   dictR   R   t   NoneR   R   R   t   decodet   lenR%   t   repr(   t   sqlR   t   rvt   convt   param(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt
   format_sql<   s$    
	 c          @  sล   y d d l  m }  Wn! t k
 r7 d d l m }  n Xy |  j   |  j  Wn t k
 rb d SXd     f d    d    f d  }   f d   } | |  _ | |  _ t j	 d  d S(	   s9   If installed this causes Django's queries to be captured.i    (   t   CursorWrapperNc         @  s&      f d   } t  j d |  d  S(   Nc         @  sM   t      \ } } | r. | t |  } n  |  j i | d 6d d 6 d  S(   Nt   messaget   queryt   category(   R1   t   tuplet   update(   t   datat   real_sqlt   real_params(   R   R-   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt	   processorg   s    	R;   (   R   t   record(   t   vendort   aliast   startt   durationR-   R   R;   (    (   R   R-   sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt
   record_sqlf   s    
c         @  s>   t  j    | } x' | D] }   |  | | | | |  q Wd  S(   N(   t   time(   R=   R>   R?   R-   t
   param_listR@   R   (   RA   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   record_many_sqls   s    c      
   @  s`   t  j    } z   |  | |  SWd   |  j j t |  j d d   | t  j    | | |  Xd  S(   NR>   (   RB   t   dbR=   t   getattrR)   (   R   R-   R   R?   (   t   real_executeRA   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   executex   s
    c      	   @  sS   t  j    } z   |  | |  SWd   |  j j t |  j d d   | | |  Xd  S(   NR>   (   RB   RE   R=   RF   R)   (   R   R-   RC   R?   (   t   real_executemanyRD   (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   executemany   s
    s   django.db.backends(
   t   django.db.backends.utilsR2   t   ImportErrort   django.db.backends.utilRH   RJ   t   AttributeErrorR)   R   t   ignore_logger(   R2   RH   RJ   (    (   RG   RI   RD   RA   sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   install_sql_hookV   s     				c           B@  sb   e  Z e j d   Z e   Z d   Z d   Z d   Z	 d   Z
 d   Z d d  Z d   Z RS(	   s   sentry.errors.client.djangoc         O@  s<   | j  d t  } t j |  | |  | r8 |  j   n  d  S(   NRP   (   t   popt   TrueR	   R   RP   (   R   t   argst   kwargsRP   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR      s    c         C@  s   t    d  S(   N(   RP   (   R   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyRP      s    c         C@  sื   i t  | j  d 6} t | d d   } | d  k r8 | Sy t |  } | sQ | S| j | d <t | d  r} | j | d <n  t | d  r | j   | d <n t | d  rพ | j	 | d <n  Wn t
 k
 rา n X| S(   Nt
   ip_addresst   usert   idt   emailt   get_usernamet   username(   R   t   METARF   R)   R   t   pkt   hasattrRX   RY   RZ   t	   Exception(   R   t   requestt	   user_infoRV   t   authenticated(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   get_user_info   s&    c         C@  sฑ  i  } |  j  |  | d <y | j   } WnN t k
 ry | j   rN d } n d } t |  } d | | | j f } n X| j d k r)y | j } Wq/t k
 r%y | j	 } Wq&t k
 r!y | j
 pา d } Wn t k
 r๏ d } q"Xt | t  r"t d   t |  D  } q"q&Xq/Xn d  } | j } | j i i | j d	 6| d
 6| j j d  d 6| d 6t | j  d 6t t |   d 6t t |   d 6d 6 | S(   NRV   t   httpst   https	   %s://%s%st   GETt   HEADs   <unavailable>c         s@  s=   |  ]3 \ } } | t  |  d  k r. | d n | f Vq d S(   i   i    N(   R+   (   t   .0t   kt   v(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pys	   <genexpr>ุ   s   t   methodt   urlt   QUERY_STRINGt   query_stringR8   t   cookiest   headerst   envR_   (   Re   Rf   (   Rb   t   build_absolute_uriR   t	   is_secureR   t   pathRj   t   bodyR^   t   raw_post_datat   POSTR'   R   R(   R   R)   R[   R7   R   t   COOKIESR   R   (   R   R_   t   resultt   urit   schemet   hostR8   t   environ(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   get_data_from_requestธ   sJ    	
!		
c   	      O@  s  t  t |   j | |   } xN |  j |  D]= } | j d  } | sL q+ n  | j d  r+ t | d <q+ q+ W|  j rd t j	 k ryI d d l
 m } | j j   } | j pถ | j } | d j d |  Wqt k
 ry | d j d t j  Wqt k
 rqXqXn  | S(	   Nt   modules   django.t   in_apps   django.contrib.sitesi    (   t   Sitet   tagst   site(   t   superR   t	   build_msgt   _iter_framesR   t
   startswitht   FalseR   R   t   INSTALLED_APPSt   django.contrib.sites.modelsR   t   objectst   get_currentt   namet   domaint
   setdefaultR^   t   SITE_IDRN   (	   R   RS   RT   R8   t   frameR~   R   R   t	   site_name(    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR   ํ   s&    c   
      K@  sผ  d | k r i  | d <} n
 | d } | d  k rK t t j d d   } n  t | t  } | ry | j |  j |   n  | j d  re| d d } t	 | d  s๚ t | t
  r๋ t t | d d   t t f  r๋ t | j d t  s๚ t	 | d  ret | d t | d d    } t | d d   } | d  k rI|  j j d	  n  | j t | |   qen  t t |   j | |  }	 | rธ|	 rธi | j d
 |  j j  d 6|	 d 6| _ n  |	 S(   NR8   R_   t   exc_infoi   t   django_template_sourcet   sourcei    t   template_debugs,   Unable to get template source from exceptiont   projectt
   project_idRW   (   R)   RF   R   t   threadR'   R   R7   R}   R   R]   R   R6   t   listR   R   t   loggert   infoR
   R   R   t   capturet   remoteR   t   sentry(
   R   t
   event_typeR_   RT   R8   t   is_http_requestt	   exc_valueR   t   debugRx   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR     s8    
	c         C@  s   |  j  j | j  S(   N(   t   resolvert   resolveRs   (   R   R_   (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   get_transaction_from_request4  s    N(   R"   R#   t   loggingt	   getLoggerR   R   Rฃ   R   RP   Rb   R}   R   R)   R   Rฅ   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyR      s   					5	,(   R   (   i   i
   (3   t   __doc__t
   __future__R    RB   Rฆ   t   djangoR   t   DJANGO_VERSIONt   django.confR   t   django.core.exceptionsR   t   django.httpR   t   django.templateR   t   django.utils.datastructuresR   t   django.template.baseR   RL   t   django.template.loaderR   t
   raven.baseR	   t   raven.contrib.django.utilsR
   R   t   raven.contrib.django.middlewareR   t   raven.utils.compatR   R   R   t   raven.contrib.django.resolverR   t   raven.utils.wsgiR   R   R   t   raven.utilsR   t   ravenR   t   __all__R   t   objectR   R1   RP   R   (    (    (    sL   /opt/alt/python27/lib/python2.7/site-packages/raven/contrib/django/client.pyt   <module>   s:   		7