X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/d7186e88fcc0cf5d5449a16d3907e01aaafc484e..ff4fa4a4ae20cfb529d495f335cce477ada7f6a1:/src/youtube/views.py?ds=inline diff --git a/src/youtube/views.py b/src/youtube/views.py index 1247c50..4c002ee 100644 --- a/src/youtube/views.py +++ b/src/youtube/views.py @@ -1,10 +1,16 @@ from django.contrib.auth.decorators import permission_required +from django.http import HttpResponse from django.shortcuts import redirect, get_object_or_404 from django.urls import reverse +from django.utils.decorators import method_decorator +from django.utils.timezone import now +from django.views import View from django.views.decorators.http import require_POST +from django.views.generic import DetailView +from django.views.generic.detail import SingleObjectMixin from archive.constants import status from archive.models import Audiobook -from . import tasks +from . import models, tasks @@ -12,10 +18,38 @@ from . import tasks @permission_required('archive.change_audiobook') def publish(request, aid, publish=True): audiobook = get_object_or_404(Audiobook, id=aid) - tags = {} - #audiobook.set_youtube_tags(tags) - audiobook.youtube_status = status.WAITING - audiobook.save(update_fields=['youtube_status']) - audiobook.youtube_task = tasks.YouTubeTask.delay(request.user.id, aid, publish).task_id - audiobook.save(update_fields=['youtube_task']) + if audiobook.is_youtube_publishable: + audiobook.youtube_status = status.QUEUED + audiobook.youtube_queued = now() + audiobook.save(update_fields=['youtube_status', 'youtube_queued']) return redirect(reverse('file', args=[aid])) + + +def thumbnail(request, aid): + audiobook = get_object_or_404(Audiobook, id=aid) + yt = models.YouTube.objects.first() + buf = yt.prepare_thumbnail(audiobook) + return HttpResponse(buf.getvalue(), content_type='image/png') + + +class Preview(DetailView): + model = Audiobook + template_name = 'youtube/preview.html' + + def get_context_data(self, **kwargs): + ctx = super().get_context_data(**kwargs) + yt = models.YouTube.objects.first() + ctx['data'] = yt.get_data(ctx['object']) + ctx['title'] = yt.get_title(ctx['object']) + ctx['description'] = yt.get_description(ctx['object']) + return ctx + + +@method_decorator(permission_required('archive.change_audiobook'), name='dispatch') +class Update(SingleObjectMixin, View): + model = Audiobook + + def post(self, request, pk): + yt = models.YouTube.objects.first() + yt.update_data(self.get_object()) + return redirect(reverse('file', args=[pk]))