Ë
    ¹ûàgû  ã                   ó~   — d dl 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mZ d dlmZ d dlmZ  G d„ d	e«      Zy)
é    N)Úsync_to_async)ÚCreateErrorÚSessionBaseÚUpdateError)ÚSuspiciousOperation)ÚDatabaseErrorÚIntegrityErrorÚrouterÚtransaction)Útimezone)Úcached_propertyc                   óÀ   ‡ — e Zd ZdZdˆ fd„	Zed„ «       Zed„ «       Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zdd„Zdd„Zdd„Zdd„Zed„ «       Zed„ «       Zˆ xZS )ÚSessionStorez+
    Implement database session store.
    c                 ó$   •— t         ‰| �  |«       y ©N)ÚsuperÚ__init__)ÚselfÚsession_keyÚ	__class__s     €úa/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/db.pyr   zSessionStore.__init__   s   ø€ Ü‰Ñ˜Õ%ó    c                 ó   — ddl m} |S )Nr   )ÚSession)Údjango.contrib.sessions.modelsr   )Úclsr   s     r   Úget_model_classzSessionStore.get_model_class   s   € õ 	;àˆr   c                 ó"   — | j                  «       S r   )r   ©r   s    r   ÚmodelzSessionStore.model   s   € à×#Ñ#Ó%Ð%r   c                 óœ  — 	 | j                   j                  j                  | j                  t	        j
                  «       ¬«      S # | j                   j                  t        f$ rg}t        |t        «      rFt        j                  d|j                  j                  z  «      }|j                  t        |«      «       d | _        Y d }~y d }~ww xY w©N)r   Úexpire_date__gtzdjango.security.%s)r    ÚobjectsÚgetr   r   ÚnowÚDoesNotExistr   Ú
