X-Git-Url: https://git.mdrn.pl/audio.git/blobdiff_plain/4b12909e7f1dfc333c128fed75958691226dff8c..6bd6eda1f20d030e17fdb0e057d64e8fe9a5e36c:/apps/archive/tasks.py diff --git a/apps/archive/tasks.py b/apps/archive/tasks.py index 9af3492..37169d2 100755 --- a/apps/archive/tasks.py +++ b/apps/archive/tasks.py @@ -11,6 +11,7 @@ from time import sleep #from celery.decorators import task from celery.task import Task from fabric import api +from fabric.network import disconnect_all from mutagen import File from mutagen import id3 @@ -31,8 +32,8 @@ class AudioFormatTask(Task): @classmethod def set_status(cls, audiobook, status): - setattr(audiobook, '%s_status' % cls.ext, status) - audiobook.save() + Audiobook.objects.filter(pk=audiobook.pk).update( + **{'%s_status' % cls.ext: status}) @staticmethod def encode(in_path, out_path): @@ -47,18 +48,25 @@ class AudioFormatTask(Task): @classmethod def save(cls, audiobook, file_name): - getattr(audiobook, "%s_file" % cls.ext).save( + field = "%s_file" % cls.ext + getattr(audiobook, field).save( "%d.%s" % (audiobook.pk, cls.ext), - ExistingFile(file_name) + ExistingFile(file_name), + save=False ) + Audiobook.objects.filter(pk=audiobook.pk).update( + **{field: getattr(audiobook, field)}) @classmethod def published(cls, audiobook): - setattr(audiobook, "%s_published_tags" % cls.ext, - getattr(audiobook, "%s_tags" % cls.ext)) - setattr(audiobook, "%s_tags" % cls.ext, None) - setattr(audiobook, "%s_published" % cls.ext, datetime.now()) - cls.set_status(audiobook, None) + kwargs = { + "%s_published_tags" % cls.ext: + getattr(audiobook, "%s_tags" % cls.ext), + "%s_tags" % cls.ext: None, + "%s_published" % cls.ext: datetime.now(), + '%s_status' % cls.ext: None, + } + Audiobook.objects.filter(pk=audiobook.pk).update(**kwargs) @classmethod def put(cls, audiobook): @@ -72,11 +80,11 @@ class AudioFormatTask(Task): pipes.quote(slug), pipes.quote(name) )).encode('utf-8') - print command if UPLOAD_SUDO: api.sudo(command, user=UPLOAD_SUDO, shell=False) else: api.run(command) + disconnect_all() def run(self, aid): audiobook = Audiobook.objects.get(id=aid) @@ -101,7 +109,6 @@ class AudioFormatTask(Task): self.put(audiobook) self.published(audiobook) - audiobook.save() class Mp3Task(AudioFormatTask):