Ë
    ¸2Úi_*  ã                   óÀ   — d dl Z d dlZd dlmZ d dlmZmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ dd	lmZ  G d
„ de«      Z G d„ de«      Z G d„ de«      Z G d„ de«      Zy)é    N)Úmodels)ÚExistsÚOuterRefé   )ÚDELETED_VISIBLE_BY_FIELDÚHARD_DELETEÚ	NO_DELETE)ÚSafeDeleteManager)ÚSafeDeleteModelé   )ÚSafeDeleteTestCasec                   ó   — e Zd Zy)Ú
OtherModelN)Ú__name__Ú
__module__Ú__qualname__© ó    úU/var/www/html/acx/venv/lib/python3.12/site-packages/safedelete/tests/test_queryset.pyr   r      s   „ Ør   r   c                   ó   — e Zd ZeZy)ÚFieldManagerN)r   r   r   r   Ú_safedelete_visibilityr   r   r   r   r      s   „ Ø5Ñr   r   c                   ó~   — e Zd Z ej                  eej                  ¬«      Z ej                  dd¬«      Z	 e
«       Zy)ÚQuerySetModel)Ú	on_deleteÚCreatedT)Úauto_now_addN)r   r   r   r   Ú
ForeignKeyr   ÚCASCADEÚotherÚDateTimeFieldÚcreation_dater   Úobjectsr   r   r   r   r      s;   „ ØˆF×ÑØØ—.‘.ô€Eð
 )�F×(Ñ(¨ÀÔF€Má‹n�Gr   r   c                   óÌ   — e Zd Zd„ Zd„ Zej                  d„ «       Zd„ Zd„ Z	d„ Z
d„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚQuerySetTestCasec                 óÜ   — t         j                  j                  «       | _        t        j                  j                  | j                  ¬«      | _        | j
                  j                  «        y )N©r    )r   r#   Úcreater    r   ÚinstanceÚdelete©Úselfs    r   ÚsetUpzQuerySetTestCase.setUp"   sN   € Ü×'Ñ'×.Ñ.Ó0ˆŒ
Ü%×-Ñ-×4Ñ4Ø—*‘*ð 5ó 
ˆŒð 	�‰×ÑÕr   c                 óV   — t        t        j                  j                  d¬«      «       y )NT)Úquerysetmodel__isnull)Úlistr   r#   Úexcluder+   s    r   Útest_excludezQuerySetTestCase.test_exclude)   s   € ÜŒZ×Ñ×'Ñ'¸dÐ'ÓCÕDr   c                 óÞ   — | j                   j                  }| j                   j                  «        | j                  t        j
                  j                  |¬«      j                  «       «       y )N)Úquerysetmodel__id)r)   Úpkr*   ÚassertIsNotNoner   r#   r1   Úfirst)r,   r5   s     r   Útest_exclude_deletedz%QuerySetTestCase.test_exclude_deleted.   sL   € à�]‰]×ÑˆØ�‰×ÑÔØ×ÑœZ×/Ñ/×7Ñ7È"Ð7ÓM×SÑSÓUÕVr   c                 ó   — | j                  d«      5  t        j                  j                  d«      j	                  | j
                  j                  ¬«      }t        |j                  «       d d d «       y # 1 sw Y   y xY w)Nr   r    ©r5   )	ÚassertNumQueriesr   r#   Úselect_relatedÚgetr)   r5   Ústrr    )r,   Úmodels     r   Útest_select_relatedz$QuerySetTestCase.test_select_related4   sk   € Ø×"Ñ" 1Ó%ñ 	Ü!×)Ñ)×8Ñ8Øóç‰cØ—=‘=×#Ñ#ð ó ð ô
 �—‘Ô÷	÷ 	ñ 	ús   ’AA4Á4A=c                 óî   — | j                  t        j                  t        j                  j	                  | j
                  j                  dz   ¬«      j                  | j
                  j                  ¬«       y )Nr   r:   )ÚassertRaisesr   ÚDoesNotExistr#   Úfilterr)   r5   r=   r+   s    r   Útest_filter_getz QuerySetTestCase.test_filter_get=   s[   € Ø×ÑÜ×&Ñ&Ü×!Ñ!×(Ñ(Ø—=‘=×#Ñ# aÑ'ð )ó ç‰cØ�}‰}×Ñð 	õ 	
