Ë
    ¹ûàgÝ9  ã                   óþ   — d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d
dlmZ  ej4                  d«      Z G d„ d«      Zd„ Z ej<                  e«       y)é    N)Úasync_to_syncÚiscoroutinefunctionÚsync_to_async)Úsettings)ÚImproperlyConfiguredÚMiddlewareNotUsed)Úrequest_finished)ÚconnectionsÚtransaction)Úget_resolverÚset_urlconf)Úlog_response)Úimport_stringé   )Úconvert_exception_to_responsezdjango.requestc                   ód   — e Zd ZdZdZdZdZdd„Z	 	 	 dd„Zd„ Z	d„ Z
d„ Zd„ Zd„ Zdd	„Zd
„ Zd„ Zy)ÚBaseHandlerNc           	      óV  — g | _         g | _        g | _        |r| j                  n| j                  }t        |«      }|}t        t        j                  «      D �]V  }t        |«      }t        |dd«      }t        |dd«      }|s|st        d|z  «      ‚|s|rd}	n|}		 | j                  |	||t        j                  d|z  ¬«      }
 ||
«      }|
}|€t%        d|z  «      ‚t'        |d«      r6| j                   j)                  d| j                  ||j*                  «      «       t'        |d«      r5| j                  j-                  | j                  ||j.                  «      «       t'        |d«      r5| j                  j-                  | j                  d|j0                  «      «       t        |«      }|	}�ŒY | j                  |||«      }|| _        y
# t        $ rT}t        j                  r9t        |«      rt         j#                  d||«       nt         j#                  d	|«       Y d
}~�ŒÍd
}~ww xY w)zš
        Populate middleware lists from settings.MIDDLEWARE.

        Must be called after the environment is fixed (see __call__ in subclasses).
        Úsync_capableTÚasync_capableFzOMiddleware %s must have at least one of sync_capable/async_capable set to True.zmiddleware %s)ÚdebugÚnamezMiddlewareNotUsed(%r): %szMiddlewareNotUsed: %rNz$Middleware factory %s returned None.Úprocess_viewr   Úprocess_template_responseÚprocess_exception)Ú_view_middlewareÚ_template_response_middlewareÚ_exception_middlewareÚ_get_response_asyncÚ_get_responser   Úreversedr   Ú
