
    h                         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
mZ ddlmZ  ee
      Z G d d	      Z G d
 de      Zy)    N)File)BaseCommand   )Folder)FILER_IMAGE_MODELFILER_IS_PUBLIC_DEFAULT)
load_modelc                   &    e Zd Zd Zd Zd ZddZy)FileImporterc                     |j                  d      | _        |j                  d      | _        t        |j                  dd            | _        d| _        d| _        d| _        y )Npathbase_folder	verbosity   r   )getr   r   intr   file_createdimage_createdfolder_created)selfargskwargss      V/home/dcms/DCMS/lib/python3.12/site-packages/filer/management/commands/import_files.py__init__zFileImporter.__init__   sR    JJv&	!::m4VZZQ78    c           
      D   ddl m} 	 t        j                  j	                  |j
                        d   j                         }||v rLt        j                  j                  |j
                  ||t              \  }}|ra| xj                  dz  c_        nKt        j                  j                  |j
                  ||t              \  }}|r| xj                  dz  c_        | j                  dk\  r+t        d| j                  d| j                  d	|d
|       |S #  d}Y xY w)zA
        Create a File or an Image into the given folder
        r   )IMAGE_EXTENSIONSr    )original_filenamefilefolder	is_public   zfile_created # / image_created #z -- file :  -- created : )settingsr   osr   splitextnamelowerImageobjectsget_or_creater   r   r   r   r   print)r   file_objr!   r   iextobjcreateds          r   import_filezFileImporter.import_file   s    	1	77##HMM215;;=D ## ==66"*--1	 7 3LC
 ""a'"<<55"*--1	 6 3LC
 !!Q&!>>QY]YjYj8<8J8J8;WF G 
-	Ds   :D Dc           	         t        |      syd}|D ]l  }t        j                  j                  ||      \  }}|s*| xj                  dz  c_        | j
                  dk\  sOt        d| j                  d|d|       n |S )a.  
        Gets or creates a Folder based the list of folder names in hierarchical
        order (like breadcrumbs).

        get_or_create_folder(['root', 'subfolder', 'subsub folder'])

        creates the folders with correct parent relations and returns the
        'subsub folder' instance.
        N)r)   parentr   r#   folder_created #z
 folder : r%   )lenr   r,   r-   r   r   r.   )r   folder_namescurrent_parentfolder_namer2   s        r   get_or_create_folderz!FileImporter.get_or_create_folder7   s     < ' 	}K&,nn&B&B\j&B&k#NG##q(#>>Q&dNaNacqsz{|	} r   Nc           
          |xs | j                   xs d}|xs | j                  }t        j                   j                  |      }|r-t        j                   j                  |      }t	        d|       | j
                  dk\  rt	        d|       t        j                   j                  |      }t        j                  |      D ]  \  }}}|j                  |      d   j                  t        j                   j                        j                  t        j                   j                        }d|v r|j                  d       d|v r|r|j                  d      |gz   |z   }n|g|z   }| j                  |      }	|D ]K  }
t        t        t        j                   j!                  ||
      d      |
	      }| j#                  ||	
       M  | j
                  dk\  r3t	        d| j$                  d| j&                  d| j(                         yy)zq
        This method walk a directory structure and create the
        Folders and Files as they appear.
        r   z,The directory structure will be imported in r   z Import the folders and files in r#   /rb)mode)r)   )r/   r!   r6   z / file_created #r$   N)r   r   r'   normpathr.   r   basenamewalk	partitionstripsepsplitremover;   
DjangoFileopenjoinr3   r   r   r   )r   r   r   root_folder_namerootdirsfilesrel_foldersr8   r!   r/   dj_files               r   walkerzFileImporter.walkerL   s   
 &tyy&B!5T%5%5ww%''**;7KkST>>Q$@A77++D1!# 	BD$...q177DJJ277;;WK#""2& #*0059I8JJ[X 01K?..|<F! B$T"'',,tX*FT%R*24  '& AB	B >>QX\XkXkmqm~m~  AE  AS  AS  T  U r   )NN)__name__
__module____qualname__r   r3   r;   rQ    r   r   r   r      s     >*Ur   r   c                       e Zd ZdZd Zd Zy)Commandz
    Import directory structure into the filer ::

        manage.py --path=/tmp/assets/images
        manage.py --path=/tmp/assets/news --folder=images
    c                 \    |j                  ddddd       |j                  dddd	d
       y )Nz--pathstorer   Tz2Import files located in the path into django-filer)actiondestrequiredhelpz--folderr   FzRSpecify the destination folder in which the directory structure should be imported)rZ   r[   defaultr]   )add_argument)r   parsers     r   add_argumentszCommand.add_argumentss   sH    E 	 	
 	e 	 	
r   c                 :    t        di |}|j                          y )NrU   )r   rQ   )r   r   optionsfile_importers       r   handlezCommand.handle   s    $/w/r   N)rR   rS   rT   __doc__ra   re   rU   r   r   rW   rW   l   s    
"r   rW   )r'   django.core.filesr   rH   django.core.management.baser   models.filemodelsmodels.foldermodelsr   r&   r   r   utils.loaderr	   r+   r   rW   rU   r   r   <module>rl      sB    	 0 3 % ) B & 	$%ZU ZUzk r   