team-3/src/c3nav/site/models.py

30 lines
1.1 KiB
Python
Raw Normal View History

2017-12-10 15:23:53 +01:00
from django.conf import settings
2017-12-08 00:35:17 +01:00
from django.db import models
from django.db.models import Q
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from c3nav.mapdata.fields import I18nField
class Announcement(models.Model):
created = models.DateTimeField(auto_now_add=True, verbose_name=_('created'))
active_until = models.DateTimeField(null=True, verbose_name=_('active until'))
active = models.BooleanField(default=True, verbose_name=_('active'))
2017-12-10 15:23:53 +01:00
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.PROTECT, verbose_name=_('author'))
text = I18nField(_('Text'), fallback_any=True)
2017-12-08 00:35:17 +01:00
class Meta:
verbose_name = _('Announcement')
verbose_name_plural = _('Announcements')
default_related_name = 'announcements'
get_latest_by = 'created'
@classmethod
def get_current(cls):
try:
return cls.objects.filter(Q(active=True) & (Q(active_until__isnull=True) |
2017-12-10 15:23:53 +01:00
Q(active_until__gt=timezone.now()))).latest()
2017-12-08 00:35:17 +01:00
except cls.DoesNotExist:
return None