Ë
    &]jb#  ã                   óš   — d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	m
Z
mZ d dlmZmZ ddlmZ ddlmZmZmZ d	„ Zd
„ Z G d„ de«      Zy)é    N)Úexpect)Úmodels)Úget_file_fieldsÚget_all_mediaÚget_used_mediaÚget_unused_mediaÚremove_unused_media)Úremove_mediaÚremove_empty_dirsé   )ÚBaseTestCase)ÚFileFieldsModelÚCustomFileldsModelÚCustomManagerModelc              #   ó   K  — dd dgf–— y ­w)NzC:/dirztest\file.txt© ©Úpaths    úI/var/www/zogu/zoguvenv/lib/python3.12/site-packages/tests/test_cleanup.pyÚwin_os_walkr      s   è ø€ Ø
�DÐ+Ð,Ð
,Ó,ùs   ‚
c                 ó&   — | j                  dd«      S )Nú/ú\)Úreplacer   s    r   Úwin_os_abspathr      s   € Ø�<‰<˜˜TÓ"Ð"ó    c                   óì   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z ej                  d
e¬«       ej                  de¬«      d„ «       «       Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚTestCleanupc                 óò  •— t         t        | �  «        t        j                  j                  | j                  d«      | j                  d«      d¬«      | _        t        j                  j                  | j                  d«      | j                  d«      d¬«      | _	        t        j                  j                  | j                  d«      d	¬
«      | _        t        j                  j                  d¬«      | _        y )Nz	file1.txtz
image1.jpgÚtest1)Ú
file_fieldÚimage_fieldÚ
char_fieldz	file2.txtz
image2.jpgÚtest2ú	file3.txtÚtest3)Úcustom_fieldr#   Útest4)r#   )Úsuperr   ÚsetUpr   ÚobjectsÚcreateÚ_create_fileÚ_create_imageÚmodel1Úmodel2r   Úmodel3Úmodel4)ÚselfÚ	__class__s    €r   r*   zTestCleanup.setUp   sÜ   ø€ ÜŒk˜4Ñ&Ô(ä%×-Ñ-×4Ñ4Ø×(Ñ(¨Ó5Ø×*Ñ*¨<Ó8Øð 5ó 
ˆŒô &×-Ñ-×4Ñ4Ø×(Ñ(¨Ó5Ø×*Ñ*¨<Ó8Øð 5ó 
ˆŒô )×0Ñ0×7Ñ7Ø×*Ñ*¨;Ó7Øð 8ó 
ˆŒô
 )×0Ñ0×7Ñ7Øð 8ó 
ˆ�r   c                 ó  — t        «       }t        |«      j                  t        «      j	                  d«       |D ]*  }t        |«      j                  t
        j                  «       Œ, |D �cg c]  }|j                  ‘Œ }}t        |«      j                  d«      j                  d«      j                  d«       t        |«      j                  j                  d«       t        |«      j                  j                  d«       y c c}w )Né   r!   r"   r'   r#   Úactive)
