4 from django.conf import settings
5 from django.core.management.base import BaseCommand, CommandError
7 from ...models import SoundFile
10 class Command(BaseCommand):
11 def add_arguments(self, parser):
17 help='Limit to soundfiles belonging to emission (slug)',
24 help='Limit to sounfiles belonging to episode (slug)',
29 help='Limit to soundfiles newer than (either a number of a second, '
30 'or a number of days when suffixed by "d"',
33 def handle(self, emission, episode, newer, verbosity, **kwargs):
34 self.verbose = verbosity > 1
36 qs = SoundFile.objects.exclude(podcastable=False)
39 qs = qs.filter(episode__emission__slug=emission)
42 qs = qs.filter(episode__slug=episode)
45 if newer.endswith('d'):
46 newer = int(newer.strip('d')) * 86400
49 qs = qs.filter(creation_timestamp__gt=timezone.now() - datetime.timedelta(seconds=newer))
51 for soundfile in qs.select_related():
53 if soundfile.file is None or not os.path.exists(soundfile.file.path):
55 except ValueError: # no file associated with it
58 for file_format in ('ogg', 'mp3'):
59 sound_filename = soundfile.get_format_path(file_format)
60 assert sound_filename.startswith(settings.MEDIA_ROOT)
61 dest = sound_filename[len(settings.MEDIA_ROOT) :]
62 cmd = ['rsync', '-a', sound_filename, settings.WEBSITE_MEDIA_SOUNDS_SYNC_BASE + dest]