]> git.0d.be Git - django-panik-combo.git/blobdiff - panikombo/models.py
don't try to get main sound if episode is not defined
[django-panik-combo.git] / panikombo / models.py
index 617212a6546e0e75bc443d10bf1300c6fae7eb62..5c294bc667bbdbd85ec8f47010ed8aeaac11d08c 100644 (file)
@@ -5,6 +5,7 @@ from django import template
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
 
+from ckeditor.fields import RichTextField
 from taggit.managers import TaggableManager
 
 from combo.data.models import CellBase
@@ -58,7 +59,8 @@ class EpisodeCell(CellBase):
     def render(self, context):
         tmpl = template.loader.get_template('panikombo/episode.html')
         context['episode'] = self.episode
-        context['soundfile'] = self.episode.main_sound
+        if self.episode:
+            context['soundfile'] = self.episode.main_sound
         return tmpl.render(context)
 
     def get_included_items(self):
@@ -172,6 +174,11 @@ class Topik(models.Model):
     got_focus = models.DateTimeField(default=None, null=True, blank=True)
     has_focus = models.BooleanField(default=False)
 
+    def __unicode__(self):
+        if not self.page:
+            return super(Topik, self).__unicode__()
+        return unicode(self.page)
+
 
 class ItemTopik(models.Model):
     newsitem = models.ForeignKey('emissions.NewsItem', verbose_name=_('News Item'),
@@ -180,3 +187,19 @@ class ItemTopik(models.Model):
             null=True, blank=True)
     topik = models.ForeignKey('Topik', verbose_name='Topik',
             null=True, blank=True)
+
+
+@register_cell_class
+class TopikCell(CellBase):
+    topik = models.ForeignKey(Topik, null=True)
+    text = RichTextField(_('Text'), blank=True, null=True)
+
+    template_name = 'panikombo/topik-cell.html'
+
+    class Meta:
+        verbose_name = _('Topik')
+
+    def get_additional_label(self):
+        if not self.topik:
+            return ''
+        return self.topik.page.title