r   c                 ó  — t         j                  j                  | j                  ¬«      }t         j                  j	                  «       }|j                  |j                  ¬«       | j                  |j                  «       d«       y )Nr'   r:   r   )	r   r#   r(   r    Úallr=   r5   ÚassertEqualÚcount©r,   r)   Úquerysets      r   Ú%test_get_does_not_modify_the_querysetz6QuerySetTestCase.test_get_does_not_modify_the_querysetF   sc   € Ü ×(Ñ(×/Ñ/Ø—*‘*ð 0ó 
ˆô !×(Ñ(×,Ñ,Ó.ˆØ�‰˜Ÿ™ˆÔ$Ø×Ñ˜Ÿ™Ó)¨1Õ-r   c                 óö   — | j                  t        j                  j                  | j                  j
                  dz   ¬«      j                  | j                  j
                  ¬«      j                  «       d«       y )Nr   r:   r   )rH   r   r#   rD   r)   r5   rI   r+   s    r   Útest_filter_filterz#QuerySetTestCase.test_filter_filterN   sa   € Ø×ÑÜ×!Ñ!×(Ñ(Ø—=‘=×#Ñ# aÑ'ð )ó ç‰fØ—=‘=×#Ñ#ð ó ç‰e‹gØõ	
r   c                 ól   — t         j                  j                  | j                  j                  ¬«       y )Nr:   )r   r#   r=   r)   r5   r+   s    r   Útest_get_fieldzQuerySetTestCase.test_get_fieldX   s(   € Ü×Ñ×!Ñ!Ø�}‰}×Ñð 	"õ 	
r   c                 ó¼   — | j                  t        j                  j                  «       d«       | j                  t        j                  j                  «       d«       y ©Nr   r   )rH   r   r#   rI   Úall_objectsr+   s    r   Ú
test_countzQuerySetTestCase.test_count]   sJ   € Ø×ÑÜ×!Ñ!×'Ñ'Ó)Øô	
ð 	×ÑÜ×%Ñ%×+Ñ+Ó-Øõ	
r   c                 ó  — | j                  t        t        t        j                  j                  «       «      «      d«       | j                  t        t        t        j                  j                  «       «      «      d«       y rR   )rH   Úlenr0   r   r#   ÚiteratorrS   r+   s    r   Útest_iteratorzQuerySetTestCase.test_iteratorg   s^   € Ø×ÑÜ””]×*Ñ*×3Ñ3Ó5Ó6Ó7Øô	
ð 	×ÑÜ””]×.Ñ.×7Ñ7Ó9Ó:Ó;Øõ	
r   c                 óH  — | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       «       | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       «       y )N©Úother_id)	ÚassertFalser   r#   rD   r    ÚidÚexistsÚ
assertTruerS   r+   s    r   Útest_existszQuerySetTestCase.test_existsq   st   € Ø×ÑÜ×!Ñ!×(Ñ(ØŸ™Ÿ™ð )ó ç‰f‹hô	
ð
 	�‰Ü×%Ñ%×,Ñ,ØŸ™Ÿ™ð -ó ç‰f‹hõ	
r   c                 ó@  — | j                  t        j                  j                  t	        j
                  d«      ¬«      dd i«       | j                  t        j                  j                  t	        j
                  d«      ¬«      d| j                  j                  i«       y )Nr]   )Úmax_idrb   )	rH   r   r#   Ú	aggregater   ÚMaxrS   r)   r]   r+   s    r   Útest_aggregatezQuerySetTestCase.test_aggregate}   sŒ   € Ø×ÑÜ×!Ñ!×+Ñ+Ü—z‘z $Ó'ð ,ó ð ˜$ðô		
