Ë
    å°ù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     ú:/var/www/pod-logistic/pod-api-clone/utils/upload_helper.pyÚresponse_errorr      s   € Ü¨$¸7Ñ CÐQ\Ô]Ð]ó    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,   € Ü—g‘g—l‘l¤;°Ó8€OÜ‡K�K� e°dÕ;ØÐ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ÚJPEGéP   )Ú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{  € ðÜ�j‰j˜Ó#ˆð �8‰8�D€A€qØ€GÜ�˜!‘˜W q™[¨!Ó,€Eàˆq‚yÜ�Q˜‘Y“¤ Q¨¡Y£ˆBˆØ�j‰j˜"˜b˜¤5×#3Ñ#3×#;Ñ#;Ó<ˆà
‡x�x�>Ñ! c§h¡h°#¢o¸.ÈCÏHÉHÑ:TÜ�Y‰Y�u˜cŸh™h¨Ó8ˆØ�8‰8�vÒØ�H‰H�S˜sŸy™y›{¨1™~ˆHÕ.à�H‰H�SŒMØ‰Ø	�‰�UÒ	Ø�k‰k˜%Ó ˆä—7‘7×#Ñ# IÓ.�L€IˆqØ�˜DÐ!€HØ‡H�HˆX�v r€HÔ*à�9Ò¤§¡§¡°	Ô!:Ü
�	‰	�)Ôà€Oøô9 ò ØÒðú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  € ô (¨Ó0€OäŸ™×)Ñ)¨(Ó3Ñ€M�3Ü—‘�¨¨]×-@Ñ-@Ó-BÓCÒMÀv€IÜ�z‰z‹|×Ñ  Ð$€HØ
�)‰)�C‹.Ò
!˜E€Cà�[  ( ¨1¨S¨EÐ2€LÜ�7‰7�<‰<˜¨Ó6€Dä	ˆd�DÓ	ð ˜QØ	�‰�Ô÷ñ Ü0°Ó6ˆ
Ü—W‘W×%Ñ% 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½   ðÛ 	Û 	Û Ý *Ý à�7‰7�?‰?˜2Ÿ7™7Ÿ?™?¨2¯7©7¯?©?¸8Ó+DÓEÓF€Ø�g‰g�l‰l˜8 YÓ/€Ø)Ð ñ^˜Cð ^¨có ^òQð˜só ð¨3ó ðL ñ	Øðàðð ðð ô	r   