+# -*- coding: utf-8 -*-
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+import xnet.accounts.models as accounts_models
+
+class Event(models.Model):
+ NOTIFICATION_RECIPIENT_CREATOR = 'creator'
+ NOTIFICATION_RECIPIENT_ANIM = 'anim'
+ NOTIFICATION_RECIPIENT_BOTH = 'both'
+ NOTIFICATION_RECIPIENT_NONE = 'none'
+
+ NOTIFICATION_RECIPIENT_CHOICES = (
+ (NOTIFICATION_RECIPIENT_CREATOR, _(u"créateur")),
+ (NOTIFICATION_RECIPIENT_ANIM, _(u"animateurs")),
+ (NOTIFICATION_RECIPIENT_BOTH, _(u"les deux")),
+ (NOTIFICATION_RECIPIENT_NONE, _(u"personne")),
+ )
+
+ short = models.SlugField(max_length=40, verbose_name=_(u"nom raccourci"))
+ simple = models.BooleanField(verbose_name=_(u"simple"))
+
+ registration_end_date = models.DateTimeField(null=True, blank=True,
+ verbose_name=_(u"date limite d'inscription"))
+ notification_recipient = models.CharField(max_length=10, choices=NOTIFICATION_RECIPIENT_CHOICES,
+ verbose_name=_(u"destinataire(s) des notifications"))
+ show_registered = models.BooleanField(verbose_name=_(u"montrer les inscriptions aux membres"))
+ allow_non_members = models.BooleanField(verbose_name=_(u"autoriser les non-membres"))
+ allow_guests = models.BooleanField(verbose_name=_(u"autoriser les invités"))
+ registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
+
+ start_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de début"))
+ end_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de fin"))
+
+ class Meta:
+ verbose_name = _(u"événement")
+ verbose_name_plural = _(u"événements")
+
+
+class EventDescription(models.Model):
+ name = models.CharField(max_length=100, verbose_name=_(u"nom"))
+ description = models.CharField(max_length=1000, verbose_name=_(u"description"))
+ event = models.ForeignKey(Event, verbose_name=_(u"événement parent"), related_name=_(u"+"))
+ registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
+ main = models.BooleanField(verbose_name=_(u"principale"))
+
+ class Meta:
+ verbose_name = _(u"description d'événement")
+ verbose_name_plural = _(u"descriptions d'événements")
+
+
+class PaymentOption(models.Model):
+ name = models.CharField(max_length=100, verbose_name=_(u"nom"))
+ amount = models.FloatField(verbose_name=_(u"montant"))
+ event_description = models.ForeignKey(EventDescription, verbose_name=_(u"description associée"),
+ related_name=_(u"+"))
+
+ class Meta:
+ verbose_name = _(u"option de paiement")
+ verbose_name_plural = _(u"options de paiement")
+
+
+class Registration(models.Model):
+ STATUS_PENDING = 'pending'
+ STATUS_ACCEPTED = 'accepted'
+ STATUS_CANCELLED = 'cancelled'
+
+ STATUS_CHOICES = (
+ (STATUS_PENDING, _(u"en attente")),
+ (STATUS_ACCEPTED, _(u"accepté")),
+ (STATUS_CANCELLED, _(u"annulé")),
+ )
+
+ user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"),
+ related_name=_(u"+"))
+ event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"),
+ related_name=_(u"+"))
+ options = models.ForeignKey(PaymentOption, verbose_name=_(u"options associées"),
+ related_name=_(u"+"))
+ status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut"))
+
+