X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/d4ae69daba9be2dc07e2ec064cffde51b82a9937..82a29bd6e0f7da1aa759d7f4481e6cf3c736f981:/apps/archive/views.py diff --git a/apps/archive/views.py b/apps/archive/views.py index 59239d2..e76da74 100644 --- a/apps/archive/views.py +++ b/apps/archive/views.py @@ -3,13 +3,14 @@ from datetime import datetime import os import os.path +from urllib import quote from archive import settings from django.contrib.auth import logout from django.contrib.auth.decorators import login_required, permission_required from django.core.urlresolvers import reverse from django.db.models import Q, Max -from django.http import Http404 +from django.http import Http404, HttpResponse from django.shortcuts import render, redirect, get_object_or_404 from django.views.decorators.http import require_POST @@ -151,7 +152,7 @@ def move_to_new(request, filename): @require_POST @permission_required('archive.change_audiobook') -def publish(request, aid): +def publish(request, aid, publish=True): """ mark file for publishing """ audiobook = get_object_or_404(models.Audiobook, id=aid) tags = { @@ -164,8 +165,8 @@ def publish(request, aid): audiobook.mp3_status = audiobook.ogg_status = status.WAITING audiobook.save() # isn't there a race here? - audiobook.mp3_task = tasks.Mp3Task.delay(aid).task_id - audiobook.ogg_task = tasks.OggTask.delay(aid).task_id + audiobook.mp3_task = tasks.Mp3Task.delay(aid, publish).task_id + audiobook.ogg_task = tasks.OggTask.delay(aid, publish).task_id audiobook.save() return redirect(file_managed, aid) @@ -183,6 +184,22 @@ def cancel_publishing(request, aid): return redirect(file_managed, aid) +def download(request, aid, which="source"): + if which not in ("source", "mp3", "ogg"): + raise Http404 + audiobook = get_object_or_404(models.Audiobook, id=aid) + file_ = getattr(audiobook, "%s_file" % which) + if not file_: + raise Http404 + ext = file_.path.rsplit('.', 1)[-1] + response = HttpResponse(mimetype='application/force-download') + + response['Content-Disposition'] = "attachment; filename*=UTF-8''%s.%s" % ( + quote(audiobook.title.encode('utf-8'), safe=''), ext) + response['X-Sendfile'] = file_.path.encode('utf-8') + return response + + @login_required def list_unpublished(request): division = 'unpublished'