diff --git a/equipment/models.py b/equipment/models.py index 84dd205..6498756 100644 --- a/equipment/models.py +++ b/equipment/models.py @@ -1,7 +1,7 @@ from django.db import models +from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ -from event.models import Activity -from shared.models import EventSpecificMixin +from event.models import Activity, EventSpecificMixin class Equipment(EventSpecificMixin, models.Model): @@ -18,8 +18,8 @@ class Equipment(EventSpecificMixin, models.Model): ) class Meta: - verbose_name = _("matériel permanent") - verbose_name_plural = _("matériels permanents") + verbose_name = _("matériel") + verbose_name_plural = _("matériels") def __str__(self): return self.name @@ -40,6 +40,12 @@ class EquipmentAttribution(models.Model): self.amout, self.activity.get_herited('title')) + def save(self, *args, **kwargs): + if self.equipment.event and self.equipment.event != self.activity.event: + raise ValidationError + + super(EquipmentAttribution, self).save(*args, **kwargs) + class EquipmentRemark(models.Model): remark = models.TextField(_("remarque sur le matériel")) diff --git a/event/models.py b/event/models.py index fca94c2..14d7980 100644 --- a/event/models.py +++ b/event/models.py @@ -4,7 +4,6 @@ from django.core.validators import RegexValidator from django.core.exceptions import FieldError from django.db import models from communication.models import SubscriptionMixin -from shared.models import EventSpecificMixin class Event(SubscriptionMixin, models.Model): @@ -39,6 +38,23 @@ class Event(SubscriptionMixin, models.Model): return self.title +class EventSpecificMixin(models.Model): + """Mixin allowing for event-specific models instances + or not (depending on whether the event field is null)""" + + event = models.ForeignKey( + 'event.Event', + verbose_name=_("évènement"), + help_text=_("Si spécifié, l'instance du modèle " + "est spécifique à l'évènement en question"), + blank=True, + null=True + ) + + class Meta: + abstract = True + + class Place(EventSpecificMixin, models.Model): name = models.CharField( _("nom du lieu"),