X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/fe14ab3b5018c92b76e5880dd36b4eb02ef7a3ef..c175a7540d20336179dfd453183bfe69e6f5827e:/apps/archive/views.py diff --git a/apps/archive/views.py b/apps/archive/views.py index c3f4d8c..369e7e4 100644 --- a/apps/archive/views.py +++ b/apps/archive/views.py @@ -95,6 +95,34 @@ def move_to_archive(request, filename): return redirect(list_new) +@require_POST +@permission_required('archive.change_audiobook') +def remove_to_archive(request, aid): + """ move a managed file to the unmanaged files dir """ + + audiobook = get_object_or_404(models.Audiobook, id=aid) + old_path = audiobook.source_file.path + new_path = os.path.join(settings.UNMANAGED_PATH, + str(audiobook.source_file)[len(settings.FILES_SAVE_PATH):].lstrip('/')) + new_dir = os.path.split(new_path)[0] + if not os.path.isdir(new_dir): + os.makedirs(new_dir) + + if not os.path.isfile(old_path): + raise Http404 + + try: + os.link(old_path, new_path) + except OSError: + # destination file exists, don't overwrite it + # TODO: this should probably be more informative + return redirect(file_new, filename) + else: + os.unlink(old_path) + audiobook.delete() + + return redirect(list_unmanaged) + @require_POST @permission_required('archive.change_audiobook') def move_to_new(request, filename): @@ -123,7 +151,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 = { @@ -136,8 +164,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) @@ -231,9 +259,3 @@ def file_unmanaged(request, filename): err_exists = request.GET.get('exists') return render(request, "archive/file_unmanaged.html", locals()) - - -@login_required -def logout_view(request): - logout(request) - return redirect(list_new)