update tracks, work on admin, fix stuff and models

This commit is contained in:
bkfox
2015-08-24 21:08:26 +02:00
parent b36c2f944e
commit 682d8b9189
5 changed files with 160 additions and 56 deletions

View File

@ -49,10 +49,10 @@ ugettext_lazy('one on two')
DiffusionType = {
'diffuse': 0x01 # the diffusion is planified or done
, 'cancel': 0x03 # the diffusion has been canceled from grid; useful to give
'diffuse': 0x01 # the diffusion is planified or done
, 'scheduled': 0x02 # the diffusion been scheduled automatically
, 'cancel': 0x03 # the diffusion has been canceled from grid; useful to give
# the info to the users
, 'stop': 0x04 # the diffusion been arbitrary stopped (non-stop or not)
}
@ -107,10 +107,15 @@ class Metadata (Model):
_('date')
, default = timezone.datetime.now
)
private = models.BooleanField(
_('private')
, default = False
, help_text = _('publication is private')
public = models.BooleanField(
_('public')
, default = True
, help_text = _('publication is public')
)
enumerable = models.BooleanField(
_('enumerable')
, default = True
, help_text = _('publication is listable')
)
tags = TaggableManager(
_('tags')
@ -143,7 +148,7 @@ class Publication (Metadata):
_('content')
, blank = True
)
can_comment = models.BooleanField(
commentable = models.BooleanField(
_('enable comments')
, default = True
, help_text = _('comments are enabled on this publication')
@ -209,32 +214,31 @@ class Publication (Metadata):
# Usable models
#
class Track (Model):
# There are no nice solution for M2M relations ship (even without
# through) in django-admin. So we unfortunately need to make one-
# to-one relations and add a position argument
episode = models.ForeignKey(
'Episode'
, null = True
)
artist = models.CharField(
_('artist')
, max_length = 128
, blank = True
)
title = models.CharField(
_('title')
, max_length = 128
)
version = models.CharField(
_('version')
, max_length = 128
, blank = True
, help_text = _('additional informations on that track')
)
tags = TaggableManager( blank = True )
@staticmethod
def autocomplete_search_fields():
return ("artist__icontains", 'title__icontains')
# position can be used to specify a position in seconds
position = models.SmallIntegerField(
default = 0
, help_text=_('position in the playlist')
)
def __str__(self):
return ' '.join([self.artist, ':', self.title,
(self.version and ('(' + self.version + ')') or '') ])
return ' '.join([self.artist, ':', self.title])
class Meta:
@ -532,12 +536,14 @@ class Program (Publication):
, null = True
, help_text = _('parent article')
)
email = models.EmailField(
_('email')
, max_length = 128
, null = True
, blank = True
)
url = models.URLField(
_('website')
, blank = True
@ -567,6 +573,7 @@ class Program (Publication):
verbose_name_plural = _('Programs')
class Episode (Publication):
# Note:
# We do not especially need a duration here, because even if an
@ -581,11 +588,6 @@ class Episode (Publication):
, verbose_name = _('parent')
, help_text = _('parent program')
)
tracks = models.ManyToManyField(
Track
, blank = True
, verbose_name = _('tracks')
)
sounds = models.ManyToManyField(
Sound
, blank = True
@ -620,23 +622,24 @@ class Diffusion (Model):
verbose_name = _('type')
, choices = [ (y, x) for x,y in DiffusionType.items() ]
)
date = models.DateTimeField( _('date of diffusion start') )
begin = models.DateTimeField( _('start of diffusion start') )
end = models.DateTimeField( _('stop of diffusion stop') )
stream = models.SmallIntegerField(
verbose_name = _('stream')
, default = 0
, help_text = 'stream id on which the diffusion happens'
)
scheduled = models.BooleanField(
verbose_name = _('scheduled')
, default = False
, help_text = 'diffusion generated automatically'
)
def save (self, *args, **kwargs):
if self.episode:
self.program = self.episode.parent
super(Diffusion, self).save(*args, **kwargs)
def __str__ (self):
return self.program.title + ' on ' + str(self.start) \
+ str(self.type)
class Meta:
verbose_name = _('Diffusion')