
    Kis                         S SK r S SKrS SKJr  S SKJr   S SKJr  S SK	J
r
  \(       a  S SKJrJr  S SKJr   " S	 S
5      r " S S5      rg! \ a	    \" S5      ef = f)    N)TYPE_CHECKING)IntegrationEnablingError)VERSION)signalszDjango not installed)AnyDict)WSGIRequestc                   ,    \ rS rSrSrSrSS jrS rSrg)	DjangoIntegration   z/
Autocapture errors from a Django application.
djangoNc                    ^  [         S:  a  [        S5      eUT l        SU 4S jjn[        R                  R                  U5        g )N)      z Django 4.2 or newer is required.c                    > 0 nU b  [        U 5      R                  5       nTR                  [        R                  " 5       U5        g N)DjangoRequestExtractorextract_person_datacapture_exception_fnsysexc_info)requestkwargsextra_propsselfs      g/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/posthog/exception_integrations/django.py_got_request_exception:DjangoIntegration.__init__.<locals>._got_request_exception-   s9     K"4W=QQS%%cllnkB    r   )DJANGO_VERSIONr   r   r   got_request_exceptionconnect)r   r   r   s   `  r   __init__DjangoIntegration.__init__"   s>    F"*+MNN %9!	C 	%%--.DEr   c                     g r    r   s    r   	uninstallDjangoIntegration.uninstall9   s    r   )r   r   )	__name__
__module____qualname____firstlineno____doc__
identifierr#   r(   __static_attributes__r&   r   r   r   r      s     JF.r   r   c                   ,    \ rS rSrS rS rS rS rSrg)r   =   c                     Xl         g r   r   )r   r   s     r   r#   DjangoRequestExtractor.__init__>   s    r   c                 n   U R                  5       nUR                  S5      nUR                  S5      nS nU(       a/  [        R                  " SU5      nU(       a  UR	                  S5      n0 U R                  5       EUUR                  S5      UR                  S5      UU R                  R                  S.E$ )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   r>   r=   
tracestater:   matchs         r   r   *DjangoRequestExtractor.extract_person_dataB   s    ,,. kk-0[[.
  II<jIE#kk!n
iik
&++/0!++l3&!\\..
 	
r   c                 b   0 n[        U R                  SS 5      nUb  UR                  (       d  U$  [        UR                  5      nU(       a  UR                  SU5         [        UR                  5      nU(       a  UR                  SU5        U$ ! [         a     N=f = f! [         a     U$ f = f)NrC   z$user_idemail)getattrr   is_authenticatedstrpk
setdefault	ExceptionrI   )r   	user_datarC   user_idrI   s        r   rC   DjangoRequestExtractor.user[   s    $&	t||VT2<t44	$''lG$$Z9	

OE$$We4   		  		s#   .B  .B  
BB 
B.-B.c                 @    [        U R                  R                  5      $ r   )dictr   r>   r'   s    r   r>   DjangoRequestExtractor.headerss   s    DLL(())r   r4   N)	r*   r+   r,   r-   r#   r   rC   r>   r0   r&   r   r   r   r   =   s    
20*r   r   )r@   r   typingr   posthog.exception_integrationsr   r   r   r    django.corer   ImportErrorr   r   django.core.handlers.wsgir	   r   r   r&   r   r   <module>r[      s\    
 
   C;0#  5   F8* 8*[  ;
"#9
::;s   A A