ð 	×ÑÜ×%Ñ%×/Ñ/Ü—z‘z $Ó'ð 0ó ð ˜$Ÿ-™-×*Ñ*ðõ		
r   c                 ó`  — | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       d «       | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       | j                  «       y ©N©r]   )rH   r   r#   rD   r)   r5   r7   rS   r+   s    r   Ú
test_firstzQuerySetTestCase.test_first�   s~   € Ø×ÑÜ×!Ñ!×(Ñ(¨D¯M©M×,<Ñ,<Ð(Ó=×CÑCÓEØô	ð 	×ÑÜ×%Ñ%×,Ñ,°·±×0@Ñ0@Ð,ÓA×GÑGÓIØ�M‰Mõ	r   c                 ó`  — | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       d «       | j                  t        j                  j                  | j                  j
                  ¬«      j                  «       | j                  «       y rg   )rH   r   r#   rD   r)   r5   ÚlastrS   r+   s    r   Ú	test_lastzQuerySetTestCase.test_last˜   s~   € Ø×ÑÜ×!Ñ!×(Ñ(¨D¯M©M×,<Ñ,<Ð(Ó=×BÑBÓDØô	ð 	×ÑÜ×%Ñ%×,Ñ,°·±×0@Ñ0@Ð,ÓA×FÑFÓHØ�M‰Mõ	r   c                 óx  — | j                  t        j                  t        j                  j	                  | j
                  j                  ¬«      j                  d«       | j                  t        j                  j	                  | j
                  j                  ¬«      j                  d«      | j
                  «       y ©Nrh   r"   )
rB   r   rC   r#   rD   r)   r5   ÚlatestrH   rS   r+   s    r   Útest_latestzQuerySetTestCase.test_latest¡   s†   € Ø×ÑÜ×&Ñ&Ü×!Ñ!×(Ñ(¨D¯M©M×,<Ñ,<Ð(Ó=×DÑDØô	ð
 	×ÑÜ×%Ñ%×,Ñ,°·±×0@Ñ0@Ð,ÓA×HÑHÈÓYØ�M‰Mõ	r   c                 óx  — | j                  t        j                  t        j                  j	                  | j
                  j                  ¬«      j                  d«       | j                  t        j                  j	                  | j
                  j                  ¬«      j                  d«      | j
                  «       y rn   )
rB   r   rC   r#   rD   r)   r5   ÚearliestrH   rS   r+   s    r   Útest_earliestzQuerySetTestCase.test_earliest«   s†   € Ø×ÑÜ×&Ñ&Ü×!Ñ!×(Ñ(¨D¯M©M×,<Ñ,<Ð(Ó=×FÑFØô	ð
 	×ÑÜ×%Ñ%×,Ñ,°·±×0@Ñ0@Ð,ÓA×JÑJÈ?Ó[Ø�M‰Mõ	r   c                 óº  — t        j                  dd«      }t        |«      D �cg c]:  }t        j                  j                  | j                  ¬«      j                  «       ‘Œ< c} | j                  t        t        j                  j                  «       «      d«       | j                  t        t        j                  j                  «       «      |dz   «       y c c}w ©Nr   é   r'   r   ©ÚrandomÚrandintÚranger   r#   r(   r    r*   rH   rV   rG   rS   ©r,   ÚamountÚxs      r   Útest_allzQuerySetTestCase.test_allµ   s¬   € Ü—‘  1Ó%ˆô ˜“-ö	!Øô 
