U
    $8d%                     @   sz  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 d dlmZ d dlmZmZmZ d d	lmZ d d
lmZmZ d dlm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$ ddl%m&Z&m'Z' ddl(m)Z)m*Z* ddlm+Z+m,Z, e-e.Z/G dd deZ0edddd Z1edddd Z2G dd de Z3G dd  d e Z4dS )!    N)config)datetime)VideoFileClip)User)
cache_page)serializers)HttpResponseJsonResponseHttp404)login_required)renderredirect)View)Keystatus)APIView)Response   )check_transcripts)FileTranscripts)generate_namehandle_uploaded_file)FileSerializerTranscriptsSerializerc                   @   s   e Zd Zdd ZdS )ListTranscriptsc                 C   sX   |j jstdS d }|j jr(tj }ntjj|j d}t	| |dd}t
|d|S )Naccounts:login)Zfile_org__userZallTranscripts)transcriptspagezdashboard.html)useris_authenticatedr   is_superuserr   objectsallfilterloggerinfor   )selfrequestr   context r+   3/var/www/html/subscibe_interface/interface/views.pyget    s    
zListTranscripts.getN)__name__
__module____qualname__r-   r+   r+   r+   r,   r      s   r   z/auth/login)Z	login_urlc                 C   s$  | j jstdS | jdkr| jd j}| jd }d}tj|sLt	| t
|}t||| || }t|}tj|\}}t|||j|tj|| j d}|  tjjtddtdtd	d
tdtddtdtjj d}	|	d}
|
|}|| t| d|jddS t| dddiS )Nr   POSTfilenamezmedia/)
file_title
video_pathduration	extensionsizer    Z
AWS_REGIONz	us-west-2)defaultcastZAWS_ACCESS_KEY_IDZAKIAT6THLFM7NTAL4XWXZAWS_SECRET_ACCESS_KEYz(iGzTVrIAOLQNRes8HvUwZSq/8LBqaH3aanR+sxNS)Zregion_nameZaws_access_key_idZaws_secret_access_keyZcalling_formatzinput-transcribe-bucketzupload.htmlupload)id_filer   r   )r    r!   r   methodFILESnameospathexistsmakedirsr   r   r   splitextr   r5   getsizesavebotos3Zconnect_to_regionr   str
connectionZOrdinaryCallingFormatZ
get_bucketZnew_keyZset_contents_from_filenamer   r;   )r)   r2   contentr@   Zgenerated_namer4   Zclipr6   new_fileconnbucketkr+   r+   r,   r:   1   sZ    






 r:   c              	   C   s   zbt jjtjj|dd}|jrF|jrF|jrFtdddt|j	dW S tddd	t|j	dW S W n( t j
k
r   td
dd	dd Y S X d S )Nr;   file_org   zTranscript Found With All Infoz&Your file Has Been processed Complety.)r   detailmessage
transcriptr   z(Transcript Founded With Initial Creationz/Please wait, your file is processing Right Now.r   zTranscript Not Found )r   r#   r-   r   path_srt_frpath_srt_espath_srt_enr	   r   dataDoesNotExist)r)   r;   rU   r+   r+   r,   transcript_statusn   s,    
r\   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )S3Inputc                 C   s0   zt jj|dW S  t jk
r*   tY nX dS )zJ
        Helper method to retrieve a File object by UUID in name.
        )Zvideo_path__containsN)r   r#   r-   r[   r
   r(   idr+   r+   r,   
get_object   s    zS3Input.get_objectc                 C   s*   t jj|jd}t|dd}t|jtjS )z
        Handles GET requests to retrieve all the File objects in the database.
        Returns a JSON response with the serialized data.
        )r    Tmany)	r   r#   r%   r    r   r   rZ   r   HTTP_200_OKr(   r)   queryset
serializerr+   r+   r,   r-      s    zS3Input.getc                 C   s   d}t |jd|d}t |jd}| |}t||jd}|jddr|  t|d}d	|krx|jd
|_	d|kr|jd
|_
d|kr|jd
|_d|kr|jd
|_|  t|jtjdS t|jtjdS )z
        Handles PUT requests to update a File object in the database.
        Expects the request object to have file_s3_url, language, and srt_file fields.
        z;https://input-transcribe-bucket.s3.us-east-2.amazonaws.com/file_s3_urlrV   languagerZ   TZraise_exceptionrP   enZsrt_filepoesfrr   )rH   rZ   r-   replacer`   r   is_validrE   r   rY   path_srt_porX   rW   r   r   HTTP_201_CREATEDerrorsHTTP_400_BAD_REQUEST)r(   r)   ZBASE_S3_URL	file_uuidZ	file_langZoriginal_fileZfile_serializerrU   r+   r+   r,   put   s&    

zS3Input.putN)r.   r/   r0   r`   r-   rv   r+   r+   r+   r,   r]      s   r]   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
S3Outputc                 C   s,   zt j W S  t jk
r&   tY nX d S )N)r   r#   r$   r[   r
   )r(   r+   r+   r,   get_objects   s    zS3Output.get_objectsc                 C   s0   zt jj|dW S  t jk
r*   tY nX d S )NrP   )r   r#   r-   r[   r
   r^   r+   r+   r,   r`      s    zS3Output.get_objectc                 C   s$   |   }t|dd}t|jtjdS )NTra   rZ   r   )rx   r   r   rZ   r   rc   rd   r+   r+   r,   r-      s    zS3Output.getc                 C   s|   t |jddd }t| tjj|d}| |}t||jd}|j	ddrl|
  t|jtjdS t|jtjdS )	Nfile.r   rO   ri   Trj   ry   )rH   rZ   r-   splitprintr   r#   r`   r   rp   rE   r   r   rr   rs   rt   )r(   r)   ru   Zfile_idrU   Ztranscript_serializerr+   r+   r,   rv      s    
zS3Output.putN)r.   r/   r0   rx   r`   r-   rv   r+   r+   r+   r,   rw      s   rw   )5r?   reloggingZdecoupler   r   Zmoviepy.editorr   django.contrib.auth.modelsr   django.views.decorators.cacher   Zdjango.corer   django.httpr   r	   r
   Zdjango.contrib.auth.decoratorsr   Zdjango.shortcutsr   r   django.viewsr   rF   Zboto.s3.connectionZboto.s3.keyr   rest_frameworkr   Zrest_framework.viewsr   Zrest_framework.responser   tasksr   modelsr   r   utilsr   r   r   r   	getLogger__file__r&   r   r:   r\   r]   rw   r+   r+   r+   r,   <module>   s<   

<
: