U
    a±dû  ã                   @   sh   d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ G dd	„ d	eƒZdS )
é    N)Údefaultdict)Úapps)Úsettings)ÚBaseCommandÚCommandError)Úmodels)Úsignalcommandc                   @   s   e Zd ZdZedd„ ƒZdS )ÚCommandzQPrints a list of all files in MEDIA_ROOT that are not referenced in the database.c              
   O   s  t tdƒstdƒ‚tƒ }t tj¡D ]0\}}}|D ] }| tj 	tj 
||¡¡¡ q2q$ttƒ}t ¡ D ].}	|	jjD ] }
t|
jtjƒrr||	  |
¡ qrqftƒ }|D ]N}	|	j ¡  ¡ }|D ]6}||	 D ](}
t ||
jƒ}|rÂ| tj 	|j¡¡ qÂq¶q || }|D ]}t|ƒ qüd S )NÚ
MEDIA_ROOTz$MEDIA_ROOT is not set, nothing to do)Úgetattrr   r   ÚsetÚosÚwalkr
   ÚaddÚpathÚabspathÚjoinr   Úlistr   Z
get_modelsZ_metaÚfieldsÚ
issubclassÚ	__class__r   Z	FileFieldÚappendZobjectsÚallÚiteratorÚnameÚprint)ÚselfÚargsÚoptionsZmediaÚrootÚdirsÚfilesÚfZ
model_dictÚmodelÚfieldZ
referencedr   ÚobjectZtarget_fileZnot_referenced© r&   ú\/tmp/pip-unpacked-wheel-portabvm/django_extensions/management/commands/unreferenced_files.pyÚhandle   s,    
 zCommand.handleN)Ú__name__Ú
__module__Ú__qualname__Úhelpr   r(   r&   r&   r&   r'   r	      s   r	   )r   Úcollectionsr   Zdjango.appsr   Zdjango.confr   Zdjango.core.management.baser   r   Z	django.dbr   Z"django_extensions.management.utilsr   r	   r&   r&   r&   r'   Ú<module>   s   