×	Ñ	×	%Ñ	%¨D¯J©JÐ	%Ó	7×	>Ñ	>Õ	@ó 	!ð 	×ÑÜ”×%Ñ%×)Ñ)Ó+Ó,Øô	ð 	×ÑÜ”×)Ñ)×-Ñ-Ó/Ó0Ø�Q‰Jõ	ùò	!s   ¤?Cc                 óÆ  — t        j                  dd«      }t        |«      D �cg c]:  }t        j                  j                  | j                  ¬«      j                  «       ‘Œ< c} | j                  t        t        j                  j                  «       d | «      d«       | j                  t        t        j                  j                  «       d| «      |dz
  «       y c c}w ru   rw   r{   s      r   Útest_all_slicingz!QuerySetTestCase.test_all_slicingÄ   sº   € Ü—‘  1Ó%ˆô ˜“-ö	!Øô 
×	Ñ	×	%Ñ	%¨D¯J©JÐ	%Ó	7×	>Ñ	>Õ	@ó 	!ð 	×ÑÜ”×%Ñ%×)Ñ)Ó+¨G¨VÐ4Ó5Øô	ð 	×ÑÜ”×)Ñ)×-Ñ-Ó/°°&Ð9Ó:Ø�Q‰Jõ	ùò	!s   ¤?Cc           	      ó°  — t         j                  j                  | j                  ¬«      }| j	                  dt        t         j                  j                  |j                  ¬«      j                  dd¬«      «      «       | j	                  |j                  t         j                  j                  |j                  ¬«      j                  dd¬«      d   «       y )Nr'   r   rh   r5   T)Úflatr   )	r   r#   r(   r    rH   rV   rD   r]   Úvalues_list©r,   r)   s     r   Útest_values_listz!QuerySetTestCase.test_values_listÓ   s®   € Ü ×(Ñ(×/Ñ/Ø—*‘*ð 0ó 
ˆð 	×ÑØÜ”×%Ñ%ß‘˜8Ÿ;™;�Ó'ß‘˜T¨�Ó-ó/ô	
ð 	×ÑØ�K‰KÜ×!Ñ!×(Ñ(¨H¯K©KÐ(Ó8×DÑDÀTÐPTÐDÓUÐVWÑXõ	
r   c                 ó>  — t         j                  j                  d«      }t        j                  j                  d«      }| j	                  |j                  |«      j                  «       d«       | j	                  |j                  |«      j                  «       d«       t         j                  j                  d«      }| j	                  |j                  |d¬«      j                  «       d«       | j	                  |j                  |d¬«      j                  «       d«       y)z8Test the safe deleted model can union with other models.r5   r   T©rG   r   N)r   r#   rƒ   r   rH   ÚunionrI   rS   )r,   rK   Úother_querysets      r   Ú test_union_with_different_modelsz1QuerySetTestCase.test_union_with_different_modelsâ   sï   € ä ×(Ñ(×4Ñ4°TÓ:ˆÜ#×+Ñ+×7Ñ7¸Ó=ˆØ×ÑØ�N‰N˜>Ó*×0Ñ0Ó2Øô	
ð 	×ÑØ× Ñ  Ó*×0Ñ0Ó2Øô	
ô !×,Ñ,×8Ñ8¸Ó>ˆØ×ÑØ�N‰N˜>¨tˆNÓ4×:Ñ:Ó<Øô	
ð 	×ÑØ× Ñ  ¨tÐ Ó4×:Ñ:Ó<Øõ	
r   c                 óž  — t         j                  j                  «       }| j                  |j	                  |«      j                  «       d«       t         j                  j                  «       }| j                  |j	                  |d¬«      j                  «       d«       | j                  |j	                  |d¬«      j                  «       d«       y)z:Test whether the soft deleted model can be found by union.r   Fr‡   r   Tr   N)r   r#   rG   rH   rˆ   rI   rS   ©r,   rK   s     r   Ú
test_unionzQuerySetTestCase.test_unionø   s¨   € ä ×(Ñ(×,Ñ,Ó.ˆØ×ÑØ�N‰N˜8Ó$×*Ñ*Ó,Øô	
ô
 !×,Ñ,×0Ñ0Ó2ˆØ×ÑØ�N‰N˜8¨ˆNÓ/×5Ñ5Ó7Øô	
ð 	×ÑØ�N‰N˜8¨ˆNÓ.×4Ñ4Ó6Øõ	
r   c                 óª  — t         j                  j                  | j                  ¬«      }t         j                  j	                  |j
                  ¬«      }| j                  |j                  t         j                  j                  «       «      j                  «       d«       t         j                  j                  «       }| j                  |j                  t         j                  j                  «       «      j                  «       d«       | j                  |j                  t         j                  j                  «       «      j                  «       d«       y)z?Test whether the soft deleted model can be found by difference.r'   rh   r   r   N)r   r#   r(   r    rD   r]   rH   Ú
