
    Zis                         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
 n# e$ r  ed          w xY werd dlmZmZ d dlmZ  G d	 d
          Z G d d          ZdS )    N)TYPE_CHECKING)IntegrationEnablingError)VERSION)signalszDjango not installed)AnyDict)WSGIRequestc                   $    e Zd ZdZdZddZd ZdS )DjangoIntegrationz7
    Autocapture errors from a Django application.
    djangoNc                      t           dk     rt          d          | _        d fd	}t          j                            |           d S )N)      z Django 4.2 or newer is required.c                     i }| !t          |                                           }                    t          j                    |           d S N)DjangoRequestExtractorextract_person_datacapture_exception_fnsysexc_info)requestkwargsextra_propsselfs      `/root/projects/butler/venv/lib/python3.11/site-packages/posthog/exception_integrations/django.py_got_request_exceptionz:DjangoIntegration.__init__.<locals>._got_request_exception-   sK     K"4W==QQSS%%clnnkBBBBB    r   )DJANGO_VERSIONr   r   r   got_request_exceptionconnect)r   r   r   s   `  r   __init__zDjangoIntegration.__init__"   sk    F""*+MNNN %9!	C 	C 	C 	C 	C 	C 	%--.DEEEEEr   c                     d S r    r   s    r   	uninstallzDjangoIntegration.uninstall9   s    r   r   )__name__
__module____qualname____doc__
identifierr!   r%   r#   r   r   r   r      sL          JF F F F.    r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )r   c                     || _         d S r   )r   )r   r   s     r   r!   zDjangoRequestExtractor.__init__>   s    r   c                 z   |                                  }|                    d          }|                    d          }d }|r,t          j        d|          }|r|                    d          }i |                                 ||                    d          |                    d          || j        j        dS )NTraceparent
Tracestatezposthog-distinct-id=([^,]+)   zX-Forwarded-Forz
User-Agent)distinct_idip
user_agenttraceparentz$request_path)headersgetresearchgroupuserr   path)r   r5   r4   
tracestater1   matchs         r   r   z*DjangoRequestExtractor.extract_person_dataB   s    ,,.. kk-00[[..
  	- I<jIIE -#kk!nn
iikk
&++/00!++l33&!\.
 
 
 	
r   c                 D   i }t          | j        dd           }||j        s|S 	 t          |j                  }|r|                    d|           n# t          $ r Y nw xY w	 t          |j                  }|r|                    d|           n# t          $ r Y nw xY w|S )Nr:   z$user_idemail)getattrr   is_authenticatedstrpk
setdefault	Exceptionr?   )r   	user_datar:   user_idr?   s        r   r:   zDjangoRequestExtractor.user[   s    $&	t|VT22<t4<	$'llG :$$Z999 	 	 	D		
OOE 5$$We444 	 	 	D	 s#   ,A 
AA#,B 
BBc                 4    t          | j        j                  S r   )dictr   r5   r$   s    r   r5   zDjangoRequestExtractor.headerss   s    DL()))r   N)r&   r'   r(   r!   r   r:   r5   r#   r   r   r   r   =   sP          
 
 
2  0* * * * *r   r   )r7   r   typingr   posthog.exception_integrationsr   r   r   r   django.corer   ImportErrorr   r   django.core.handlers.wsgir	   r   r   r#   r   r   <module>rO      s%   
			 



             C C C C C C;000000####### ; ; ;
"
"#9
:
::;  6        555555               F8* 8* 8* 8* 8* 8* 8* 8* 8* 8*s   # 4