find_playlist was not called under some circonstances
This commit is contained in:
		@ -1,3 +1,5 @@
 | 
				
			|||||||
 | 
					import math
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from django.contrib import admin
 | 
					from django.contrib import admin
 | 
				
			||||||
from django.utils.safestring import mark_safe
 | 
					from django.utils.safestring import mark_safe
 | 
				
			||||||
from django.utils.translation import gettext_lazy as _
 | 
					from django.utils.translation import gettext_lazy as _
 | 
				
			||||||
@ -29,7 +31,7 @@ class SoundInline(admin.TabularInline):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def audio(self, obj):
 | 
					    def audio(self, obj):
 | 
				
			||||||
        return mark_safe('<audio src="{}" controls></audio>'.format(obj.file.url))
 | 
					        return mark_safe('<audio src="{}" controls></audio>'.format(obj.file.url))
 | 
				
			||||||
    audio.short_descripton = _('Audio')
 | 
					    audio.short_description = _('Audio')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def get_queryset(self, request):
 | 
					    def get_queryset(self, request):
 | 
				
			||||||
        return super().get_queryset(request).available()
 | 
					        return super().get_queryset(request).available()
 | 
				
			||||||
@ -60,7 +62,7 @@ class SoundAdmin(admin.ModelAdmin):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def audio(self, obj):
 | 
					    def audio(self, obj):
 | 
				
			||||||
        return mark_safe('<audio src="{}" controls></audio>'.format(obj.file.url))
 | 
					        return mark_safe('<audio src="{}" controls></audio>'.format(obj.file.url))
 | 
				
			||||||
    audio.short_descripton = _('Audio')
 | 
					    audio.short_description = _('Audio')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@admin.register(Track)
 | 
					@admin.register(Track)
 | 
				
			||||||
@ -68,7 +70,7 @@ class TrackAdmin(admin.ModelAdmin):
 | 
				
			|||||||
    def tag_list(self, obj):
 | 
					    def tag_list(self, obj):
 | 
				
			||||||
        return u", ".join(o.name for o in obj.tags.all())
 | 
					        return u", ".join(o.name for o in obj.tags.all())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    list_display = ['pk', 'artist', 'title', 'tag_list', 'episode', 'sound', 'timestamp']
 | 
					    list_display = ['pk', 'artist', 'title', 'tag_list', 'episode', 'sound', 'ts']
 | 
				
			||||||
    list_editable = ['artist', 'title']
 | 
					    list_editable = ['artist', 'title']
 | 
				
			||||||
    list_filter = ['artist', 'title', 'tags']
 | 
					    list_filter = ['artist', 'title', 'tags']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -80,4 +82,15 @@ class TrackAdmin(admin.ModelAdmin):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    # TODO on edit: readonly_fields = ['episode', 'sound']
 | 
					    # TODO on edit: readonly_fields = ['episode', 'sound']
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def ts(self, obj):
 | 
				
			||||||
 | 
					        ts = obj.timestamp
 | 
				
			||||||
 | 
					        if ts is None:
 | 
				
			||||||
 | 
					            return ''
 | 
				
			||||||
 | 
					        h = math.floor(ts / 3600)
 | 
				
			||||||
 | 
					        m = math.floor((ts - h) / 60)
 | 
				
			||||||
 | 
					        s = ts-h*3600-m*60
 | 
				
			||||||
 | 
					        return '{:0>2}:{:0>2}:{:0>2}'.format(h,m,s)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ts.short_description = _('timestamp')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -105,8 +105,9 @@ class SoundFile:
 | 
				
			|||||||
            self.find_episode(program)
 | 
					            self.find_episode(program)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        sound.save()
 | 
					        sound.save()
 | 
				
			||||||
        if self.info is not None:
 | 
					
 | 
				
			||||||
            self.find_playlist(sound)
 | 
					        # check for playlist
 | 
				
			||||||
 | 
					        self.find_playlist(sound)
 | 
				
			||||||
        return sound
 | 
					        return sound
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def read_path(self):
 | 
					    def read_path(self):
 | 
				
			||||||
