from django.utils.translation import ugettext_lazy as _
from ckeditor.fields import RichTextField
+from taggit.models import Tag
from taggit.managers import TaggableManager
+from taggit.utils import parse_tags
from combo.data.models import CellBase
from combo.data.library import register_cell_class
return ''
+def get_parsed_tags(tagstring):
+ tags = parse_tags(tagstring)
+ return [x for x in Tag.objects.filter(name__in=tags)]
+
+
@register_cell_class
class EpisodeAutoSelectionCell(CellBase):
title = models.CharField(_('Title'), max_length=50, blank=True)
tags = TaggableManager(_('Tags'), blank=True)
+ and_tags = models.CharField(_('And Tags'), max_length=100, blank=True)
category = models.ForeignKey('emissions.Category', null=True, blank=True)
period = models.PositiveSmallIntegerField(
_('Period'), default=0,
episodes_queryset = episodes_queryset.filter(emission__categories__in=[self.category.id])
if self.tags.count():
episodes_queryset = episodes_queryset.filter(tags__in=self.tags.all())
+ if self.and_tags:
+ and_tags = get_parsed_tags(self.and_tags)
+ episodes_queryset = episodes_queryset.filter(tags__in=and_tags)
if self.period == 0:
episodes_queryset = episodes_queryset.extra(
tmpl = template.loader.get_template('panikombo/episode_auto_selection.html')
context['title'] = self.title
- episodes_queryset = self.get_included_items()
- episodes_queryset = episodes_queryset.order_by('-first_diffusion').distinct()
- context['episodes'] = episodes_queryset
+ if (self.category or self.period or self.tags.count()):
+ episodes_queryset = self.get_included_items()
+ episodes_queryset = episodes_queryset.order_by('-first_diffusion').distinct()
+ context['episodes'] = episodes_queryset
+ else:
+ context['episodes'] = []
return tmpl.render(context)
def get_default_form_class(self):
class NewsItemAutoSelectionCell(CellBase):
title = models.CharField(_('Title'), max_length=50, blank=True)
tags = TaggableManager(_('Tags'), blank=True)
+ and_tags = models.CharField(_('And Tags'), max_length=100, blank=True)
future = models.BooleanField(_('Future Events Only'), default=True)
category = models.ForeignKey('emissions.NewsCategory',
verbose_name=_('Category'), null=True, blank=True)
newsitems_queryset = NewsItem.objects.select_related()
if self.tags.count():
newsitems_queryset = newsitems_queryset.filter(tags__in=self.tags.all())
+ if self.and_tags:
+ and_tags = get_parsed_tags(self.and_tags)
+ newsitems_queryset = newsitems_queryset.filter(tags__in=and_tags)
if self.future:
newsitems_queryset = newsitems_queryset.filter(event_date__gte=date.today())
if self.category:
def render(self, context):
tmpl = template.loader.get_template('panikombo/newsitem_auto_selection.html')
context['title'] = self.title
- context['newsitems'] = self.get_included_items()
+ if self.tags.count() or self.future or self.category:
+ context['newsitems'] = self.get_included_items()
+ else:
+ context['newsitems'] = []
return tmpl.render(context)
def get_default_form_class(self):