isinstanceÚloggingÚ	getLoggerr   Ú__name__ÚwarningÚstrÚ_session_key©r   ÚeÚloggers      r   Ú_get_session_from_dbz!SessionStore._get_session_from_db    s¢   € ð	%Ø—:‘:×%Ñ%×)Ñ)Ø ×,Ñ,¼h¿l¹l»nð *ó ð øð —
‘
×'Ñ'Ô)<Ð=ò 	%Ü˜!Ô0Ô1Ü ×*Ñ*Ð+?À!Ç+Á+×BVÑBVÑ+VÓW�Ø—‘œs 1›vÔ&Ø $ˆD×Ñûð		%ús   ‚AA ÁCÁ$ACÃCc              ƒ   ó¸  K  — 	 | j                   j                  j                  | j                  t	        j
                  «       ¬«      ƒ d {  –—† S 7 Œ# | j                   j                  t        f$ rg}t        |t        «      rFt        j                  d|j                  j                  z  «      }|j                  t        |«      «       d | _        Y d }~y d }~ww xY w­wr"   )r    r$   Úagetr   r   r&   r'   r   r(   r)   r*   r   r+   r,   r-   r.   r/   s      r   Ú_aget_session_from_dbz"SessionStore._aget_session_from_db+   s¯   è ø€ ð	%ØŸ™×+Ñ+×0Ñ0Ø ×,Ñ,¼h¿l¹l»nð 1ó ÷ ð ð ùð —
‘
×'Ñ'Ô)<Ð=ò 	%Ü˜!Ô0Ô1Ü ×*Ñ*Ð+?À!Ç+Á+×BVÑBVÑ+VÓW�Ø—‘œs 1›vÔ&Ø $ˆD×Ñûð		%üsB   ‚C„AA Á
AÁA ÁCÁA ÁCÁ0ACÃCÃCÃCc                 ó`   — | j                  «       }|r| j                  |j                  «      S i S r   )r2   ÚdecodeÚsession_data©r   Úss     r   ÚloadzSessionStore.load6   s*   € Ø×%Ñ%Ó'ˆÙ./ˆt�{‰{˜1Ÿ>™>Ó*Ð7°RÐ7r   c              ƒ   ó|   K  — | j                  «       ƒ d {  –—† }|r| j                  |j                  «      S i S 7 Œ#­wr   )r5   r7   r8   r9   s     r   ÚaloadzSessionStore.aload:   s6   è ø€ Ø×,Ñ,Ó.×.ˆÙ./ˆt�{‰{˜1Ÿ>™>Ó*Ð7°RÐ7ð /ús   ‚<–:—$<c                 ój   — | j                   j                  j                  |¬«      j                  «       S ©N)r   )r    r$   ÚfilterÚexists©r   r   s     r   rA   zSessionStore.exists>   s)   € Ø�z‰z×!Ñ!×(Ñ(°[Ð(ÓA×HÑHÓJÐJr   c              ƒ   ó†   K  — | j                   j                  j                  |¬«      j                  «       ƒ d {  –—† S 7 Œ­wr?   )r    r$   r@   ÚaexistsrB   s     r   rD   zSessionStore.aexistsA   s3   è ø€ Ø—Z‘Z×'Ñ'×.Ñ.¸;Ð.ÓG×OÑOÓQ×QÐQÐQús   ‚8Aº?»Ac                 ó‚   — 	 | j                  «       | _        	 | j                  d¬«       d| _        y # t        $ r Y Œ<w xY w©NT)Úmust_create)Ú_get_new_session_keyr.   Úsaver   Úmodifiedr   s    r   ÚcreatezSessionStore.createD   sK   € ØØ $× 9Ñ 9Ó ;ˆDÔðð —	‘	 d�	Ô+ð !ˆDŒMØøô	 ò áðús   ˜2 ²	>½>c              ƒ   ó²   K  — 	 | j                  «       ƒ d {  –—† | _        	 | j                  d¬«      ƒ d {  –—†  d| _        y 7 Œ,7 Œ# t        $ r Y ŒPw xY w­wrF   )Ú_aget_new_session_keyr.   Úasaver   rJ   r   s    r   ÚacreatezSessionStore.acreateQ   sa   è ø€ ØØ&*×&@Ñ&@Ó&B× BˆDÔðð —j‘j¨T�jÓ2×2Ð2ð !ˆDŒMØð !Cøð 3ùÜò áðüsA   ‚A—A˜	A¢A ·A¸A ¼	AÁA Á	AÁAÁAÁAc                 ó€   — | j                  | j                  «       | j                  |«      | j                  «       ¬«      S )zÁ
        Return a new instance of the session model object, which represents the
        current session state. Intended to be used for saving the session data
        to the database.
        ©r   r8   Úexpire_date)r    Ú_get_or_create_session_keyÚencodeÚget_expiry_date©r   Údatas     r   Úcreate_model_instancez"SessionStore.create_model_instance^   s>   € ð �z‰zØ×7Ñ7Ó9ØŸ™ TÓ*Ø×,Ñ,Ó.ð ó 
ð 	
r   c              ƒ   ó°   K  — | j                  | j                  «       ƒ d{  –—† | j                  |«      | j                  «       ƒ d{  –—† ¬«      S 7 Œ07 Œ­w)zSee create_model_instance().NrQ   )r    Ú_aget_or_create_session_keyrT   Úaget_expiry_daterV   s     r   Úacreate_model_instancez#SessionStore.acreate_model_instancej   sM   è ø€ à�z‰zØ"×>Ñ>Ó@×@ØŸ™ TÓ*Ø"×3Ñ3Ó5×5ð ó 
ð 	
Ø@øà5ús!   ‚A¡A¢&AÁAÁ	
AÁAc                 ó”  — | j                   €| j                  «       S | j                  |¬«      }| j                  |«      }t	        j
                  | j                  |¬«      }	 t        j                  |¬«      5  |j                  || |¬«       ddd«       y# 1 sw Y   yxY w# t        $ r
 |rt        ‚‚ t        $ r
 |st        ‚‚ w xY w)zé
        Save the current session data to the database. If 'must_create' is
        True, raise a database error if the saving operation doesn't create a
        new entry (as opposed to possibly updating an existing entry).
        N©Úno_load©Úinstance©Úusing©Úforce_insertÚforce_updaterc   )r   rK   Ú_get_sessionrX   r
   Údb_for_writer    r   ÚatomicrI   r	   r   r   r   )r   rG   rW   Úobjrc   s        r   rI   zSessionStore.saver   sÈ   € ð ×ÑÐ#Ø—;‘;“=Ð Ø× Ñ ¨Ð Ó5ˆØ×(Ñ(¨Ó.ˆÜ×#Ñ# D§J¡J¸Ô=ˆð	Ü×#Ñ#¨%Ô0ñ Ø—‘Ø!,¸{¸?ÐRWð ô ÷÷ ñ ûô ò 	ÙÜ!Ð!ØÜò 	ÙÜ!Ð!Øð	ús*   Á"B# Á8BÂB# ÂB ÂB# Â B# Â#$Cc              ƒ   ó   ‡‡‡K  — | j                   €| j                  «       ƒ d{  –—† S | j                  ‰¬«      ƒ d{  –—† }| j                  |«      ƒ d{  –—† Št	        j
                  | j                  ‰¬«      Š	 t        ˆˆˆfd„«       } |«       ƒ d{  –—†  y7 Œy7 Œa7 ŒJ7 Œ# t        $ r
 ‰rt        ‚‚ t        $ r
 ‰st        ‚‚ w xY w­w)zSee save().Nr^   r`   c                  ó†   •— t        j                  ‰¬«      5  ‰j                  ‰ ‰  ‰¬«       d d d «       y # 1 sw Y   y xY w)Nrb   rd   )r   ri   rI   )rG   rj   rc   s   €€€r   Úsync_transactionz,SessionStore.asave.<locals>.sync_transaction–   sB   ø€ ä ×'Ñ'¨eÔ4ñ Ø—H‘HØ%0Ø)4 _Ø#ð ô ÷÷ ñ ús	   ˜7·A )r   rO   Ú_aget_sessionr\   r
   rh   r    r   r	   r   r   r   )r   rG   rW   rm   rj   rc   s    `  @@r   rN   zSessionStore.asave‹   sÉ   úè ø€ à×ÑÐ#ØŸ™›×'Ð'Ø×'Ñ'°Ð'Ó<×<ˆØ×/Ñ/°Ó5×5ˆÜ×#Ñ# D§J¡J¸Ô=ˆð	ô õó ðñ #Ó$×$Ñ$ð# (øØ<øØ5øð %ùÜò 	ÙÜ!Ð!ØÜò 	ÙÜ!Ð!Øð	üs\   … C¥B¦C¿B!Á CÁB#Á%CÁ?B' ÂB%ÂB' ÂCÂ!CÂ#CÂ%B' Â'$CÃCc                 óâ   — |€| j                   €y | j                   }	 | j                  j                  j                  |¬«      j	                  «        y # | j                  j
                  $ r Y y w xY wr?   )r   r    r$   r%   Údeleter'   rB   s     r   rp   zSessionStore.delete©   sg   € ØÐØ×ÑÐ'ØØ×*Ñ*ˆKð	Ø�J‰J×Ñ×"Ñ"¨{Ð"Ó;×BÑBÕDøØ�z‰z×&Ñ&ò 	Ùð	ús   �4A ÁA.Á-A.c              ƒ   ó  K  — |€| j                   €y | j                   }	 | j                  j                  j                  |¬«      ƒ d {  –—† }|j	                  «       ƒ d {  –—†  y 7 Œ7 Œ# | j                  j
                  $ r Y y w xY w­wr?   )r   r    r$   r4   Úadeleter'   )r   r   rj   s      r   rr   zSessionStore.adelete³   s   è ø€ ØÐØ×ÑÐ'ØØ×*Ñ*ˆKð	ØŸ
™
×*Ñ*×/Ñ/¸KÐ/ÓH×HˆCØ—+‘+“-×Ñð IøØùØ�z‰z×&Ñ&ò 	Ùð	üsL   ‚B	Ÿ)A* ÁA&Á	A* Á A(Á!A* Á%B	Á&A* Á(A* Á*BÂB	ÂBÂB	c                 ó˜   — | j                  «       j                  j                  t        j                  «       ¬«      j                  «        y ©N)Úexpire_date__lt)r   r$   r@   r   r&   rp   ©r   s    r   Úclear_expiredzSessionStore.clear_expired¾   s1   € à×ÑÓ×%Ñ%×,Ñ,¼X¿\¹\»^Ð,ÓL×SÑSÕUr   c              ƒ   ó´   K  — | j                  «       j                  j                  t        j                  «       ¬«      j                  «       ƒ d {  –—†  y 7 Œ­wrt   )r   r$   r@   r   r&   rr   rv   s    r   Úaclear_expiredzSessionStore.aclear_expiredÂ   sB   è ø€ à×!Ñ!Ó#×+Ñ+×2Ñ2Ü$ŸL™L›Nð 3ó 
ç
‰'‹)÷	ò 	ús   ‚AAÁAÁAr   )F)r+   Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr   r   r    r2   r5   r;   r=   rA   rD   rK   rO   rX   r\   rI   rN   rp   rr   rw   ry   Ú__classcell__)r   s   @r   r   r      s§   ø„ ñõ&ð ñó ðð ñ&ó ð&ò	%ò	%ò8ò8òKòRòòò

ò
óó2ó<ó	ð ñVó ðVð ñó ôr   r   )r)   Úasgiref.syncr   Ú%django.contrib.sessions.backends.baser   r   r   Údjango.core.exceptionsr   Ú	django.dbr   r	   r
   r   Údjango.utilsr   Údjango.utils.functionalr   r   © r   r   ú<module>r†      s.   ðÛ å &ç WÑ WÝ 6ß HÓ HÝ !Ý 3ôz�;õ zr   