X-Git-Url: https://git.mdrn.pl/prawokultury.git/blobdiff_plain/44090c986d9a16f6913047c25319c446bb9308ad..9eaf434d4f4cb1c33e0df21bbc2af1136f1d3317:/events/models.py?ds=sidebyside diff --git a/events/models.py b/events/models.py index 742c2f2..1151a11 100644 --- a/events/models.py +++ b/events/models.py @@ -2,13 +2,17 @@ # This file is part of PrawoKultury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # +from django.conf import settings +from django.core.exceptions import ValidationError from django.db import models -from django.utils.translation import ugettext_lazy as _ -from migdal.helpers import add_translatable +from django.utils.translation import ugettext_lazy as _, ugettext +from fnpdjango.utils.models.translation import add_translatable class Event(models.Model): date = models.DateTimeField(_('date'), max_length=255, db_index=True) + date_end = models.DateTimeField(_('end date'), max_length=255, + db_index=True, blank=True) link = models.URLField(_('link')) class Meta: @@ -16,8 +20,27 @@ class Event(models.Model): verbose_name_plural = _('events') ordering = ['date'] + def __unicode__(self): + return self.title + + def clean(self): + if self.date_end: + if self.date_end < self.date: + raise ValidationError( + ugettext("End date must not be earlier than start.")) + else: + self.date_end = self.date + for lc, ln in settings.LANGUAGES: + if (getattr(self, "published_%s" % lc) and + not getattr(self, "title_%s" % lc)): + raise ValidationError( + ugettext("Published event should have a title in relevant language (%s).") % lc) + + add_translatable(Event, { - 'title': models.CharField(_('title'), max_length=255), - 'organizer': models.CharField(_('organizer'), max_length=255, db_index=True), - 'place': models.CharField(_('place'), max_length=255), + 'title': models.CharField(_('title'), max_length=255, blank=True), + 'organizer': models.CharField(_('organizer'), max_length=255, + db_index=True, blank=True), + 'place': models.CharField(_('place'), max_length=255, blank=True), + 'published': models.BooleanField(_('published'), default=False), })