Banners only for authenticated users.
authorRadek Czajka <rczajka@rczajka.pl>
Thu, 14 Apr 2022 12:17:25 +0000 (14:17 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Thu, 14 Apr 2022 12:17:25 +0000 (14:17 +0200)
src/annoy/admin.py
src/annoy/migrations/0012_banner_only_authenticated.py [new file with mode: 0644]
src/annoy/models.py

index 8255e96..8470a12 100644 (file)
@@ -9,7 +9,7 @@ class BannerAdmin(TranslationAdmin):
             'place', 'text',
             'text_color', 'background_color',
             'priority', 'since', 'until',
-            'show_members', 'staff_preview']
+            'show_members', 'staff_preview', 'only_authenticated']
 
 
 admin.site.register(models.Banner, BannerAdmin)
diff --git a/src/annoy/migrations/0012_banner_only_authenticated.py b/src/annoy/migrations/0012_banner_only_authenticated.py
new file mode 100644 (file)
index 0000000..53584bd
--- /dev/null
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.27 on 2022-04-14 12:10
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('annoy', '0011_auto_20210610_1437'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='banner',
+            name='only_authenticated',
+            field=models.BooleanField(default=False, verbose_name='only for authenticated users'),
+        ),
+    ]
index 55bb2ac..5a613f1 100644 (file)
@@ -34,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')
@@ -65,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