o
    qg                     @   s   d dl Z 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mZ d dlmZ d dlZedgd	d
 ZdS )    N)ContentFilestatus)api_view)Response)	CustomersCustomerDocument)CustomerSerializerPOSTc                 C   s  z	t jj|d}W n t jy   tdditjd Y S w t| j	
d}zd|d}|r|dsz7||d< t|trRd|v rF|dnd	|f\}}t|}n	t|tr[t|}d
| d}t||d|d< W n ty }	 z|dd  W Y d }	~	nd }	~	ww |dd  W n ty }	 z|dd  W Y d }	~	nd }	~	ww |stddiddS |j|dkrt||dd}
|
 r|
  |dg }|dg }t|trt|tstdditjdS t|t|krtdditjdS g }g d}t|D ]\}}tj|| }tj |\}}|! |vr*tdd| ditjd  S t"j"# $d}| d| | }t|trzd|v rL|dnd	|f\}}t|}W n? ty~ }	 ztdd| dt|	 itjdW  Y d }	~	  S d }	~	ww t|trt|}ntdd| itjd  S t%jj&||t||dd}|'|j(|j)|j*j+d q |
j,}||d< t|tj-dS n	tdd itjdS t|
j.tjdS )!N)pkerrorzCustomer not foundr   zutf-8profile_image)zhttps://zhttp://z;base64, 	customer_.jpg)namezEmpty request bodyi  qr_codeT)instancedatapartial	documents	filenameszInvalid document formatz(Mismatch between documents and filenames)z.pdfr   z.jpegz.pngz.docxz
File type z is not allowed.z%Y%m%d%H%M%S_zInvalid base64 encoding for z: zUnsupported file format for )customerdoc_namedocument)idr   document_urlzCustomer data invalid)/r   objectsgetDoesNotExistr   r   HTTP_404_NOT_FOUNDjsonloadsbodydecode
startswith
isinstancestrsplitbase64	b64decodelistbytesr   	Exceptionpopr   r	   is_validsaveHTTP_400_BAD_REQUESTlen	enumerateospathbasenamesplitextlowerdatetimenowstrftimer   createappendr   r   r   urlr   HTTP_200_OKerrors)requestcustomer_idr   update_datar   formatimgstrprofile_image_bytes	file_namee
serializerr   r   uploaded_documentsallowed_extensionsir   original_filenamefilenamefile_extension	timestampsafe_filenamedocument_bytesdoc_instanceresponse_data rV   B/var/www/rescue_company/customer_api/views/update_customer_data.pyupdate_customer   s   




 


HrX   )r*   r5   r:   django.core.files.baser   rest_frameworkr   rest_framework.decoratorsr   rest_framework.responser   accounts.modelsr   r   +customer_api.serializers.CustomerSerializerr	   r"   rX   rV   rV   rV   rW   <module>   s    