Ë
    ¸2ÚiŽ  ã                   ó–   — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZmZmZmZmZ  edd¬	«      Z G d
„ dej"                  «      Zy)é    )ÚOptionalÚTypeVarÚcast)Úsql)ÚQ)ÚSQLCompileré   )ÚDELETED_INVISIBLEÚDELETED_ONLY_VISIBLEÚDELETED_VISIBLEÚDELETED_VISIBLE_BY_FIELDÚ
FIELD_NAMEÚ_QÚSafeDeleteQuery)Úboundc                   óª   ‡ — e Zd ZU dZdZeed<   dZee	   ed<   e	ed<   e
ed<   dd	„Zdd
„Zdedefˆ fd„Zdefˆ fd„Zddee	   dee	   ddfˆ fd„Zˆ xZS )r   z.Default query for the SafeDeleteQueryset.
    FÚ_safedelete_filter_appliedNÚ_safedelete_force_visibilityÚ_safedelete_visibilityÚ_safedelete_visibility_fieldÚreturnc                 óz   — t        | d«      r/| j                  t        k(  r| j                  |v rt        | _        yyyy)ab  Check if the visibility for DELETED_VISIBLE_BY_FIELD needs to be put into effect.

        DELETED_VISIBLE_BY_FIELD is a temporary visibility flag that changes
        to DELETED_VISIBLE once asked for the named parameter defined in
        `_safedelete_force_visibility`. When evaluating the queryset, it will
        then filter on all models.
        r   N)Úhasattrr   r   r   r   r   )ÚselfÚkwargss     úG/var/www/html/acx/venv/lib/python3.12/site-packages/safedelete/query.pyÚcheck_field_filterz"SafeDeleteQuery.check_field_filter   sB   € ô �4Ð1Ô2°t×7RÑ7RÔVnÒ7nØ×5Ñ5¸Ñ?Ü0?ˆDÕ-ð @ð 8oÐ2ó    c           
      ó$  — | j                  «       r| j                  st        | d«      syt        | dd«      }|�|n| j                  }|t
        t        t        fv r7| j                  t        di t        dz   |t
        t        fv i¤Ž«       d| _        yy)zºAdd deleted filters to the current QuerySet.

        Unlike QuerySet.filter, this does not return a clone.
        This is because QuerySet._fetch_all cannot work with a clone.
        r   Nr   Ú__isnullT© )Ú
can_filterr   r   Úgetattrr   r
   r   r   Úadd_qr   r   )r   Úforce_visibilityÚ
visibilitys      r   Ú_filter_visibilityz"SafeDeleteQuery._filter_visibility'   sª   € ð �‰Ô  D×$CÒ$CÌ7ÐSWÐYqÔKrØÜ" 4Ð)GÈÓNÐàÐ+ñ &à×,Ñ,ð 	ð Ô+Ô-EÔG[Ð\Ñ\ð �J‰JÜñ ä" ZÑ/°Ü-Ô/GÐHð2Iðñôð /3ˆDÕ+ð ]r   r   c                 ó  •— t        t        t        t        | �  «       «      }t        | d«      r| j                  |_        t        | d«      r| j                  |_        | j                  |_        t        | d«      r| j                  |_	        |S )Nr   r   r   )
r   r   Úsuperr   Úcloner   r   r   r   r   )r   r*   Ú	__class__s     €r   r*   zSafeDeleteQuery.clone@   sw   ø€ Ü”Rœœ°Ñ;Ó=Ó>ˆÜ�4Ð1Ô2Ø+/×+FÑ+FˆEÔ(Ü�4Ð7Ô8Ø15×1RÑ1RˆEÔ.Ø+/×+JÑ+JˆÔ(Ü�4Ð7Ô8Ø15×1RÑ1RˆEÔ.Øˆr   c                 óJ   •— | j                  «        t        t        | �  |i |¤ŽS ©N)r'   r)   r   Úget_compiler)r   Úargsr   r+   s      €r   r.   zSafeDeleteQuery.get_compilerK   s&   ø€ à×ÑÔ!Ü”_ dÑ8¸$ÐIÀ&ÑIÐIr   ÚlowÚhighc                 óL   •— | j                  «        t        t        | �  ||«      S r-   )r'   r)   r   Ú
set_limits)r   r0   r1   r+   s      €r   r3   zSafeDeleteQuery.set_limitsP   s#   ø€ à×ÑÔ!Ü”_ dÑ6°s¸DÓAÐAr   )r   N)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚboolÚ__annotations__r   r   ÚintÚstrr   r'   r   r*   r   r.   r3   Ú__classcell__)r+   s   @r   r   r      s‰   ø… ñð (-Ð Ó,Ø26Ð  (¨3¡-Ó6ØÓØ"%Ó%ó
@ó3ð2	�Bð 	˜2õ 	ðJ¨{õ Jñ
B˜h s™mð B¸(À3¹-ð BÐSW÷ Bñ Br   N)Útypingr   r   r   Údjango.db.modelsr   Údjango.db.models.query_utilsr   Údjango.db.models.sql.compilerr   Úconfigr
   r   r   r   r   r   ÚQueryr   r!   r   r   ú<module>rC      sA   ðß *Ñ *å  Ý *Ý 5÷õ ñ ˆTÐ*Ô+€ôAB�c—i‘iõ ABr   