fix race in filters
[wolnelektury.git] / src / annoy / models.py
index fe5f8fa..c8fdf2d 100644 (file)
@@ -2,7 +2,7 @@ from django.apps import apps
 from django.conf import settings
 from django.db import models
 from django.template import Context, Template
-from django.utils.translation import ugettext_lazy as _
+from django.utils.translation import gettext_lazy as _
 from django.utils.timezone import now
 from .places import PLACES, PLACE_CHOICES, STYLES
 
@@ -15,6 +15,8 @@ class Banner(models.Model):
         help_text=_('Affects blackout.')
     )
     smallfont = models.BooleanField(_('small font'), default=False)
+    text_color = models.CharField(max_length=10, blank=True)
+    background_color = models.CharField(max_length=10, blank=True)
     action_label = models.CharField(
         _('action label'),
         max_length=255, blank=True,
@@ -32,6 +34,7 @@ class Banner(models.Model):
     until = models.DateTimeField(_('until'), null=True, blank=True)
     show_members = models.BooleanField(_('show members'), default=False)
     staff_preview = models.BooleanField(_('staff preview'), default=False)
+    only_authenticated = models.BooleanField(_('only for authenticated users'), default=False)
 
     class Meta:
         verbose_name = _('banner')
@@ -63,12 +66,15 @@ class Banner(models.Model):
             until__lt=n
         ).order_by('-priority', '?')
 
+        if not request.user.is_authenticated:
+            banners = banners.filter(only_authenticated=False)
+
         if not request.user.is_staff:
             banners = banners.filter(staff_preview=False)
 
-        if request:
-            if Membership.is_active_for(request.user):
-                banners = banners.filter(show_members=True)
+        if Membership.is_active_for(request.user):
+            banners = banners.filter(show_members=True)
+
         return banners