r   r   Úto_be_instance_ofÚlistÚ	to_lengthr   Ú	FileFieldÚnameÚ
to_includeÚNot)r3   Úfile_fieldsÚfÚfile_fields_namess       r   Útest_get_file_fieldsz TestCleanup.test_get_file_fields1   sÉ   € Ü%Ó'ˆÜˆ{Ó×-Ñ-¬dÓ3×=Ñ=¸aÔ@àò 	:ˆAÜ�1‹I×'Ñ'¬×(8Ñ(8Õ9ð	:ð .9Ö9¨˜QŸV›VÐ9ÐÐ9äÐ Ó!ß‰Z˜Ó%ß‰Z˜Ó&ß‰Z˜Ô'ÜÐ Ó!×%Ñ%×0Ñ0°Ô>ÜÐ Ó!×%Ñ%×0Ñ0°Õ:ùò :s   Á+Dc                 ó0  — t        t        «       «      j                  t        «      j	                  d«      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «       y ©Né   )r   r   r8   Úsetr:   r=   r/   r!   r   r"   r0   r1   r'   ©r3   s    r   Útest_get_used_mediazTestCleanup.test_get_used_mediaA   s¢   € ÜŒ~ÓÓ ßÑœsÓ#§I¡I¨a£Lß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×0Ñ0×5Ñ5Õ6r   c                 ó0  — t        t        «       «      j                  t        «      j	                  d«      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «       y rD   )r   r   r8   rF   r:   r=   r/   r!   r   r"   r0   r1   r'   rG   s    r   Útest_get_all_mediazTestCleanup.test_get_all_mediaJ   s¡   € ÜŒ}‹ÓßÑœsÓ#§I¡I¨a£Lß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×0Ñ0×5Ñ5Õ6r   c                 óŽ  — | j                  d«       t        t        «       «      j                  t        «      j                  d«      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  d«      «       y )Núfile.txté   )Ú_media_creater   r   r8   rF   r:   r=   r/   r!   r   r"   r0   r1   r'   Ú_media_abs_pathrG   s    r   Ú"test_get_all_media_with_additionalz.TestCleanup.test_get_all_media_with_additionalS   sÄ   € Ø×Ñ˜;Ô'ÜŒ}‹ÓßÑœsÓ#§I¡I¨a£Lß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×0Ñ0×5Ñ5Ó6ß‰Z˜×,Ñ,¨[Ó9Õ:r   c                 ó<  — | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       | j                  d«       t        t        g d¢«      «      j                  t        «      j                  d	«      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  d«      «      j                  j                  | j                  d«      «      j                  j                  | j                  d«      «      j                  | j                  d«      «       y )
NrL   z
.file2.txtútest.txtzdo_not_exclude/test.txtzone.pngztwo.pngz	three.png)z.*z*.pngrR   é   ©rN   r   r   r8   rF   r:   r=   r/   r!   r   r"   r0   r1   r'   rO   r>   rG   s    r   Útest_get_all_media_with_excludez+TestCleanup.test_get_all_media_with_exclude^   se  € Ø×Ñ˜;Ô'Ø×Ñ˜=Ô)Ø×Ñ˜;Ô'Ø×ÑÐ5Ô6Ø×Ñ˜:Ô&Ø×Ñ˜:Ô&Ø×Ñ˜<Ô(ÜŒ}Ò8Ó9Ó:ßÑœsÓ#§I¡I¨a£Lß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×0Ñ0×5Ñ5Ó6ß‰Z˜×,Ñ,¨[Ó9Ó:ß‰S—‘˜D×0Ñ0°Ó?Ó@ß‰S—‘˜D×0Ñ0°Ó=Ó>ß‰Z˜×,Ñ,Ð-GÓHÕIr   c                 óv  — | j                  d«       | j                  d«       | j                  d«       t        t        dg«      «      j                  t        «      j                  d«      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  j                  j                  «      j                  | j                  d«      «      j                  j                  | j                  d«      «      j                  j                  | j                  d«      «       y )Nzexclude_dir/file1.txtzexclude_dir/file2.txtr%   zexclude_dir/*rM   rT   rG   s    r   Ú&test_get_all_media_with_exclude_folderz2TestCleanup.test_get_all_media_with_exclude_folderr   s  € Ø×ÑÐ3Ô4Ø×ÑÐ3Ô4Ø×Ñ˜<Ô(ÜŒ}˜oÐ.Ó/Ó0ßÑœsÓ#§I¡I¨a£Lß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×.Ñ.×3Ñ3Ó4ß‰Z˜Ÿ™×/Ñ/×4Ñ4Ó5ß‰Z˜Ÿ™×0Ñ0×5Ñ5Ó6ß‰Z˜×,Ñ,¨\Ó:Ó;ß‰S—‘˜D×0Ñ0Ð1IÓJÓKß‰S—‘˜D×0Ñ0Ð1IÓJÕKr   c                 ó”   — | j                  d«       t        t        d¬«      «      j                  t        «      j                  d«       y )Núfresh_file.txté<   ©Úminimum_file_ager   )rN   r   r   r8   rF   r:   rG   s    r   Ú(test_get_all_media_with_minimum_file_agez4TestCleanup.test_get_all_media_with_minimum_file_age�   s1   € Ø×ÑÐ,Ô-ÜŒ}¨bÔ1Ó2ßÑœsÓ#§I¡I¨a¥Lr   c                 óÔ   — | j                  dd¬«       t        t        d¬«      «      j                  t        «      j                  d«      j                  | j                  d«      «       y )NrY   éF   )Úfile_agerZ   r[   r   )rN   r   r   r8   rF   r:   r=   rO   rG   s    r   Ú*test_get_all_media_with_minimum_file_age_2z6TestCleanup.test_get_all_media_with_minimum_file_age_2†   sL   € Ø×ÑÐ,°rÐÔ:ÜŒ}¨bÔ1Ó2ßÑœsÓ#§I¡I¨a£Lß‰Z˜×,Ñ,Ð->Ó?Õ@r   z+django_unused_media.cleanup.os.path.abspath)Úside_effectz#django_unused_media.cleanup.os.walkc                 óŒ   — t        t        «       «      j                  t        «      j	                  d«      j                  d«       y )Nr   zC:\dir\test\file.txt)r   r   r8   rF   r:   r=   )r3   Ú	mock_walkÚmock_abspaths      r   Útest_get_all_media_winz"TestCleanup.test_get_all_media_winŒ   s,   € ô 	Œ}‹Óß!Ñ!¤#Ó&§y¡y°£|ß‘
Ð2Õ3r   c                 óF   — t        t        «       «      j                  «        y )N)r   r   Úto_be_emptyrG   s    r   Útest_get_unused_media_emptyz'TestCleanup.test_get_unused_media_empty“   s   € ÜÔÓ!Ó"×.Ñ.Õ0r   c                 óì   — | j                  d«       t        «       }t        |«      j                  t        «      j                  d«       t        t        t        |«      «      «      j                  d«       y )Núnotused.txtr   z^.*notused.txt©	rN   r   r   r8   rF   r:   ÚnextÚiterÚto_match©r3   Ú
used_medias     r   Útest_get_unused_mediaz!TestCleanup.test_get_unused_media–   sT   € Ø×Ñ˜>Ô*Ü%Ó'ˆ
ÜˆzÓ×,Ñ,¬SÓ1×;Ñ;¸AÔ>ÜŒt”D˜Ó$Ó%Ó&×/Ñ/Ð0AÕBr   c                 óì   — | j                  d«       t        «       }t        |«      j                  t        «      j                  d«       t        t        t        |«      «      «      j                  d«       y )Nzsubfolder/notused.txtr   z^.*subfolder/notused.txt$rl   rp   s     r   Útest_get_unused_media_subfolderz+TestCleanup.test_get_unused_media_subfolderœ   sU   € Ø×ÑÐ3Ô4Ü%Ó'ˆ
ÜˆzÓ×,Ñ,¬SÓ1×;Ñ;¸AÔ>ÜŒt”D˜Ó$Ó%Ó&×/Ñ/Ð0LÕMr   c                 ó.  — t        | j                  d«      «      j                  «        | j                  d«       t        | j                  d«      «      j	                  «        t        dg«       t        | j                  d«      «      j                  «        y )NrL   )r   Ú_media_existsÚto_be_falserN   Ú
to_be_truer
   rG   s    r   Útest_remove_mediazTestCleanup.test_remove_media¢   sn   € Üˆt×!Ñ! +Ó.Ó/×;Ñ;Ô=Ø×Ñ˜;Ô'Üˆt×!Ñ! +Ó.Ó/×:Ñ:Ô<Ü�k�]Ô#Üˆt×!Ñ! +Ó.Ó/×;Ñ;Õ=r   c                 ó  — t        t        «       «      j                  «        | j                  d«       t        t        «       «      j                  j                  «        t        «        t        t        «       «      j                  «        y )Nrk   )r   r   rh   rN   r>   r	   rG   s    r   Útest_remove_unused_mediaz$TestCleanup.test_remove_unused_media©   s[   € ÜÔÓ!Ó"×.Ñ.Ô0Ø×Ñ˜>Ô*ÜÔÓ!Ó"×&Ñ&×2Ñ2Ô4ÜÔÜÔÓ!Ó"×.Ñ.Õ0r   c                 óŽ  — | j                  d«       t        «        t        «        t        | j	                  d«      «      j                  «        t        | j	                  d«      «      j                  «        t        | j	                  d«      «      j                  «        t        | j	                  d«      «      j                  «        y ©Nzsub1/sub2/sub3/notused.txtzsub1/sub2/sub3z	sub1/sub2Úsub1)rN   r	   r   r   rv   rw   rG   s    r   Útest_remove_empty_dirsz"TestCleanup.test_remove_empty_dirs°   s�   € Ø×ÑÐ8Ô9ÜÔÜÔÜˆt×!Ñ!Ð"?Ó@ÓA×MÑMÔOÜˆt×!Ñ!Ð"3Ó4Ó5×AÑAÔCÜˆt×!Ñ! ,Ó/Ó0×<Ñ<Ô>Üˆt×!Ñ! 'Ó*Ó+×7Ñ7Õ9r   c                 óz  — | j                  d«       t        «        t        | j                  d«      «      j	                  «        t        | j                  d«      «      j	                  «        t        | j                  d«      «      j	                  «        t        | j                  d«      «      j	                  «        y r}   )rN   r   r   rv   rx   rG   s    r   Ú test_remove_empty_dirs_not_emptyz,TestCleanup.test_remove_empty_dirs_not_empty¹   s‰   € Ø×ÑÐ8Ô9ÜÔÜˆt×!Ñ!Ð"?Ó@ÓA×LÑLÔNÜˆt×!Ñ!Ð"3Ó4Ó5×@Ñ@ÔBÜˆt×!Ñ! ,Ó/Ó0×;Ñ;Ô=Üˆt×!Ñ! 'Ó*Ó+×6Ñ6Õ8r   c                 ó~  — | j                  d«       t        «       }t        |«      j                  t        «      j                  d«       t        t        t        |«      «      «      j                  t        j                  «       t        t        t        |«      «      «      j                  | j                  d«      «       y )Nu   Ð¢ÐµÑ�Ñ‚.txtr   )rN   r   r   r8   rF   r:   rm   rn   ÚsixÚ	text_typeÚto_equalrO   rp   s     r   Útest_ascii_filenamesz TestCleanup.test_ascii_filenamesÁ   s   € Ø×Ñ˜?Ô+Ü%Ó'ˆ
