?????????? ????????? - ??????????????? - /opt/imunify360/venv/lib/python3.11/site-packages/sentry_sdk/integrations/django/__pycache__/__init__.cpython-311.pyc
???????
� ��-�͡�0� � � d dl mZ d dlZd dlZd dlZd dlmZ d dlmZm Z d dl mZ d dlm Z d dlmZ d dlmZmZmZmZmZmZmZ d d lmZmZ d d lmZ d dlmZ d dlm Z d d l!m"Z# d dl$m%Z% d dl&m'Z' n# e($ r d dl)m'Z' Y nw xY wn# e($ r ed� � �w xY wd dl*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 erNd dl2m3Z3 d dl2m4Z4 d dl2m5Z5 d dl2m6Z6 d dl2m7Z7 d dl2m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z> d dl?m@Z@ d dlmAZA d d lmBZBmCZCmDZDmEZE e#d!k rd"� ZFnd#� ZFd$ZG G d%� d&e� � ZHd'aI ejJ � � ZKd(� ZLd)� ZMd*� ZNd+� ZOd,� ZPd-� ZQd3d.�ZR G d/� d0e � � ZSd1� ZTd2� ZUdS )4� )�absolute_importN)�MYPY)�Hub�_should_send_default_pii)�add_global_event_processor)�add_global_repr_processor)�record_sql_queries)�HAS_REAL_CONTEXTVARS�CONTEXTVARS_ERROR_MESSAGE�logger�capture_internal_exceptions�event_from_exception�transaction_from_function�walk_exception_chain)�Integration�DidNotEnable)� ignore_logger)�SentryWsgiMiddleware)�RequestExtractor)�VERSION)�signals)�resolvezDjango not installed)�LEGACY_RESOLVER)�!get_template_frame_from_exception)�patch_django_middlewares)�patch_views)�Any)�Callable)�Dict)�Optional)�Union)�List)�WSGIRequest)�HttpResponse)� QueryDict)�MultiValueDict)�_ScopedResponse)�Event�Hint�EventProcessor�NotImplementedType)� � c �* � | � � � S �N��is_authenticated��request_users ��/builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib/python3.11/site-packages/sentry_sdk/integrations/django/__init__.pyr1 r1 @ s � ��,�,�.�.�.� c � � | j S r/ r0 r2 s r4 r1 r1 G s � ��,�,r5 )� function_name�urlc �8 � e Zd ZdZdZdZdd�Zed� � � ZdS )�DjangoIntegration�djangoNr8 Tc �j � |t vrt d|�dt �d�� � �|| _ || _ d S )Nz%Invalid value for transaction_style: z (must be in �))�TRANSACTION_STYLE_VALUES� ValueError�transaction_style�middleware_spans)�selfr@ rA s r4 �__init__zDjangoIntegration.__init__U sR � ��$<�<�<��*�$�$�$�&>�&>�&>�@�� � � "3��� 0����r5 c �� ��� t dk rt d� � �t � � t d� � t d� � ddlm� �j ���fd�} | �_ t � � t � � t j � t � � t d� � � }t d � � � }t � � t! � � t# � � d S ) N)r, � z Django 1.6 or newer is required.z django.serverzdjango.requestr )�WSGIHandlerc �� �� t j � t � � � �| ||� � S �� | �� � } t |� � ||� � S r/ )r �current�get_integrationr: �__get__r )rB �environ�start_response� bound_old_apprF �old_apps ��r4 �sentry_patched_wsgi_handlerzADjangoIntegration.setup_once.<locals>.sentry_patched_wsgi_handlerq s\ �� ��{�*�*�+<�=�=�E��w�t�W�n�=�=�=�#�O�O�D�+�>�>�M�6�'� �6�6�w��O�O�Or5 c � � |�| S |� dd � � }|�| S | � dd � � }|�| S |� dd � � }|�| S t t |� � t |� � � � D ]�\ }\ }}}t |� � }|��|� di � � � dg � � }t t t |� � � � � � D ]A} || } | � d� � dv r | � d� � d k r| d z } n�Bt |� � } |� | |� � ��| S )N�exc_info� exception�values� stacktrace�frames�function)zParser.parse�parse�render�modulezdjango.template.baser, )�get�zip�reversedr r �range�len�insert)�event�hintrQ rR rS �_� exc_value�framerU �i�fs r4 �process_django_templatesz>DjangoIntegration.setup_once.<locals>.process_django_templates� sj � � �|����x�x� �D�1�1�H������ � �+�t�4�4�I�� ����]�]�8�T�2�2�F��~���03��� � �"6�x�"@�"@�1� 1� ,� ,�,� �,�A�y�!� :�)�D�D���$�&�]�]�<��<�<�@�@��2�N�N�F�%�e�C��K�K�&8�&8�9�9� (� (��"�1�I���E�E�*�-�-�1T�T�T� !���h���3I� I� I���F�A�!�E����K�K���M�M�!�U�+�+�+���Lr5 c �� � ddl m} n# t $ r t cY S w xY wt | |� � r| j rt S d| j j | j t | � � fz S )Nr )�QuerySetz<%s from %s at 0x%x>) �django.db.models.queryri � Exception�NotImplemented� isinstance� _result_cache� __class__�__name__� __module__�id)�valuera ri s r4 �_django_queryset_reprz;DjangoIntegration.setup_once.<locals>._django_queryset_repr� s� � � &� <�;�;�;�;�;�;��� &� &� &�%�%�%�%� &���� �e�X�.�.� &�%�2E� &�%�%� +���(�� ��5� � �.� � s � ��)�DJANGO_VERSIONr �install_sql_hookr �django.core.handlers.wsgirF �__call__�_patch_get_response�_patch_django_asgi_handlerr �got_request_exception�connect�_got_request_exceptionr r �_patch_channelsr r )rO rg rt rF rN s @@r4 � setup_oncezDjangoIntegration.setup_once_ s! ��� � �F�"�"��A�B�B�B����� �o�&�&�&��&�'�'�'�9�9�9�9�9�9��&�� P� P� P� P� P� P� ;�������"�$�$�$��%�-�-�.D�E�E�E� #�( � ( � $� #�( �T #� � � #� "� �6 ���� �"�"�"�� � � � � r5 )r8 T) rp rq �__qualname__� identifierr@ rA rC �staticmethodr � r5 r4 r: r: O sY � � � � � ��J�����1� 1� 1� 1� �k� k� �\�k� k� kr5 r: Fc �* �� t rdS t 5 t r ddd� � dS da t � � 5 ddlm} | j ��fd�}|| _ n# t $ r Y nw xY wddd� � n# 1 swxY w Y ddd� � dS # 1 swxY w Y dS )a� Patch Django Rest Framework for more/better request data. DRF's request type is a wrapper around Django's request type. The attribute we're interested in is `request.data`, which is a cached property containing a parsed request body. Reading a request body from that property is more reliable than reading from any of Django's own properties, as those don't hold payloads in memory and therefore can only be accessed once. We patch the Django request object to include a weak backreference to the DRF request object, such that we can later use either in `DjangoRequestExtractor`. This function is not called directly on SDK setup, because importing almost any part of Django Rest Framework will try to access Django settings (where `sentry_sdk.init()` might be called from in the first place). Instead we run this function on every request and do the patching on the first request. NTr )�APIViewc � �� t � � 5 t j |� � |j _ d d d � � n# 1 swxY w Y �| |g|�R i |��S r/ )r �weakref�ref�_request�_sentry_drf_request_backref)rB �request�args�kwargs�old_drf_initials �r4 �sentry_patched_drf_initialz._patch_drf.<locals>.sentry_patched_drf_initial� s� �� �4�6�6� � �GN�{�#�H� H��(�D� � � � � � � � � � � � ���� � � � � +�?�4��J�4�J�J�J�6�J�J�Js �<�A �A )�_DRF_PATCHED�_DRF_PATCH_LOCKr �rest_framework.viewsr� �initial�ImportError)r� r� r� s @r4 � _patch_drfr� � s� �� �. � ��� � =� =�� ��=� =� =� =� =� =� =� =� �� (� *� *� =� =� =�8�8�8�8�8�8� #*�/��K� K� K� K� K� #=����� � � � ��� ���� =� =� =� =� =� =� =� =� =� =� =���� =� =� =� =�=� =� =� =� =� =� =� =� =� =� =� =���� =� =� =� =� =� =s\ � B�B�A0�A� A0� A!�A0� A!�!A0�$B�0A4 �4B�7A4 �8B�B�Bc � � ddl m} n# t $ r Y d S w xY wt st j dt z � � ddlm} || � � d S )Nr )�AsgiHandlerz3We detected that you are using Django channels 2.0.)� patch_channels_asgi_handler_impl) � channels.httpr� r� r r �warningr �#sentry_sdk.integrations.django.asgir� )r� r� s r4 r~ r~ s� � ��-�-�-�-�-�-�-��� � � �������� � � ��A�'� (� � � � U�T�T�T�T�T�$�$�[�1�1�1�1�1� � � �c � � ddl m} n# t $ r Y d S w xY wt st j dt z � � ddlm} || � � d S )Nr )�ASGIHandlerz(We detected that you are using Django 3.)�patch_django_asgi_handler_impl) �django.core.handlers.asgir� r� r r r� r r� r� )r� r� s r4 rz rz " s� � ��9�9�9�9�9�9�9��� � � �������� � � ��6�9R�R� � � � S�R�R�R�R�R�"�"�;�/�/�/�/�/r� c � � t j }|� t � � }|�d S t � � |� � � 5 } |j dk r,t t | j � � j � � |_ n)|j dk rt j | j � � |_ n# t $ r Y nw xY w|� t t! j | � � |� � � � d d d � � d S # 1 swxY w Y d S )Nr7 r8 )r rH rI r: r� �configure_scoper@ r r �path�func�transactionr rk �add_event_processor�_make_event_processorr� r� )r� �hub�integration�scopes r4 �_before_get_responser� 8 sS � � �+�C��%�%�&7�8�8�K������L�L�L� � � � � � �%� ��,��?�?�$=��G�L�)�)�.�%� %��!�!� �.�%�7�7�$3�$;�G�L�$I�$I��!���� � � ��D� ���� �!�!�!�'�+�g�"6�"6��D�D� � � � � � � � � � � � � � � ���� � � � � � s7 � D�A B0�/D�0 B=�:D�<B=�=8D�D� Dc � �� ddl m} | j ��fd�}|| _ t | d� � rddlm} || t � � dS dS )zU patch get_response, because at that point we have the Django request object r )�BaseHandlerc �: �� t |� � �| |� � S r/ )r� )rB r� �old_get_responses �r4 �sentry_patched_get_responsez8_patch_get_response.<locals>.sentry_patched_get_response[ s$ �� ��W�%�%�%����g�.�.�.r5 �get_response_async)�patch_get_response_asyncN)�django.core.handlers.baser� �get_response�hasattrr� r� r� )r� r� r� r� s @r4 ry ry R s� �� � 6�5�5�5�5�5�"�/��/� /� /� /� /� ;�K���{�0�1�1� D�P�P�P�P�P�P� � ��.B�C�C�C�C�C�D� Dr5 c � � � � fd�}|S )Nc � �� �� � }|�| S |� � � }|�|}n# t $ r Y nw xY wt � � 5 t |� � � | � � d d d � � n# 1 swxY w Y t � � r6t � � 5 t || � � d d d � � n# 1 swxY w Y | S r/ )r� �AttributeErrorr �DjangoRequestExtractor�extract_into_eventr �_set_user_info)r` ra r� �drf_request�weak_requests �r4 �event_processorz._make_event_processor.<locals>.event_processorj st �� � �,�.�.���?��L� �!�=�=�?�?�K��&�%����� � � ��D� ���� )� *� *� F� F�"�7�+�+�>�>�u�E�E�E� F� F� F� F� F� F� F� F� F� F� F���� F� F� F� F� $�%�%� /�,�.�.� /� /��w��.�.�.� /� /� /� /� /� /� /� /� /� /� /���� /� /� /� /� �s0 �* � 7�7�#A7�7A;�>A;�B;�;B?�B?r� )r� r� r� s ` r4 r� r� h s$ �� �� � � � �2 �r5 c �� � t j }|� t � � }|�N|j }t t j � � |j ddd��� � \ }}|� ||�� � d S d S )Nr; F)�type�handled)�client_options� mechanism)ra ) r rH rI r: �clientr �sysrQ �options� capture_event)r� r� r� r� r� r` ra s r4 r} r} � s� � � �+�C��%�%�&7�8�8�K��� ���*��L�N�N�!�>�'�E�:�:� � � ���t� ���%�d��+�+�+�+�+� �r5 c �8 � e Zd Zd� Zd� Zd� Zd� Zd� Zd� Zd� Z dS ) r� c � � | j j S r/ )r� �META�rB s r4 �envzDjangoRequestExtractor.env� � � ��|� � r5 c � � | j j S r/ )r� �COOKIESr� s r4 �cookieszDjangoRequestExtractor.cookies� s � ��|�#�#r5 c � � | j j S r/ )r� �bodyr� s r4 �raw_datazDjangoRequestExtractor.raw_data� r� r5 c � � | j j S r/ )r� �POSTr� s r4 �formzDjangoRequestExtractor.form� r� r5 c � � | j j S r/ )r� �FILESr� s r4 �fileszDjangoRequestExtractor.files� s � ��|�!�!r5 c � � |j S r/ )�size)rB �files r4 �size_of_filez#DjangoRequestExtractor.size_of_file� s � ��y�r5 c �d � | j j S # t $ r t j | � � cY S w xY wr/ )r� �datar� r �parsed_bodyr� s r4 r� z"DjangoRequestExtractor.parsed_body� sD � � 6��<�$�$��� 6� 6� 6�#�/��5�5�5�5�5� 6���s � �/�/N) rp rq r� r� r� r� r� r� r� r� r� r5 r4 r� r� � s} � � � � � �!� !� !�$� $� $�!� !� !�!� !� !�"� "� "�� � �6� 6� 6� 6� 6r5 r� c � � |� di � � }t | dd � � }|�t |� � sd S |� dt |j � � � � n# t $ r Y nw xY w |� d|j � � n# t $ r Y nw xY w |� d|� � � � � d S # t $ r Y d S w xY w)N�userrr �email�username)� setdefault�getattrr1 �str�pkrk r� �get_username)r� r` � user_infor� s r4 r� r� � s � �� � ���,�,�I��7�F�D�)�)�D��|�+�D�1�1�|��� ����T�3�t�w�<�<�0�0�0�0��� � � ��� ���� ����W�d�j�1�1�1�1��� � � ��� ���� ����Z��):�):�)<�)<�=�=�=�=�=��� � � ���� ���s5 �(A% �% A2�1A2�6B � B�B�#(C � C�Cc �� ��� ddl m} n# t $ r ddlm} Y nw xY w | j �| j �n# t $ r Y dS w xY wd�fd� }�fd�}|| _ || _ t d� � dS )z9If installed this causes Django's queries to be captured.r )� CursorWrapperNc �� �� t j }|� t � � � �| ||� � S t || j ||dd�� � 5 �| ||� � cd d d � � S # 1 swxY w Y d S )N�formatF�� paramstyle�executemany�r rH rI r: r �cursor)rB �sql�paramsr� �real_executes �r4 �executez!install_sql_hook.<locals>.execute� s� �� ��k�����0�1�1�9��<��c�6�2�2�2� ����c�6�h�E� � � � 3� 3� �<��c�6�2�2� 3� 3� 3� 3� 3� 3� 3� 3� 3� 3� 3� 3���� 3� 3� 3� 3� 3� 3� � A)�)A-�0A-c �� �� t j }|� t � � � �| ||� � S t || j ||dd�� � 5 �| ||� � cd d d � � S # 1 swxY w Y d S )Nr� Tr� r� )rB r� � param_listr� �real_executemanys �r4 r� z%install_sql_hook.<locals>.executemany� s� �� ��k�����0�1�1�9�#�#�D�#�z�:�:�:� ����c�:�(�PT� � � � ;� ;� $�#�D�#�z�:�:� ;� ;� ;� ;� ;� ;� ;� ;� ;� ;� ;� ;���� ;� ;� ;� ;� ;� ;r� zdjango.db.backendsr/ )�django.db.backends.utilsr� r� �django.db.backends.utilr� r� r� r )r� r� r� r� r� s @@r4 rv rv � s� ��� �:�:�:�:�:�:�:�:��� :� :� :�9�9�9�9�9�9�9�9�:�����$�,��(�4����� � � �������� 3� 3� 3� 3� 3� 3� ;� ;� ;� ;� ;� $�M�� +�M���&�'�'�'�'�'s � ���1 � ?�?r/ )V� __future__r r� � threadingr� �sentry_sdk._typesr �sentry_sdk.hubr r �sentry_sdk.scoper �sentry_sdk.serializerr �sentry_sdk.tracingr �sentry_sdk.utilsr r r r r r r �sentry_sdk.integrationsr r �sentry_sdk.integrations.loggingr �sentry_sdk.integrations.wsgir �$sentry_sdk.integrations._wsgi_commonr r; r ru �django.corer �django.urlsr r� �django.core.urlresolvers�+sentry_sdk.integrations.django.transactionsr �(sentry_sdk.integrations.django.templatesr �)sentry_sdk.integrations.django.middlewarer �$sentry_sdk.integrations.django.viewsr �typingr r r r r! r"