small fixes and tests
This commit is contained in:
		@ -80,7 +80,13 @@ class EpisodeAdmin (NameableAdmin):
 | 
			
		||||
 | 
			
		||||
@admin.register(Diffusion)
 | 
			
		||||
class DiffusionAdmin (admin.ModelAdmin):
 | 
			
		||||
    list_display = ('id', 'type', 'date', 'episode', 'program', 'stream')
 | 
			
		||||
    def archives (self, obj):
 | 
			
		||||
        sounds = obj.episode and \
 | 
			
		||||
                    (os.path.basename(sound.path) for sound in obj.episode.sounds.all()
 | 
			
		||||
                        if sound.type == Sound.Type['archive'] )
 | 
			
		||||
        return ', '.join(sounds) if sounds else ''
 | 
			
		||||
 | 
			
		||||
    list_display = ('id', 'type', 'date', 'archives', 'episode', 'program', 'stream')
 | 
			
		||||
    list_filter = ('type', 'date', 'program', 'stream')
 | 
			
		||||
    list_editable = ('type', 'date')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -65,31 +65,32 @@ class Command (BaseCommand):
 | 
			
		||||
 | 
			
		||||
    def add_arguments (self, parser):
 | 
			
		||||
        parser.formatter_class=RawTextHelpFormatter
 | 
			
		||||
 | 
			
		||||
        now = tz.datetime.today()
 | 
			
		||||
 | 
			
		||||
        group = parser.add_argument_group('action')
 | 
			
		||||
        group.add_argument(
 | 
			
		||||
            '--update', action='store_true',
 | 
			
		||||
            help = 'generate (unconfirmed) diffusions for the given month. '
 | 
			
		||||
                   'These diffusions must be confirmed manually by changing '
 | 
			
		||||
                   'their type to "normal"')
 | 
			
		||||
            help='generate (unconfirmed) diffusions for the given month. '
 | 
			
		||||
                 'These diffusions must be confirmed manually by changing '
 | 
			
		||||
                 'their type to "normal"')
 | 
			
		||||
        group.add_argument(
 | 
			
		||||
            '--clean', action='store_true',
 | 
			
		||||
            help = 'remove unconfirmed diffusions older than the given month')
 | 
			
		||||
            help='remove unconfirmed diffusions older than the given month')
 | 
			
		||||
 | 
			
		||||
        group.add_argument(
 | 
			
		||||
            '--check', action='store_true',
 | 
			
		||||
            help = 'check future unconfirmed diffusions from the given date '
 | 
			
		||||
                   'agains\'t schedules and remove it if that do not match any '
 | 
			
		||||
                   'schedule')
 | 
			
		||||
            help='check future unconfirmed diffusions from the given date '
 | 
			
		||||
                 'agains\'t schedules and remove it if that do not match any '
 | 
			
		||||
                 'schedule')
 | 
			
		||||
 | 
			
		||||
        group = parser.add_argument_group(
 | 
			
		||||
            'date')
 | 
			
		||||
        group.add_argument('--year', type=int, default=now.year,
 | 
			
		||||
                            help='used by update, default is today\'s year')
 | 
			
		||||
        group.add_argument('--month', type=int, default=now.month,
 | 
			
		||||
                            help='used by update, default is today\'s month')
 | 
			
		||||
        group.add_argument(
 | 
			
		||||
            '--year', type=int, default=now.year,
 | 
			
		||||
            help='used by update, default is today\'s year')
 | 
			
		||||
        group.add_argument(
 | 
			
		||||
            '--month', type=int, default=now.month,
 | 
			
		||||
            help='used by update, default is today\'s month')
 | 
			
		||||
 | 
			
		||||
    def handle (self, *args, **options):
 | 
			
		||||
        date = tz.datetime(year = options.get('year'),
 | 
			
		||||
 | 
			
		||||
@ -48,7 +48,8 @@ class Command (BaseCommand):
 | 
			
		||||
        )
 | 
			
		||||
        parser.add_argument(
 | 
			
		||||
            '-s', '--scan', action='store_true',
 | 
			
		||||
            help='Scan programs directories for changes'
 | 
			
		||||
            help='Scan programs directories for changes, plus check for a '
 | 
			
		||||
                 ' matching episode on sounds that have not been yet assigned'
 | 
			
		||||
        )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -101,6 +102,7 @@ class Command (BaseCommand):
 | 
			
		||||
            self.report(program, path, 'no diffusion found for the given date')
 | 
			
		||||
            return
 | 
			
		||||
        diffusion = diffusion[0]
 | 
			
		||||
        print(diffusion, sound_info)
 | 
			
		||||
        return diffusion.episode or None
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
@ -163,7 +165,7 @@ class Command (BaseCommand):
 | 
			
		||||
                        episode.sounds.add(sound)
 | 
			
		||||
                        episode.save()
 | 
			
		||||
 | 
			
		||||
        self.check_sounds(Sound.objects.filter(path__startswith == subdir))
 | 
			
		||||
        self.check_sounds(Sound.objects.filter(path__startswith = subdir))
 | 
			
		||||
 | 
			
		||||
    def check_quality (self, check = False):
 | 
			
		||||
        """
 | 
			
		||||
@ -179,7 +181,6 @@ class Command (BaseCommand):
 | 
			
		||||
        else:
 | 
			
		||||
            files = [ sound.path for sound in sounds.filter(removed = False) ]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        print('start quality check...')
 | 
			
		||||
        cmd = quality_check.Command()
 | 
			
		||||
        cmd.handle( files = files,
 | 
			
		||||
 | 
			
		||||
@ -34,8 +34,8 @@ class Nameable (models.Model):
 | 
			
		||||
        return slugify(self.name)
 | 
			
		||||
 | 
			
		||||
    def __str__ (self):
 | 
			
		||||
        if self.pk:
 | 
			
		||||
            return '#{} {}'.format(self.pk, self.name)
 | 
			
		||||
        #if self.pk:
 | 
			
		||||
        #    return '#{} {}'.format(self.pk, self.name)
 | 
			
		||||
        return '{}'.format(self.name)
 | 
			
		||||
 | 
			
		||||
    class Meta:
 | 
			
		||||
@ -391,7 +391,7 @@ class Diffusion (models.Model):
 | 
			
		||||
        verbose_name_plural = _('Diffusions')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Stream (models.Model):
 | 
			
		||||
class Stream (Nameable):
 | 
			
		||||
    Type = {
 | 
			
		||||
        'random':   0x00,   # selection using random function
 | 
			
		||||
        'schedule': 0x01,   # selection using schedule
 | 
			
		||||
@ -399,11 +399,6 @@ class Stream (models.Model):
 | 
			
		||||
    for key, value in Type.items():
 | 
			
		||||
        ugettext_lazy(key)
 | 
			
		||||
 | 
			
		||||
    name = models.CharField(
 | 
			
		||||
        _('name'),
 | 
			
		||||
        max_length = 32,
 | 
			
		||||
        blank = True, null = True,
 | 
			
		||||
    )
 | 
			
		||||
    public = models.BooleanField(
 | 
			
		||||
        _('public'),
 | 
			
		||||
        default = True,
 | 
			
		||||
@ -435,9 +430,6 @@ class Stream (models.Model):
 | 
			
		||||
    # - random lists
 | 
			
		||||
    # - scheduled lists
 | 
			
		||||
 | 
			
		||||
    def __str__ (self):
 | 
			
		||||
        return '#{} {}'.format(self.priority, self.name)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Program (Nameable):
 | 
			
		||||
    stream = models.ForeignKey(
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user