X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/5715ba5816c2773949689461f715a08caa8c5d11..17813a3d7d0c5d291da414b89f3a5c1a936ada64:/src/archive/views.py diff --git a/src/archive/views.py b/src/archive/views.py index cafda5d..cef9bbc 100644 --- a/src/archive/views.py +++ b/src/archive/views.py @@ -8,7 +8,7 @@ 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 +from django.http import Http404, HttpResponse, JsonResponse from django.shortcuts import render, redirect, get_object_or_404 from django.utils.translation import gettext as _ from django.views.decorators.http import require_POST @@ -70,9 +70,8 @@ def file_new(request, filename): def move_to_archive(request, filename): """ move a new file to the unmanaged files dir """ - filename_str = filename.encode('utf-8') - old_path = os.path.join(settings.NEW_PATH, filename_str) - new_path = os.path.join(settings.UNMANAGED_PATH, filename_str) + old_path = os.path.join(settings.NEW_PATH, filename) + new_path = os.path.join(settings.UNMANAGED_PATH, filename) new_dir = os.path.split(new_path)[0] if not os.path.isdir(new_dir): os.makedirs(new_dir) @@ -131,9 +130,8 @@ def remove_to_archive(request, aid): def move_to_new(request, filename): """ move a unmanaged file to new files dir """ - filename_str = filename.encode('utf-8') - old_path = os.path.join(settings.UNMANAGED_PATH, filename_str) - new_path = os.path.join(settings.NEW_PATH, filename_str) + old_path = os.path.join(settings.UNMANAGED_PATH, filename) + new_path = os.path.join(settings.NEW_PATH, filename) new_dir = os.path.split(new_path)[0] if not os.path.isdir(new_dir): os.makedirs(new_dir) @@ -157,20 +155,7 @@ def move_to_new(request, filename): def publish(request, aid, publish=True): """ mark file for publishing """ audiobook = get_object_or_404(models.Audiobook, id=aid) - tags = { - 'name': audiobook.title, - 'url': audiobook.url, - 'tags': audiobook.new_publish_tags(), - } - audiobook.set_mp3_tags(tags) - audiobook.set_ogg_tags(tags) - audiobook.mp3_status = audiobook.ogg_status = status.WAITING - audiobook.save() - # isn't there a race here? - audiobook.mp3_task = tasks.Mp3Task.delay(request.user.id, aid, publish).task_id - audiobook.ogg_task = tasks.OggTask.delay(request.user.id, aid, publish).task_id - audiobook.save() - + audiobook.publish(request.user, publish=publish) return redirect(file_managed, aid) @@ -287,7 +272,7 @@ def list_unmanaged(request): def file_unmanaged(request, filename): - tags = mutagen.File(os.path.join(settings.UNMANAGED_PATH, filename.encode('utf-8'))) + tags = mutagen.File(os.path.join(settings.UNMANAGED_PATH, filename)) if not tags: tags = {} @@ -302,15 +287,41 @@ class BookView(ListView): qs = models.Audiobook.objects.filter(slug=self.kwargs["slug"]).order_by( "index" ) - total = 0 last_vol = None + last_vol_sub = None for b in qs: - if last_vol != b.youtube_volume: - last_vol = b.youtube_volume - total = 0 - total = b.total = total + b.duration + if last_vol is None or last_vol.youtube_volume_index != b.youtube_volume_index: + last_vol = b + b.total = 0 + if last_vol_sub is None or b.youtube_volume: + last_vol_sub = last_vol + last_vol_sub.total_for_sub = 0 + last_vol.total += b.duration + last_vol_sub.total_for_sub += b.duration + b.subtotal = last_vol_sub.total_for_sub return list(qs) +def book_json(request, slug): + qs = models.Audiobook.objects.filter(slug=slug).order_by( + "index" + ) + return JsonResponse({ + "items": [ + { + "id": item.id, + "part": item.part_name, + "mp3_status": item.get_mp3_status_display(), + "ogg_status": item.get_ogg_status_display(), + "youtube_status": item.get_youtube_status_display(), + "project": { + "name": item.project.name, + "can_sell": item.can_sell, + } + } + for item in qs + ] + }) + @permission_required('archive.change_audiobook') def book_youtube_volume(request, aid): @@ -322,7 +333,7 @@ def book_youtube_volume(request, aid): audiobook.youtube_volume = new_vol audiobook.save() - for a in models.Audiobook.objects.filter(youtube_volume=cur_vol, index__gt=audiobook.index).order_by('index'): + 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