
    Ќi	              	       V   d dl Z d dlZd dlZd dlmZ d dlmZ e j                  j                  e j                  j                  e j                  j                  e
                  Ze j                  j                  ed      ZdZddedefdZd	 Zd
efdZdefdZ	 ddeded
edefdZy)    NJSONResponse)Imageuploadsz/pod-api/uploadsmessagestatus_codec                 "    t        d| d|      S )NT)errorr   contentr   r   )r   r   s     4/var/www/pod-logistic/pod-api/utils/upload_helper.pyresponse_errorr      s    $7 CQ\]]    c                 "    t        d| dd      S )NF)r
   data   r   r   )r   s    r   response_successr      s    % >CPPr   sub_dirc                 ~    t         j                  j                  t        |       }t        j                  |dd       |S )Ni  T)modeexist_ok)ospathjoinUPLOADS_DIRmakedirs)r   upload_base_dirs     r   ensure_upload_dirr      s,    ggll;8OKKed;r   	file_pathc                    	 t        j                  |       }|j                  \  }}d}t	        ||z  ||z  d      }|dk  rHt        ||z        t        ||z        }}|j                  ||ft         j                  j                        }|j                  dv s|j                  dk(  rwd|j                  v rit        j                  d|j                  d      }|j                  dk(  r%|j                  ||j                         d	   
       n|j                  |       |}n |j                  dk7  r|j                  d      }t        j                   j#                  |       \  }	}
|	 d}|j%                  |dd       || k7  r4t        j                   j'                  |       rt        j(                  |        |S # t        $ r | cY S w xY w)Ni     )RGBALAPtransparencyRGB)   r'   r'   r"      )maskz.jpgJPEGP   )quality)r   openIOErrorsizeminintresize
ResamplingLANCZOSr   infonewpastesplitconvertr   r   splitextsaveexistsremove)r   imgwhmax_dimrationwnhbg	base_name_jpg_paths               r   convert_to_jpg_and_compressrI      s{   jj# 88DAqG!Wq[!,EqyQYQYBjj"b5#3#3#;#;<
xx>!chh#o.CHH:TYYuchh888vHHSsyy{1~H.HHSM	U	kk% 77##I.LIqD!HHHXvrH*9	!:
		)O9  s   F2 2G ?G filenamer   is_imgc                 R   t        |      }t        j                  j                  |       \  }}t	        j
                  dd|j                               xs d}t        j                         j                  d d }|j                  d      xs d}| d| d| }	t        j                  j                  ||	      }
t        |
d      5 }|j                  |       d d d        |r+t        |
      }t        j                  j                  |      }n|	}|t          d| d| d	S # 1 sw Y   IxY w)
Nz[^a-z0-9\-]+-file   .tmpwb/)rJ   r   )r   r   r   r:   resubloweruuiduuid4hexstripr   r-   writerI   basenameUPLOAD_PUBLIC_PREFIX)rJ   r   r   rK   r   original_nameext	safe_namerand_strnew_filenamer   f
final_path
final_names                 r   store_uploaded_file_contentrf   <   s    (0O))(3M3]-@-@-BCMvIzz|$H
))C.
!EC[(1SE2L77<<6D	dD	 Q	 06
WW%%j1
!
 '('!J<@  s   DD&)i  )F)r   rT   rW   fastapi.responsesr   PILr   r   dirnameabspath__file__BASE_DIRr   r   r]   strr1   r   r   r   rI   bytesboolrf    r   r   <module>rq      s    	 	  * 77??277??277??8+DEFggll8Y/) ^C ^c ^Qs 3 L 	  	r   