Compare commits
No commits in common. "8f0dd9d248f28dc77dc851330de37baaeb0e8cda" and "e983ca64bd8d0cfc7259c64d6b4ba2a3adab19d3" have entirely different histories.
8f0dd9d248
...
e983ca64bd
|
@ -1,5 +1,3 @@
|
||||||
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 _
|
||||||
|
@ -31,7 +29,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_description = _('Audio')
|
audio.short_descripton = _('Audio')
|
||||||
|
|
||||||
def get_queryset(self, request):
|
def get_queryset(self, request):
|
||||||
return super().get_queryset(request).available()
|
return super().get_queryset(request).available()
|
||||||
|
@ -62,7 +60,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_description = _('Audio')
|
audio.short_descripton = _('Audio')
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Track)
|
@admin.register(Track)
|
||||||
|
@ -70,7 +68,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', 'ts']
|
list_display = ['pk', 'artist', 'title', 'tag_list', 'episode', 'sound', 'timestamp']
|
||||||
list_editable = ['artist', 'title']
|
list_editable = ['artist', 'title']
|
||||||
list_filter = ['artist', 'title', 'tags']
|
list_filter = ['artist', 'title', 'tags']
|
||||||
|
|
||||||
|
@ -82,15 +80,4 @@ 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,9 +105,8 @@ class SoundFile:
|
||||||
self.find_episode(program)
|
self.find_episode(program)
|
||||||
|
|
||||||
sound.save()
|
sound.save()
|
||||||
|
if self.info is not None:
|
||||||
# check for playlist
|
self.find_playlist(sound)
|
||||||
self.find_playlist(sound)
|
|
||||||
return sound
|
return sound
|
||||||
|
|
||||||
def read_path(self):
|
def read_path(self):
|
||||||
|
@ -176,12 +175,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_noext, ext = os.path.splitext(self.sound.file.path)
|
path = os.path.splitext(self.sound.file.path)[0] + '.csv'
|
||||||
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
|
||||||
|
@ -190,18 +189,14 @@ 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
|
||||||
title, artist, album, year = tuple(
|
info = '{} ({})'.format(tags.get('album'), tags.get('year')) \
|
||||||
t and ', '.join(t) for t in (
|
if ('album' and 'year' in tags) else tags.get('album') \
|
||||||
tags.get(k) for k in ('title', 'artist', 'album', 'year'))
|
if 'album' in tags else tags.get('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=title,
|
title=tags.get('title', self.path_info['name']),
|
||||||
artist=artist or _('unknown'),
|
artist=tags.get('artist', _('unknown')),
|
||||||
info=info)
|
info=info)
|
||||||
track.save()
|
track.save()
|
||||||
|
|
||||||
|
|
|
@ -126,13 +126,12 @@ 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()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from . import viewsets
|
from . import viewsets
|
||||||
from aircox.viewsets import SoundViewSet
|
from aircox.viewsets import SoundViewSet
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
from aircox.views.admin import AdminMixin
|
from aircox.views.admin import AdminMixin
|
||||||
|
|
Loading…
Reference in New Issue
Block a user