
^Q\                 @   s   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z Gd d	   d	 e  Z d S)
    N)defaultdict)apps)settings)BaseCommand)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  j d k r t d  d  St   } x\ t j t  j  D]H \ } } } x6 | D]. } | j t j j t j j	 | |    qO Wq9 Wt
 t  } xT t j   D]F }	 x= |	 j j D]/ }
 t |
 j t j  r | |	 j |
  q q Wq Wt   } x | D]x }	 |	 j j   j   } xZ | D]R } xI | |	 D]= }
 t | |
 j  } | r+| j t j j | j   q+q+WqWq W| | } x | D] } t |  qWd  S)N z$MEDIA_ROOT is not set, nothing to do)r   Z
MEDIA_ROOTprintsetoswalkaddpathabspathjoinr   listr   Z
get_modelsZ_metafields
issubclass	__class__r   Z	FileFieldappendZobjectsalliteratorgetattrname)selfargsoptionsZmediarootdirsfilesfZ
model_dictmodelfieldZ
referencedr   objecttarget_fileZnot_referenced r&   i/var/www/dbchiro/venv/build/django-extensions/django_extensions/management/commands/unreferenced_files.pyhandle   s.    
	"0	+
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   Z	django.dbr   Z"django_extensions.management.utilsr   r   r&   r&   r&   r'   <module>   s   