from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.db import models
from .models import *
from django.contrib import messages
from datetime import datetime
from moviepy.editor import VideoFileClip
import os
from .forms import FilesForm
import os
import boto
import boto.s3.connection
from boto.s3.key import Key

from .tasks import check_for_SRT_file

def home(request):
    return HttpResponse('home.html')

def login(request):
    return render(request, "registration/login.html")

def dologin(request):

    now=datetime.now()
    username = request.POST.get('username')
    password = request.POST.get('password')
    print('the username is :',username)
    print('the password is :',password)
    try:
        data=Users.objects.filter(username=username).get(password=password)
    except Users.DoesNotExist:
        messages.error(request, 'Someting Wrong.')
        return render(request,'registration/login.html')
    if data:
        request.session['islogged'] = 'yes'
        request.session['id_user'] = str(data.id_user)
        data.last_time=str(now).split('.')[0]
        data.save()
        #return redirect('upload')
        return render(request,'registration/upload.html')
    else:
        messages.error(request, 'Error detected.')


def save_file(content,filename):
    #video =request.POST.get('filename')
    # video_path="media/"+filename
    # clip = VideoFileClip("media/"+filename)
    video_path=filename
    clip = VideoFileClip(filename)
    duration=clip.duration
    extension= filename.split('.')[-1]

    now=datetime.now()
    when_uploaded=str(now).split('.')[0]

    #print('the video name is :',video)
    new_file = Files(video_path=video_path,duration=duration,extension=extension,when_uploaded=when_uploaded)
    new_file.save()


    #return redirect('home')
    #return render(request, "registration/upload.html")

def handle_uploaded_file(file, path, filename):
    # with open(path+"/"+filename, 'wb+') as destination:
    with open(filename, 'wb+') as destination:
        # for chunk in file.chunks():
        #     destination.write(chunk)

        #with open(image_path, 'wb+') as destination:
        if type(file) == str:
            destination.write(file.encode())   # or whatever you actually want to do if it's a string
        else:
            for chunk in file.chunks():
                destination.write(chunk)

def upload(request):
    if request.method == 'POST':
        filename= request.FILES['filename'].name
        content = request.FILES['filename']

       # objects=Files()
        print('the file name is :',filename)
        #path = "media/"
        path="/"
        if not os.path.exists(path):
            os.makedirs(path)
        handle_uploaded_file(content, path, filename)
        save_file(content,filename)

        # try:

        conn = boto.s3.connect_to_region('us-east-2',
        aws_access_key_id = 'AKIAT6THLFM7NTAL4XWX',
        aws_secret_access_key = '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',
        # host = 's3-website-us-east-1.amazonaws.com',
        # is_secure=True,               # uncomment if you are not using ssl
        calling_format = boto.s3.connection.OrdinaryCallingFormat(),
        )

        bucket = conn.get_bucket('input-transcribe-bucket')
        key_name = filename
        # path = 'media/'+filename #Directory Under which file should get upload
        path = '/'
        full_key_name = os.path.join(path, key_name)
        k = bucket.new_key(full_key_name)
        # k.set_contents_from_filename('media/'+key_name)
        k.set_contents_from_filename(key_name)

        # Celery Task That Check Each 5 Seconds If A SRT File Is Created And Show It To User Else ShowS Please Wait !!!
        #  URL + lANG + Filename + srt/vtt
        # Connextion Global S3 Bucket convertion-html-to-srt
        # Request To Get A File With Name "LANG + Filename + srt/vtt "
        # Json Respense FILE INFO / FILE NOT EXIST
        #  attributes = [ "fr", "es", "po", "en"]
        lang      = "es"
        fileshort = filename.split(".")[0]
        # fileshort = "rcm"
        result    = check_for_SRT_file.apply_async(args=[f"{lang}_{fileshort}.srt"])
        print(result)
        #
       # except Exception as e:
            # print( str(e))
            # print( "error"  )
      #  insert_sfr(path+'/'+filename)
    return render(request , "registration/about.html" )