differencerG   rI   rS   rJ   s      r   Útest_differencez QuerySetTestCase.test_difference
  s  € ä ×(Ñ(×/Ñ/Ø—*‘*ð 0ó 
ˆô !×(Ñ(×/Ñ/°8·;±;Ð/Ó?ˆØ×ÑØ×ÑÜ×%Ñ%×)Ñ)Ó+óç‰e‹gØô		
ô !×,Ñ,×0Ñ0Ó2ˆØ×ÑØ×ÑÜ×%Ñ%×)Ñ)Ó+óç‰e‹gØô		
ð 	×ÑØ×ÑÜ×)Ñ)×-Ñ-Ó/óç‰e‹gØõ		
r   c                 óª  — t         j                  j                  | j                  ¬«      }t         j                  j	                  |j
                  ¬«      }| j                  |j                  t         j                  j                  «       «      j                  «       d«       t         j                  j                  «       }| j                  |j                  t         j                  j                  «       «      j                  «       d«       | j                  |j                  t         j                  j                  «       «      j                  «       d«       y)zATest whether the soft deleted model can be found by intersection.r'   rh   r   r   N)r   r#   r(   r    rD   r]   rH   ÚintersectionrG   rI   rS   rJ   s      r   Útest_intersectionz"QuerySetTestCase.test_intersection%  s  € ä ×(Ñ(×/Ñ/Ø—*‘*ð 0ó 
