import os

from .models import Video, READY
from .s3_uploader import upload_file
from .utils import asset_upload

from cp_video.celery import app


@app.task(soft_time_limit=60)
def send_video_to_s3():
    local_videos = Video.objects.filter(local_file__isnull=False)

    for local_video in local_videos:
        video_name = local_video.local_file.name.split('/')[-1]
        key = asset_upload(local_video, video_name)
        content = local_video.local_file.read()

        local_video.s3_file = upload_file(content, key, 'video/mp4')
        local_video.status = READY

        local_video.save(update_fields=['s3_file', 'status'])
        os.remove(local_video.local_file.path)

    local_videos.update(local_file=None)