@ -175,12 +176,12 @@ class SoundFile:
 | 
				
			|||||||
        """
 | 
					        """
 | 
				
			||||||
        if sound is None:
 | 
					        if sound is None:
 | 
				
			||||||
            sound = self.sound
 | 
					            sound = self.sound
 | 
				
			||||||
 | 
					        if sound.track_set.count() > 1:
 | 
				
			||||||
        if sound.track_set.count():
 | 
					 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # import playlist
 | 
					        # import playlist
 | 
				
			||||||
        path = os.path.splitext(self.sound.file.path)[0] + '.csv'
 | 
					        path_noext, ext = os.path.splitext(self.sound.file.path)
 | 
				
			||||||
 | 
					        path = path_noext + '.csv'
 | 
				
			||||||
        if os.path.exists(path):
 | 
					        if os.path.exists(path):
 | 
				
			||||||
            PlaylistImport(path, sound=sound).run()
 | 
					            PlaylistImport(path, sound=sound).run()
 | 
				
			||||||
        # use metadata
 | 
					        # use metadata
 | 
				
			||||||
@ -189,14 +190,18 @@ class SoundFile:
 | 
				
			|||||||
                self.read_file_info()
 | 
					                self.read_file_info()
 | 
				
			||||||
            if self.info.tags:
 | 
					            if self.info.tags:
 | 
				
			||||||
                tags = self.info.tags
 | 
					                tags = self.info.tags
 | 
				
			||||||
                info = '{} ({})'.format(tags.get('album'), tags.get('year')) \
 | 
					                title, artist, album, year = tuple(
 | 
				
			||||||
                    if ('album' and 'year' in tags) else tags.get('album') \
 | 
					                    t and ', '.join(t) for t in (
 | 
				
			||||||
                    if 'album' in tags else tags.get('year', '')
 | 
					                        tags.get(k) for k in ('title', 'artist', 'album', 'year'))
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					                title = title or (self.path_info and self.path_info.get('name')) or \
 | 
				
			||||||
 | 
					                            os.path.basename(path_noext)
 | 
				
			||||||
 | 
					                info = '{} ({})'.format(album, year) if album and year else \
 | 
				
			||||||
 | 
					                       album or year or ''
 | 
				
			||||||
                track = Track(sound=sound,
 | 
					                track = Track(sound=sound,
 | 
				
			||||||
                              position=int(tags.get('tracknumber', 0)),
 | 
					                              position=int(tags.get('tracknumber', 0)),
 | 
				
			||||||
                              title=tags.get('title', self.path_info['name']),
 | 
					                              title=title,
 | 
				
			||||||
                              artist=tags.get('artist', _('unknown')),
 | 
					                              artist=artist or _('unknown'),
 | 
				
			||||||
                              info=info)
 | 
					                              info=info)
 | 
				
			||||||
                track.save()
 | 
					                track.save()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -126,12 +126,13 @@ class Monitor:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    def log(self, **kwargs):
 | 
					    def log(self, **kwargs):
 | 
				
			||||||
        """ Create a log using **kwargs, and print info """
 | 
					        """ Create a log using **kwargs, and print info """
 | 
				
			||||||
 | 
					        kwargs.setdefault('station', self.station)
 | 
				
			||||||
 | 
					        kwargs.setdefault('date', tz.now())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if self.__last_log_kwargs == kwargs:
 | 
					        if self.__last_log_kwargs == kwargs:
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        self.__last_log_kwargs = kwargs
 | 
					        self.__last_log_kwargs = kwargs
 | 
				
			||||||
        kwargs.setdefault('station', self.station)
 | 
					 | 
				
			||||||
        kwargs.setdefault('date', tz.now())
 | 
					 | 
				
			||||||
        log = Log(**kwargs)
 | 
					        log = Log(**kwargs)
 | 
				
			||||||
        log.save()
 | 
					        log.save()
 | 
				
			||||||
        log.print()
 | 
					        log.print()
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user