ˆô !×(Ñ(×/Ñ/°8·;±;Ð/Ó?ˆØ×ÑØ×!Ñ!Ü×%Ñ%×)Ñ)Ó+óç‰e‹gØô		
ô !×,Ñ,×0Ñ0Ó2ˆØ×ÑØ×!Ñ!Ü×%Ñ%×)Ñ)Ó+óç‰e‹gØô		
ð 	×ÑØ×!Ñ!Ü×)Ñ)×-Ñ-Ó/óç‰e‹gØõ		
r   c           	      ó   — t         j                  j                  t        t        j                  j                  t        d«      ¬«      «      ¬«      }| j                  |j                  «       d«       | j                  |d   j                  «       y)zJTest whether the soft deleted model can be found in annotation subqueries.r5   rZ   )Úhas_relatedr   r   N)r   r#   Úannotater   r   rD   r   rH   rI   r\   r•   rŒ   s     r   Útest_annotationz QuerySetTestCase.test_annotation@  sn   € ä×%Ñ%×.Ñ.Üœ}×4Ñ4×;Ñ;ÄXÈdÃ^Ð;ÓTÓUð /ó 
ˆð 	×Ñ˜Ÿ™Ó)¨1Ô-Ø×Ñ˜ !™×0Ñ0Õ1r   c                 ó˜  — t        j                  dd«      }t        |«      D ],  }t        j                  j                  | j                  ¬«       Œ. t        j                  j                  «       j                  «       }| j                  ||t        j                  j                  |if«       t        j                  j                  «       j                  «       }| j                  |di f«       t        j                  j                  «       j                  «       }| j                  ||dz   t        j                  j                  |dz   if«       y ru   )rx   ry   rz   r   r#   r(   r    rG   r*   rH   Ú_metaÚlabelÚdeleted_objectsÚundelete)r,   r|   Ú_Údelete_outputÚundelete_outputs        r   Ú#test_delete_and_undelete_all_outputz4QuerySetTestCase.test_delete_and_undelete_all_outputH  s  € Ü—‘  1Ó%ˆÜ�v“ò 	;ˆAÜ×!Ñ!×(Ñ(¨t¯z©zÐ(Õ:ð	;ô &×-Ñ-×1Ñ1Ó3×:Ñ:Ó<ˆØ×Ñ˜¨´-×2EÑ2E×2KÑ2KÈVÐ1TÐ(UÔVä%×-Ñ-×1Ñ1Ó3×:Ñ:Ó<ˆØ×Ñ˜¨¨B¨Ô0ä'×7Ñ7×;Ñ;Ó=×FÑFÓHˆà×Ñ˜¨6°A©:¼×8KÑ8K×8QÑ8QÐSYÐ\]ÑS]Ð7^Ð*_Õ`r   c                 óü  — t         j                  j                  | j                  ¬«      }| j	                  t         j                  j                  «       j                  «       d«       | j	                  t         j                  j                  «       j                  t        ¬«      d|j                  j                  dif«       | j	                  t         j                  j                  «       j                  «       d«       y )Nr'   r   ©Úforce_policyr   )r   r#   r(   r    rH   Úall_with_deletedrI   rG   r*   r   r™   rš   r„   s     r   Útest_hard_deletez!QuerySetTestCase.test_hard_deleteW  s½   € Ü ×(Ñ(×/Ñ/Ø—*‘*ð 0ó 
ˆð 	×Ñœ×.Ñ.×?Ñ?ÓA×GÑGÓIÈ1ÔMØ×ÑÜ×!Ñ!×%Ñ%Ó'×.Ñ.¼KÐ.ÓHØ�—‘×%Ñ% qÐ)Ð*ô	
ð 	×Ñœ×.Ñ.×?Ñ?ÓA×GÑGÓIÈ1ÕMr   c                 óÐ  — t         j                  j                  | j                  ¬«       | j	                  t         j                  j                  «       j                  «       d«       | j	                  t         j                  j                  «       j                  t        ¬«      di f«       | j	                  t         j                  j                  «       j                  «       d«       y )Nr'   r   r¢   r   )
r   r#   r(   r    rH   r¤   rI   rG   r*   r	   r+   s    r   Útest_no_deletezQuerySetTestCase.test_no_deleteb  s«   € Ü×Ñ×$Ñ$Ø—*‘*ð 	%ô 	
ð 	×Ñœ×.Ñ.×?Ñ?ÓA×GÑGÓIÈ1ÔMØ×ÑÜ×!Ñ!×%Ñ%Ó'×.Ñ.¼IÐ.ÓFØ�ˆGô	
ð 	×Ñœ×.Ñ.×?Ñ?ÓA×GÑGÓIÈ1ÕMr   N) r   r   r   r-   r2   ÚunittestÚexpectedFailurer8   r@   rE   rL   rN   rP   rT   rX   r`   re   ri   rl   rp   rs   r~   r€   r…   rŠ   r�   r�   r“   r—   r    r¥   r§   r   r   r   r%   r%       s¤   „ òòEð
 ×ÑñWó ðWò
ò
ò.ò
ò
ò

ò
ò

ò
ò$òòòòòò
ò
ò,
ò$
ò6
ò62òaò	Nó	Nr   r%   )rx   r¨   Ú	django.dbr   Údjango.db.models.expressionsr   r   Úconfigr   r   r	   Úmanagersr
   r   Útestcaser   r   r   r   r%   r   r   r   ú<module>r¯      sV   ðÛ Û å ß 9ç EÑ EÝ (Ý $Ý (ô	�ô 	ô6Ð$ô 6ô�Oô ôKNÐ)õ KNr   