MIDDLEWAREr   ÚgetattrÚRuntimeErrorÚadapt_method_modeÚDEBUGr   ÚstrÚloggerr   r   ÚhasattrÚinsertr   Úappendr   r   Ú_middleware_chain)ÚselfÚis_asyncÚget_responseÚhandlerÚhandler_is_asyncÚmiddleware_pathÚ
middlewareÚmiddleware_can_syncÚmiddleware_can_asyncÚmiddleware_is_asyncÚadapted_handlerÚmw_instanceÚexcs                úW/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/core/handlers/base.pyÚload_middlewarezBaseHandler.load_middleware   s>  € ð !#ˆÔØ-/ˆÔ*Ø%'ˆÔ"á3;�t×/Ò/À×ASÑASˆÜ/°Ó=ˆØ#ÐÜ'¬×(;Ñ(;Ó<ó 9	3ˆOÜ& Ó7ˆJÜ")¨*°nÀdÓ"KÐÜ#*¨:°ÈÓ#NÐ Ù&Ñ/CÜ"ð>Ø@OñPóð ñ &Ñ*=Ø&+Ñ#à&:Ð#ð*à"&×"8Ñ"8Ø'ØØ$Ü"Ÿ.™.Ø(¨?Ñ:ð #9ó #�ñ )¨Ó9�ð *�àÐ"Ü*Ø:¸_ÑLóð ô �{ NÔ3Ø×%Ñ%×,Ñ,ØØ×*Ñ*¨8°[×5MÑ5MÓNôô �{Ð$?Ô@Ø×2Ñ2×9Ñ9Ø×*Ñ*Ø  +×"GÑ"Góôô
 �{Ð$7Ô8ð ×*Ñ*×1Ñ1Ø×*Ñ*¨5°+×2OÑ2OÓPôô 4°KÓ@ˆGØ2Òðs9	3ðx ×(Ñ(¨°7Ð<LÓMˆð ")ˆÕøôQ %ò Ü—>’>Ü˜3”xÜŸ™Ð%@À/ÐSVÕWäŸ™Ð%<¸oÔNÝûðús   Â/GÇ	H(ÇA	H#È#H(c                 óî   — |€t        |«      }|r|s|xs d|j                  z  }|r)|s%|rt        j                  d|«       t	        |d¬«      S |S |r#|rt        j                  d|«       t        |«      S |S )a\  
        Adapt a method to be in the correct "mode":
        - If is_async is False:
          - Synchronous methods are left alone
          - Asynchronous methods are wrapped with async_to_sync
        - If is_async is True:
          - Synchronous methods are wrapped with sync_to_async()
          - Asynchronous methods are left alone
        zmethod %s()z#Synchronous handler adapted for %s.T©Úthread_sensitivez$Asynchronous handler adapted for %s.)r   Ú__qualname__r(   r   r   r   )r-   r.   ÚmethodÚmethod_is_asyncr   r   s         r:   r%   zBaseHandler.adapt_method_modeh   s�   € ð" Ð"Ü1°&Ó9ˆOÙ™ØÒ>˜=¨6×+>Ñ+>Ñ>ˆDÙÙ"ÙÜ—L‘LÐ!FÈÔMÜ$ V¸dÔCÐCð
 ˆñ	 ÙÜ—‘ÐCÀTÔJÜ  Ó(Ð(Øˆó    c                 ó
  — t        t        j                  «       | j                  |«      }|j                  j                  |j                  «       |j                  dk\  r$t        d|j                  |j                  ||¬«       |S )z8Return an HttpResponse object for the given HttpRequest.é�  ú%s: %s©ÚresponseÚrequest)r   r   ÚROOT_URLCONFr,   Ú_resource_closersr+   ÚcloseÚstatus_coder   Úreason_phraseÚpath©r-   rH   rG   s      r:   r/   zBaseHandler.get_responseˆ   sp   € ô 	”H×)Ñ)Ô*Ø×)Ñ)¨'Ó2ˆØ×"Ñ"×)Ñ)¨'¯-©-Ô8Ø×Ñ 3Ò&ÜØØ×&Ñ&Ø—‘Ø!Øõð ˆrB   c              ƒ   óR  K  — t        t        j                  «       | j                  |«      ƒ d{  –—† }|j                  j                  |j                  «       |j                  dk\  r8 t        t        d¬«      d|j                  |j                  ||¬«      ƒ d{  –—†  |S 7 Œr7 Œ­w)zè
        Asynchronous version of get_response.

        Funneling everything, including WSGI, into a single async
        get_response() is too slow. Avoid the context switch by using
        a separate async response path.
        NrD   Fr=   rE   rF   )r   r   rI   r,   rJ   r+   rK   rL   r   r   rM   rN   rO   s      r:   Úget_response_asynczBaseHandler.get_response_async˜   s•   è ø€ ô 	”H×)Ñ)Ô*Ø×/Ñ/°Ó8×8ˆØ×"Ñ"×)Ñ)¨'¯-©-Ô8Ø×Ñ 3Ò&ØE”-¤¸uÔEØØ×&Ñ&Ø—‘Ø!Øô÷ ð ð ˆð 9øðús"   ‚.B'°B#±A+B'ÂB%ÂB'Â%B'c                 ó¸  — d}| j                  |«      \  }}}| j                  D ]  } |||||«      }|sŒ n |€4| j                  |«      }t        |«      rt	        |«      }	  ||g|¢­i |¤Ž}| j                  ||«       t        |d«      rwt        |j                  «      rb| j                  D ]@  } |||«      }| j                  |||j                  j                  j                  ›d�¬«       ŒB 	 |j                  «       }|S |S # t
        $ r}| j                  ||«      }|€‚ Y d}~Œºd}~ww xY w# t
        $ r }| j                  ||«      }|€‚ Y d}~|S d}~ww xY w)úÉ
        Resolve and call the view, then apply view, exception, and
        template_response middleware. This method is everything that happens
        inside the request/response middleware.
        NÚrenderú.process_template_response©r   )Úresolve_requestr   Úmake_view_atomicr   r   Ú	ExceptionÚprocess_exception_by_middlewareÚcheck_responser)   ÚcallablerT   r   Ú__self__Ú	__class__Ú__name__©	r-   rH   rG   ÚcallbackÚcallback_argsÚcallback_kwargsÚmiddleware_methodÚwrapped_callbackÚes	            r:   r    zBaseHandler._get_response®   s¡  € ð ˆØ37×3GÑ3GÈÓ3PÑ0ˆ�- ð "&×!6Ñ!6ò 	ÐÙ(Ø˜ =°/óˆHò Ùð	ð ÐØ#×4Ñ4°XÓ>Ðä"Ð#3Ô4Ü#0Ð1AÓ#BÐ ðÙ+¨GÐW°mÒWÀÑW�ð 	×Ñ˜H hÔ/ô �8˜XÔ&¬8°H·O±OÔ+DØ%)×%GÑ%Gò 	Ð!Ù,¨W°hÓ?�ð ×#Ñ#ØØ%à(×1Ñ1×;Ñ;×DÓDðGð $õ ð		ðØ#Ÿ?™?Ó,�ð ˆˆxˆøô9 ò Ø×?Ñ?ÀÀ7ÓK�ØÐ#Øô $ûðûô. ò Ø×?Ñ?ÀÀ7ÓK�ØÐ#Øó $ð ˆûðús0   Á"D Ã1D0 Ä	D-ÄD(Ä(D-Ä0	EÄ9EÅEc              ƒ   ó   K  — d}| j                  |«      \  }}}| j                  D ]  } |||||«      ƒ d{  –—† }|sŒ n |€>| j                  |«      }t        |«      st	        |d¬«      }	  ||g|¢­i |¤Žƒ d{  –—† }| j                  ||«       t        |d«      r¿t        |j                  «      rª| j                  D ]H  } |||«      ƒ d{  –—† }| j                  |||j                  j                  j                  ›d�¬«       ŒJ 	 t        |j                  «      r|j                  «       ƒ d{  –—† }n$ t	        |j                  d¬«      «       ƒ d{  –—† }t        j                   |«      rt#        d«      ‚|S 7 �ŒJ7 �Œ# t
        $ r5} t	        | j                  d¬«      ||«      ƒ d{  –—†7  }|€‚ Y d}~�Œ>d}~ww xY w7 Œ÷7 Œ”7 Œq# t
        $ r4} t	        | j                  d¬«      ||«      ƒ d{  –—†7  }|€‚ Y d}~Œ§d}~ww xY w­w)rS   NTr=   rT   rU   rV   zResponse is still a coroutine.)rW   r   rX   r   r   rY   rZ   r[   r)   r\   rT   r   r]   r^   r_   ÚasyncioÚiscoroutiner$   r`   s	            r:   r   zBaseHandler._get_response_asyncä   s\  è ø€ ð ˆØ37×3GÑ3GÈÓ3PÑ0ˆ�- ð "&×!6Ñ!6ò 	ÐÙ.Ø˜ =°/ó÷ ˆHò Ùð	ð ÐØ#×4Ñ4°XÓ>Ðä&Ð'7Ô8Ü#0Ø$°tô$Ð ð
Ù!1Øð"Ø+ò"Ø/>ñ"÷ �ð 	×Ñ˜H hÔ/ô �8˜XÔ&¬8°H·O±OÔ+DØ%)×%GÑ%Gò 	Ð!Ù!2°7¸HÓ!E×E�ð ×#Ñ#ØØ%à(×1Ñ1×;Ñ;×DÓDðGð $õ ð		ðÜ& x§¡Ô7Ø%-§_¡_Ó%6×6‘Hð&¤]Ø Ÿ™¸$ô&ó &÷  �Hô ×Ñ˜xÔ(ÜÐ?Ó@Ð@Øˆðwùðúô ò ð"¤Ø×8Ñ8Ø%)ô"ð �Wó"÷ ð �ð Ð#Øõ $ûðúð Føð  7øð ùô ò ð"¤Ø×8Ñ8Ø%)ô"ð �Wó"÷ ð �ð Ð#Øô $ûðüsÃ   ‚5H·F¸H¿.HÁ.F Á=FÁ>F ÂAHÃGÃ;HÄ(G Ä5G
Ä6$G ÅGÅG Å#HÆF Æ	GÆ!G Æ1F4Æ2G Æ:HÇ GÇHÇ
G ÇG Ç	HÇ!HÇ8G;Ç9HÈHÈHÈHc                 ó¼   — t        |d«      r#|j                  }t        |«       t        |«      }n
t        «       }|j	                  |j
                  «      }||_        |S )zw
        Retrieve/set the urlconf for the request. Return the view resolved,
        with its args and kwargs.
        Úurlconf)r)   rk   r   r   ÚresolveÚ	path_infoÚresolver_match)r-   rH   rk   Úresolverrn   s        r:   rW   zBaseHandler.resolve_request,  sT   € ô �7˜IÔ&Ø—o‘oˆGÜ˜Ô Ü# GÓ,‰Hä#“~ˆHà!×)Ñ)¨'×*;Ñ*;Ó<ˆØ!/ˆÔØÐrB   c                 óZ  — |�t        j                  |«      sy|s^t        |t        j                  «      rd|j
                  ›d|j                  ›�}n'd|j
                  ›d|j                  j                  ›d�}|€t        d|z  «      ‚t        j                  |«      rt        d|z  «      ‚y)zT
        Raise an error if the view returned None or an uncalled coroutine.
        Nz	The view ú.z	.__call__zB%s didn't return an HttpResponse object. It returned None instead.zƒ%s didn't return an HttpResponse object. It returned an unawaited coroutine instead. You may need to add an 'await' into your view.)	rh   ri   Ú
isinstanceÚtypesÚFunctionTypeÚ
__module__r_   r^   Ú
ValueError)r-   rG   ra   r   s       r:   r[   zBaseHandler.check_response=  sº   € ð Ð ¤G×$7Ñ$7¸Ô$AØÙÜ˜(¤E×$6Ñ$6Õ7Ø+3×+>Ó+>À×@QÒ@QÐR‘ð 8ð ×'Ó'Ø×&Ñ&×/Ó/ð�ð ÐÜðØ!ñ"óð ô × Ñ  Ô*Üð"à$(ñ)óð ð +rB   c                 óö   — t        |dt        «       «      }t        j                  j	                  «       D ]B  \  }}|d   sŒ||vsŒt        |«      rt        d«      ‚ t        j                  |¬«      |«      }ŒD |S )NÚ_non_atomic_requestsÚATOMIC_REQUESTSz0You cannot use ATOMIC_REQUESTS with async views.)Úusing)	r#   Úsetr
   r   Úitemsr   r$   r   Úatomic)r-   ÚviewÚnon_atomic_requestsÚaliasÚsettings_dicts        r:   rX   zBaseHandler.make_view_atomicY  s€   € Ü% dÐ,BÄCÃEÓJÐÜ$/×$8Ñ$8×$>Ñ$>Ó$@ò 	=Ñ ˆE�=ØÐ.Ó/°EÐATÒ4TÜ& tÔ,Ü&ØJóð ð 7”{×)Ñ)°Ô6°tÓ<‘ð	=ð ˆrB   c                 óD   — | j                   D ]  } |||«      }|sŒ|c S  y)z�
        Pass the exception to the exception middleware. If no middleware
        return a response for this exception, return None.
        N)r   )r-   Ú	exceptionrH   rd   rG   s        r:   rZ   z+BaseHandler.process_exception_by_middlewared  s3   € ð
 "&×!;Ñ!;ò 	 ÐÙ(¨°)Ó<ˆHÚØ’ð	 ð rB   )F)NFN)N)r_   ru   r?   r   r   r   r,   r;   r%   r/   rQ   r    r   rW   r[   rX   rZ   © rB   r:   r   r      s]   „ ØÐØ$(Ð!Ø ÐØÐóL)ðd ØØóò@ò ò,4òlFòPó"ò8	ó	rB   r   c                 ó   — t        d«       y)z1Reset the URLconf after each request is finished.N)r   )ÚsenderÚkwargss     r:   Úreset_urlconfrˆ   p  s
   € ä�ÕrB   )rh   Úloggingrs   Úasgiref.syncr   r   r   Údjango.confr   Údjango.core.exceptionsr   r   Údjango.core.signalsr	   Ú	django.dbr
   r   Údjango.urlsr   r   Údjango.utils.logr   Údjango.utils.module_loadingr   rƒ   r   Ú	getLoggerr(   r   rˆ   Úconnectr„   rB   r:   ú<module>r”      sd   ðÛ Û Û ç JÑ Jå  ß JÝ 0ß .ß 1Ý )Ý 5å 4à	ˆ×	Ñ	Ð+Ó	,€÷Yñ Yòx
ð
 Ð × Ñ ˜Õ 'rB   