Ë
    ¸2Úi  ã                   óB   — d dl mZ d dlmZ d dlmZ ddlmZ d	d„Zd„ Z	y)
é    )Úchain)ÚNestedObjects)Úrouteré   )ÚDELETED_BY_CASCADE_FIELD_NAMEc                 óæ   ‡ ‡‡‡— t        t        j                  t        ‰ «      «      ¬«      Š‰j	                  ‰ g«       ˆˆˆ ˆfd„Št        j                  t        ‰‰j                  d   «      «      S )zß Return a generator to the objects that would be deleted if we delete "obj" (excluding obj)

    Args:
        only_deleted_by_cascade: Include filter in flatten method to bypass elements controling undelete cascading.
    )Úusingc                 óæ   •— t        | t        «      r| S ‰| k(  s‰rt        | t        d«      rF| ‰k7  r| fndg‰j                  j                  | g «      ¢} t        j                  t        ‰| «      «      S y)NF© )	Ú
isinstanceÚtupleÚgetattrr   ÚedgesÚgetr   Úfrom_iterableÚmap)ÚelemÚ	collectorÚflattenÚobjÚonly_deleted_by_cascades    €€€€úG/var/www/html/acx/venv/lib/python3.12/site-packages/safedelete/utils.pyr   z related_objects.<locals>.flatten   sl   ø€ Ü�dœEÔ"ØˆKØ�DŠ[Ñ 7¼7À4ÔIfÐhmÔ;nØ# sš{�T‘G°ÐS°Y·_±_×5HÑ5HÈÈrÓ5RÐSˆDÜ×&Ñ&¤s¨7°DÓ'9Ó:Ð:Øó    N)	r   r   Údb_for_writeÚtypeÚcollectr   r   r   r   )r   r   r   r   s   ``@@r   Úrelated_objectsr   	   sV   û€ ô ¤F×$7Ñ$7¼¸S»	Ó$BÔC€IØ×Ñ�s�eÔ÷ô ×Ñœs 7¨I¯O©O¸DÑ,AÓBÓCÐCr   c                 ó>   — t        t        t        | «      «      «       S )N)ÚboolÚlistr   )r   s    r   Úcan_hard_deleter!      s   € Ü”Dœ¨Ó-Ó.Ó/Ð/Ð/r   N)F)
Ú	itertoolsr   Údjango.contrib.admin.utilsr   Ú	django.dbr   Úconfigr   r   r!   r   r   r   ú<module>r&      s   ðÝ å 4Ý å 1óDó*0r   