U
    Nd$                     @   sn  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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Z.edddd Z/edddd Z0G dd deZ1G dd deZ2dS )     N)config)datetime)VideoFileClip)User)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   s6   |j jstdS tjj|j d}|dd}t|d|S )Nz
auth:login)Zfile_org__userZallTranscripts)transcriptspagezdashboard.html)useris_authenticatedr   r   objectsfilterr   )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 dkr| jd j}| jd }d}tj|s<t| 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 )N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   )methodFILESnameospathexistsmakedirsr   r   r   splitextr   r/   getsizer   savebotos3Zconnect_to_regionr   str
connectionZOrdinaryCallingFormatZ
get_bucketZnew_keyZset_contents_from_filenamer   r5   )r#   r,   contentr:   Zgenerated_namer.   Zclipr0   new_fileconnbucketkr%   r%   r&   r4   ,   sV    






 r4   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)r5   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#   r5   rN   r%   r%   r&   transcript_statusg   s,    
rU   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'   rT   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   rS   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_urlrO   languagerS   TZraise_exceptionrI   enZsrt_fileZpoesfrr   )rB   rS   r'   replacerZ   r   is_validr?   r   rR   path_srt_porQ   rP   r   r   HTTP_201_CREATEDerrorsHTTP_400_BAD_REQUEST)r"   r#   ZBASE_S3_URL	file_uuidZ	file_langZoriginal_fileZfile_serializerrN   r%   r%   r&   put   s&    

zS3Input.putN)r(   r)   r*   rZ   r'   ro   r%   r%   r%   r&   rV      s   rV   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    allrT   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 )NrI   )r   r    r'   rT   r	   rX   r%   r%   r&   rZ      s    zS3Output.get_objectc                 C   s$   |   }t|dd}t|jtjdS )NTr[   rS   r   )rr   r   r   rS   r   r]   r^   r%   r%   r&   r'      s    zS3Output.getc                 C   st   t |jddd }tjj|d}| |}t||jd}|jddrd|	  t
|jtjdS t
|jtjdS )	Nfile.r   rW   rc   Trd   rs   )rB   rS   r'   splitr   r    rZ   r   ri   r?   r   r   rk   rl   rm   )r"   r#   rn   Zfile_idrN   Ztranscript_serializerr%   r%   r&   ro      s    
zS3Output.putN)r(   r)   r*   rr   rZ   r'   ro   r%   r%   r%   r&   rp      s   rp   )3r9   reloggingZdecoupler   r   Zmoviepy.editorr   django.contrib.auth.modelsr   Zdjango.corer   django.httpr   r   r	   Zdjango.contrib.auth.decoratorsr
   Zdjango.shortcutsr   r   django.viewsr   r@   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__loggerr   r4   rU   rV   rp   r%   r%   r%   r&   <module>   s:   

:
: