X-Git-Url: https://git.0d.be/?p=django-panik-combo.git;a=blobdiff_plain;f=panikombo%2Fmodels.py;h=4f9baeb71bcfbe2ee6d46841cf3d42d7d752e8d9;hp=0c63576a74ea833dee46f3b9164ade3266c49e44;hb=efe26dec17e20d9e10317a12a6e8aaf2b7732345;hpb=277ee6872b2a5fad98f9fe5e9745102b21b623b8 diff --git a/panikombo/models.py b/panikombo/models.py index 0c63576..4f9baeb 100644 --- a/panikombo/models.py +++ b/panikombo/models.py @@ -1,3 +1,6 @@ +from datetime import date +import os + from django import template from django.db import models from django.utils.translation import ugettext_lazy as _ @@ -7,7 +10,7 @@ from taggit.managers import TaggableManager from combo.data.models import CellBase from combo.data.library import register_cell_class -from emissions.models import Episode +from emissions.models import Episode, NewsItem @register_cell_class class SoundCell(CellBase): @@ -81,7 +84,7 @@ class EpisodeAutoSelectionCell(CellBase): episodes_queryset = Episode.objects.select_related() if self.category: episodes_queryset = episodes_queryset.filter(emission__categories__in=[self.category.id]) - if self.tags: + if self.tags.count(): episodes_queryset = episodes_queryset.filter(tags__in=self.tags.all()) episodes_queryset = episodes_queryset.extra(select={ @@ -99,3 +102,53 @@ class EpisodeAutoSelectionCell(CellBase): def get_default_form_class(self): from .forms import EpisodeAutoSelectionCellForm return EpisodeAutoSelectionCellForm + + def get_additional_label(self): + if self.title: + return self.title + return '' + +@register_cell_class +class NewsItemAutoSelectionCell(CellBase): + title = models.CharField(_('Title'), max_length=50, blank=True) + tags = TaggableManager(_('Tags'), blank=True) + future = models.BooleanField(_('Future Events Only'), default=True) + + class Meta: + verbose_name = _('Automatic Newsitem Selection') + + def render(self, context): + tmpl = template.loader.get_template('panikombo/newsitem_auto_selection.html') + context['title'] = self.title + + newsitems_queryset = NewsItem.objects.select_related() + if self.tags.count(): + newsitems_queryset = newsitems_queryset.filter(tags__in=self.tags.all()) + if self.future: + newsitems_queryset = newsitems_queryset.filter(event_date__gte=date.today()) + + context['newsitems'] = newsitems_queryset + return tmpl.render(context) + + def get_default_form_class(self): + from .forms import NewsItemAutoSelectionCellForm + return NewsItemAutoSelectionCellForm + + def get_additional_label(self): + if self.title: + return self.title + return '' + + +def get_topik_image_path(instance, filename): + return os.path.join('images', 'topik', instance.page.slug, + os.path.basename(filename)) + +class Topik(models.Model): + page = models.ForeignKey('data.Page') + image = models.ImageField(_('Image'), + upload_to=get_topik_image_path, max_length=250, null=True, blank=True) + + # denormalized from Focus + got_focus = models.DateTimeField(default=None, null=True, blank=True) + has_focus = models.BooleanField(default=False)