o
    ~gp                     @   s   d dl 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 e dkrPd dlmZ nd dlmZ G dd dejZG dd deZdd Ze Zdd ZdddZdd Z dS )    N)forms)settings)FileExtensionValidator)get_version)Http404)import_string)ImproperlyConfigured)JsonResponse)ContentFile)Imagez4.0)gettext_lazy)ugettext_lazyc                   @   s*   e Zd Zejeeedg dgdZdS )UploadFileFormCKEDITOR_5_UPLOAD_FILE_TYPES)jpegpnggifbmpwebptiff)
validatorsN)	__name__
__module____qualname__r   	FileFieldr   getattrr   upload r   r   2/var/www/Entralon-Web-Backend/entralon/uploader.pyr      s    
r   c                   @   s   e Zd ZdS )NoImageExceptionN)r   r   r   r   r   r   r   r   #   s    r   c                  C   s   t tdd } t tdd }t tdi }|di d}| r!t| S |r9zt|W S  ty8   d| }t|w |rQzt|W S  tyP   d| }t|w d}t|)NCKEDITOR_5_FILE_STORAGEDEFAULT_FILE_STORAGESTORAGESdefaultBACKENDzInvalid default storage class: zaEither CKEDITOR_5_FILE_STORAGE, DEFAULT_FILE_STORAGE, or STORAGES['default'] setting is required.)r   r   getr   ImportErrorr   )storage_settingdefault_storage_settingstorages_settingdefault_storage_name	error_msgr   r   r   get_storage_class&   s,   



r,   c                 C   s(   z
t |   W d S  ty   tw )N)r   openverifyOSErrorr   )fr   r   r   image_verifyD   s
   r1   Fc                 C   s   t  }ttdd}|s7t| }t }|j|dd t|	 d} | t
 j d}||| }||S | | j }||| }||S )NCKEDITOR_5_FILE_UPLOAD WEBP)fpformat)contentz.webp)storager   r   r   r-   ioBytesIOsaver
   getvalueuuiduuid4hexurlname)r0   allfsdefault_storageimageimage_bytesdfilenamer   r   r   handle_uploaded_fileK   s   


rI   c              
   C   s   | j dkrQ| jjrQt| j| j}ttdd}|s?z	t| jd  W n t	y> } zt
dd| iiddW  Y d }~S d }~ww | rQt| jd |}t
d	|iS ttd
)NPOSTCKEDITOR_5_ALLOW_ALL_FILE_TYPESFr   errormessagei  )statusr@   zPage not found.)methoduseris_staffr   rJ   FILESr   r   r1   r   r	   is_validrI   r   _)requestformallow_all_file_typesexr@   r   r   r   custom_upload_function[   s   "rY   )F)!r9   r=   djangor   django.confr   django.core.validatorsr   r   django.httpr   django.utils.module_loadingr   django.core.exceptionsr   r	   django.core.files.baser
   PILr   django.utils.translationr   rT   r   Formr   	Exceptionr   r,   r8   r1   rI   rY   r   r   r   r   <module>   s,    

