# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
+from random import randint
from django.db import models
from django.conf import settings
from django.core.exceptions import ValidationError
"""This is used for testing."""
return "%s?banner_group=%d" % (reverse('main_page'), self.id)
+ def get_banner(self):
+ banners = self.cite_set.all()
+ count = banners.count()
+ if not count:
+ return None
+ return banners[randint(0, count-1)]
+
class Cite(models.Model):
book = models.ForeignKey(Book, verbose_name=_('book'), null=True, blank=True)
"""This is used for testing."""
return "%s?choose_cite=%d" % (reverse('main_page'), self.id)
+ def has_box(self):
+ return self.video or self.picture
+
+ def has_body(self):
+ return self.vip or self.text or self.book
+
+ def layout(self):
+ if self.banner:
+ # TODO: move all banners to pictures.
+ return 'banner'
+ pieces = []
+ if self.has_box():
+ pieces.append('box')
+ if self.has_body():
+ pieces.append('text')
+ if self.small:
+ pieces.append('small')
+ return '-'.join(pieces)
+
+
def save(self, *args, **kwargs):
ret = super(Cite, self).save(*args, **kwargs)
self.flush_includes()
raise ValidationError(_('Either banner or banner group is required.'))
elif self.banner and self.banner_group:
raise ValidationError(_('Either banner or banner group is required.'))
+
+ def get_banner(self):
+ return self.banner or self.banner_group.get_banner()