3
&W                 @   s   d dl mZ 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 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 dd ZG dd dejZeej ZdddZdddZdd Z dd Z!dS )    )absolute_importN)datetime)settings)default_storage)HttpResponse)render_to_response)RequestContext)generic)csrf_exempt)image_processing)utils)
SearchForm)escapec             C   sd   t tddr|j }nd}tj jd}tjjtj	||}t tddrPt
j| } tjtjj|| S )NCKEDITOR_RESTRICT_BY_USERF z%Y/%m/%dZ CKEDITOR_UPLOAD_SLUGIFY_FILENAMET)getattrr   get_usernamer   nowstrftimeospathjoinCKEDITOR_UPLOAD_PATHr   Zslugify_filenamer   Zget_available_name)Zupload_nameuser	user_pathZ	date_pathZupload_path r   W/var/www/html/enquirykeeper_venv/lib/python3.6/site-packages/ckeditor_uploader/views.pyget_upload_filename   s    

r   c               @   s2   e Zd ZdgZdd Zedd Zedd ZdS )	ImageUploadViewpostc             K   s   |j d }tj }t|jd }ttdds\y|j| W n  tj	k
rZ   t
dj|S X | j||}| j|| tj|}t
dj||S )zC
        Uploads a file and send back its URL to CKEditor.
        uploadZCKEditorFuncNumZCKEDITOR_ALLOW_NONIMAGE_FILESTz
                    <script type='text/javascript'>
                    window.parent.CKEDITOR.tools.callFunction({0}, '', 'Invalid file type.');
                    </script>z}
        <script type='text/javascript'>
            window.parent.CKEDITOR.tools.callFunction({0}, '{1}');
        </script>)ZFILESr   Zget_backendr   GETr   r   Zimage_verifyr   ZNotAnImageExceptionr   format
_save_file_create_thumbnail_if_neededget_media_url)selfrequestkwargsuploaded_filebackendZck_func_num
saved_pathurlr   r   r   r   +   s    

zImageUploadView.postc             C   s   t |j| j}tj||}|S )N)r   namer   r   save)r'   r)   filenamer+   r   r   r   r#   H   s    zImageUploadView._save_filec             C   s   | j |r| j| d S )N)Zshould_create_thumbnailZcreate_thumbnail)r*   r+   r   r   r   r$   N   s    
z+ImageUploadView._create_thumbnail_if_neededN)__name__
__module____qualname__Zhttp_method_namesr   staticmethodr#   r$   r   r   r   r   r   (   s   r   r   c             c   s  d}d}t tdd}| r.| j r.|r.| j }nd}tjjtj||}ytj	|}W n& t
k
rf   dS  tk
rx   dS X xN|| D ]B}tjj|d jdstjj|jdrqtjj||}|V  qW xH|| D ]<}	|	jdrqtjj||	}
xt| |
d	D ]}|V  q W qW dS )
zq
    Recursively walks all dirs under upload dir and generates a list of
    full paths for each file found.
    r      r   Fr   NZ_thumb.)r   r   )r   r   Zis_superuserr   r   r   r   r   r   listdirNotImplementedErrorOSErrorsplitextendswithbasename
startswithget_image_files)r   r   ZSTORAGE_DIRECTORIESZSTORAGE_FILESZrestrictr   Zbrowse_pathZstorage_listr/   	directoryZdirectory_pathelementr   r   r   r=   W   s0    
(

r=   c             C   s   g }xt | dD ]}tj|}ttddr|t|rDtjtj|}n
tj|}tj	j
|d }t|dkr|dd d }n|}tj	j
|d }|j||t||d	 qW |S )
z
    Recursively walks all dirs under upload dir and generates a list of
    thumbnail and full image URL's for each file found.
    )r   ZCKEDITOR_IMAGE_BACKENDNr4      r      z...)thumbsrcis_imagevisible_filename)r=   r   r%   r   r   rD   Zget_thumb_filenameZget_icon_filenamer   r   splitlenappend)r   filesr/   rC   rB   rE   r   r   r   get_files_browse_urls~   s$    

rJ   c             C   s   | j dd j }|dkS )	Nr5   r4   jpgjpegpnggif)rK   rL   rM   rN   )rF   lower)r   extr   r   r   rD      s    rD   c                s   t | j}| jdkrPt| j}|j rV|jjddj  t	t
 fdd|}nt }ttdd}ttdd	 |D d
d}tjdkrdd |D }t| ||||d}td|S )NPOSTqr   c                s    | d j  kS )NrE   )rP   )d)queryr   r   <lambda>   s    zbrowse.<locals>.<lambda>ZCKEDITOR_BROWSE_SHOW_DIRSFc             s   s   | ]}t jj|d  V  qdS )rC   N)r   r   dirname).0fr   r   r   	<genexpr>   s    zbrowse.<locals>.<genexpr>T)reversentc             S   s$   g | ]}t jj|d  dkr|qS )rC   z	Thumbs.db)r   r   r;   )rX   rY   r   r   r   
<listcomp>   s    zbrowse.<locals>.<listcomp>)	show_dirsdirsrI   formzckeditor/browse.html)rJ   r   methodr   rR   Zis_validZcleaned_datagetrP   listfilterr   r   sortedsetr   r-   r   r   )r'   rI   r`   r^   Zdir_listcontextr   )rU   r   browse   s"    




rh   )Nr   )N)"
__future__r   r   r   Zdjango.confr   Zdjango.core.files.storager   Zdjango.httpr   Zdjango.shortcutsr   Zdjango.templater   Zdjango.viewsr	   Zdjango.views.decorators.csrfr
   Zckeditor_uploaderr   r   Zckeditor_uploader.formsr   Zdjango.utils.htmlr   r   ZViewr   Zas_viewr    r=   rJ   rD   rh   r   r   r   r   <module>   s(   ,
'