ÜˆzÓ×,Ñ,¬SÓ1×;Ñ;¸AÔ>ÜŒt”D˜Ó$Ó%Ó&×8Ñ8¼¿¹ÔGÜŒt”D˜Ó$Ó%Ó&×/Ñ/°×0DÑ0DÀ_Ó0UÕVr   c                 óÌ   — t         j                  j                  d¬«       t        t	        «       «      j                  t        «      j                  | j                  d«      «       y )Nz./test_rel_path/file1.txt)r!   ztest_rel_path/file1.txt)	r   r+   r,   r   r   r8   rF   r=   rO   rG   s    r   Útest_relative_pathzTestCleanup.test_relative_pathÈ   sL   € Ü×Ñ×&Ñ&Ø2ð 	'ô 	
ô 	Œ~ÓÓ ßÑœsÓ#ß‰Z˜×,Ñ,Ð-FÓGÕHr   c                 óœ  — t         j                  j                  d| j                  d«      ¬«      }t         j                  j                  d| j                  d«      ¬«      }t	        t        «       «      j                  t        «      j                  |j                  j                  «      j                  |j                  j                  «       y )NTzfile_custom_1.txt)r7   r!   Fzfile_custom_2.txt)r   r+   r,   r-   r   r   r8   rF   r=   r!   r   )r3   Úmodel_activeÚmodel_not_actives      r   Útest_custom_managerzTestCleanup.test_custom_managerÐ   s¤   € Ü)×1Ñ1×8Ñ8ØØ×(Ñ(Ð)<Ó=ð 9ó 
ˆô .×5Ñ5×<Ñ<ØØ×(Ñ(Ð)<Ó=ð =ó 
Ðô
 	Œ~ÓÓ ßÑœsÓ#ß‰Z˜×/Ñ/×4Ñ4Ó5ß‰ZÐ(×3Ñ3×8Ñ8Õ9r   )Ú__name__Ú
__module__Ú__qualname__r*   rB   rH   rJ   rP   rU   rW   r]   ra   ÚmockÚpatchr   r   rf   ri   rr   rt   ry   r{   r   r�   r†   rˆ   rŒ   Ú__classcell__)r4   s   @r   r   r      s£   ø„ ô
ò0;ò 7ò7ò	;òJò(Lò1ò
Að €T‡Z�ZÐ=È>ÔZØ€T‡Z�ZÐ5À;ÔOñ4ó Pó [ð4ò
1òCòNò>ò1ò:ò9òWòIö:r   r   )rƒ   r�   Úpreggyr   Ú	django.dbr   Údjango_unused_media.cleanupr   r   r   r   r	   Údjango_unused_media.remover
   r   Úbaser   r   r   r   r   r   r   r   r   r   ú<module>r˜      sA   ðó Û å Ý ÷*õ *ç FÝ ß KÑ Kò-ò#ôE:�,õ E:r   