X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/db4b95766ce00690d38bff256d77fed006abc54d..d5f57479d0929fe75aee4203ec875d1510f2e4c0:/src/archive/views.py diff --git a/src/archive/views.py b/src/archive/views.py index 2170aff..1d4341e 100644 --- a/src/archive/views.py +++ b/src/archive/views.py @@ -5,6 +5,7 @@ from urllib.parse import quote from archive import settings from django.contrib.auth.decorators import permission_required +from django.contrib.postgres.search import SearchVector from django.urls import reverse from django.db.models import Q, Max from django.http import Http404, HttpResponse @@ -229,7 +230,11 @@ def list_publishing(request): class AudiobookList(ListView): - queryset = models.Audiobook.objects.all() + def get_queryset(self): + qs = models.Audiobook.objects.all() + if 's' in self.request.GET: + qs = qs.annotate(s=SearchVector('title', 'slug')).filter(s=self.request.GET['s']) + return qs @permission_required('archive.change_audiobook') @@ -294,6 +299,33 @@ class BookView(ListView): template_name = 'archive/book.html' def get_queryset(self): - return models.Audiobook.objects.filter(slug=self.kwargs["slug"]).order_by( + qs = models.Audiobook.objects.filter(slug=self.kwargs["slug"]).order_by( "index" ) + last_vol = None + for b in qs: + if last_vol is None or last_vol.youtube_volume != b.youtube_volume: + last_vol = b + b.total = 0 + last_vol.total += b.duration + return list(qs) + + +@permission_required('archive.change_audiobook') +def book_youtube_volume(request, aid): + audiobook = get_object_or_404(models.Audiobook, id=aid) + slug = audiobook.slug + cur_vol = audiobook.youtube_volume + new_vol = request.POST.get('volume', '') + + audiobook.youtube_volume = new_vol + audiobook.save() + + for a in models.Audiobook.objects.filter(slug=slug, youtube_volume=cur_vol, index__gt=audiobook.index).order_by('index'): + if a.youtube_volume != cur_vol: + break + a.youtube_volume = new_vol + a.save() + + return redirect('book', audiobook.slug) +