moviewyrm/bookwyrm/models/announcement.py

42 lines
1.3 KiB
Python
Raw Normal View History

""" admin announcements """
from django.db import models
2021-05-19 22:17:32 +00:00
from django.db.models import Q
from django.utils import timezone
2022-02-11 19:00:01 +00:00
from django.utils.translation import gettext_lazy as _
from .base_model import BookWyrmModel
2022-02-11 19:00:01 +00:00
DisplayTypes = [
("primary-light", _("Primary")),
("success-light", _("Success")),
("link-light", _("Link")),
("warning-light", _("Warning")),
("danger-light", _("Danger")),
]
class Announcement(BookWyrmModel):
"""The admin has something to say"""
user = models.ForeignKey("User", on_delete=models.PROTECT)
preview = models.CharField(max_length=255)
2021-05-20 19:36:42 +00:00
content = models.TextField(null=True, blank=True)
event_date = models.DateTimeField(blank=True, null=True)
start_date = models.DateTimeField(blank=True, null=True)
end_date = models.DateTimeField(blank=True, null=True)
active = models.BooleanField(default=True)
2022-02-11 19:00:01 +00:00
display_type = models.CharField(
max_length=20, choices=DisplayTypes, null=True, blank=True
2022-02-11 19:00:01 +00:00
)
@classmethod
def active_announcements(cls):
"""announcements that should be displayed"""
now = timezone.now()
2021-05-19 22:17:32 +00:00
return cls.objects.filter(
Q(start_date__isnull=True) | Q(start_date__lte=now),
Q(end_date__isnull=True) | Q(end_date__gte=now),
active=True,
)