
    yi                        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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mZ d dlmZ h dZdZ ej@                  e!      Z" G d de      Z#d Z$y)    N)settings)APIView)IsAuthenticated)ValidationError)MultiPartParser
FormParser)Responsestatus)transaction)SupportTicketStatus)SupportTicketSupportTicketImage)SupportTicketCreateSerializer)support_ticket_email_context)EmailService>   	image/png
image/jpeg
image/webpi   c                   $    e Zd ZdZegZeefZd Z	y)SupportTicketCreateViewz?
    Create a support ticket with optional images (max 5).
    c           	         t        | j                  j                  j                                t	        |j                        }|j                  d       |j                  j                  d      }t        |      dkD  rt        ddit        j                        S 	 t        j                         5  t        j                  j!                  |j"                  |j$                  d	   |j$                  j'                  d
t(        j*                              }g }|D ]`  }t-        |       t.        j                  j!                  |||j0                  |j2                  |j4                        }|j7                  |       b 	 d d d        	 tC        |      }	tE        tF        jH                        }
|
D ]  }|jK                  d      d   }|jM                  dd      jM                  dd      jO                         }i |	d|i}tP        jS                  |       tU        jV                  d|jX                   d|g|        	 t        ddit        jZ                        S # 1 sw Y   xY w# t8        $ r>}t        dt;        |j<                  d          it        j                        cY d }~S d }~wt>        $ r(}t        d| it        j@                        cY d }~S d }~ww xY w# t>        $ r"}tP        jS                  d|        Y d }~d }~ww xY w)N)dataT)raise_exceptionimages   errorz%You can upload a maximum of 5 images.r
   descriptionr   )userr   r   )ticketimageoriginal_namecontent_typesizer   @. _recipient_namezNew Support Ticket #z#support/support_ticket_created.html)subjecthtml_contentrecipient_listkeyzEmail sending failed messagezTicket created successfully.).printrequestr   keysr   is_validFILESgetlistlenr	   r   HTTP_400_BAD_REQUESTr   atomicr   objectscreater   validated_datagetr   OPENvalidate_uploaded_filer   namer#   r$   appendr   strdetail	ExceptionHTTP_500_INTERNAL_SERVER_ERRORr   listr   EMPTY_RECIPIENT_NOTIFY_EMAILSsplitreplacetitleloggerwarningr   
send_emailidHTTP_201_CREATED)selfr0   
serializerr   r    saved_imagesr!   objectx
recipientsemailr)   ctx_with_recipientexcs                  V/var/www/html/dp2/backend_v2.1/server/apps/support/views/support_ticket_create_view.pypostzSupportTicketCreateView.post%   s   dll$$&'2

 	D1&&x0v;?AB22 
!	##%&..55  * 9 9- H%4488 +00 6   "#E*51,44;;%#&+jj%*%7%7"ZZ < C !'', $ &D	.vw?ChDDEJ#!&S!1!!4!/!7!7S!A!I!I#s!S!Y!Y![&&$n&"
 ~.''2699+>!F$)7*	 $* 9 **	
 	
y &%,  	S!-.022 
  	QC!<< 	8  	NN23%89	sb   I" 1C	I;I" B4K II" "	K+3J$K$K0KKK	L$LLN)
__name__
__module____qualname____doc__r   permission_classesr   r   parser_classesrY        rX   r   r      s"     **%z2NR
ra   r   c                    | j                   t        kD  rt        d      | j                  t        vrt        d      t        j                  | j                  d      d      }| j                  d       |t        vrt        d      y)Nz!File too large. Max 10MB allowed.zIUnsupported file type. Please upload a PNG, JPG, or JPEG file (Max 10MB).i   T)mimer   z0File content does not match allowed image types.)	r$   MAX_FILE_SIZEr   r#   ALLOWED_MIME_TYPESmagicfrom_bufferreadseek)filerc   s     rX   r=   r=   y   sz    yy= /
 	

  22ijj TYYt_48DIIaL%%PQQra   )%rf   loggingdjango.confr   rest_framework.viewsr   rest_framework.permissionsr   rest_framework.exceptionsr   rest_framework.parsersr   r   rest_framework.responser	   rest_frameworkr   	django.dbr   apps.support.choicesr   apps.support.modelsr   r   apps.support.serializersr   apps.support.servicesr   apps.calls.servicesr   re   rd   	getLoggerrZ   rI   r   r=   r`   ra   rX   <module>rz      sg        ( 6 5 > , ! ! 4 A B > ,  !			8	$Y
g Y
vra   