]> git.0d.be Git - django-panik-combo.git/blob - panikombo/models.py
add minimalistic 'episode' cell type
[django-panik-combo.git] / panikombo / models.py
1 from django import template
2 from django.db import models
3 from django.utils.translation import ugettext_lazy as _
4
5 from combo.data.models import CellBase
6 from combo.data.library import register_cell_class
7
8 @register_cell_class
9 class SoundCell(CellBase):
10     soundfile = models.ForeignKey('emissions.SoundFile', null=True)
11
12     class Meta:
13         verbose_name = _('Sound')
14
15     def render(self, context):
16         tmpl = template.loader.get_template('panikombo/audio.html')
17         context['soundfile'] = self.soundfile
18         return tmpl.render(context)
19
20     def get_default_form_class(self):
21         from .forms import SoundCellForm
22         return SoundCellForm
23
24     def get_additional_label(self):
25         if self.soundfile:
26             if self.soundfile.fragment:
27                 return u'%s - %s - %s' % (
28                         self.soundfile.episode.emission.title,
29                         self.soundfile.episode.title,
30                         self.soundfile.title)
31             else:
32                 return u'%s - %s' % (
33                         self.soundfile.episode.emission.title,
34                         self.soundfile.episode.title)
35
36         return ''
37
38
39 @register_cell_class
40 class EpisodeCell(CellBase):
41     episode = models.ForeignKey('emissions.Episode', null=True)
42
43     class Meta:
44         verbose_name = _('Episode')
45
46     def render(self, context):
47         tmpl = template.loader.get_template('panikombo/episode.html')
48         context['episode'] = self.episode
49         context['soundfile'] = self.episode.main_sound
50         return tmpl.render(context)
51
52     def get_default_form_class(self):
53         from .forms import EpisodeCellForm
54         return EpisodeCellForm
55
56     def get_additional_label(self):
57         if self.episode:
58             return u'%s - %s' % (
59                         self.episode.emission.title,
60                         self.episode.title)
61         return ''