1 # -*- coding: utf-8 -*-
2 from django
.db
import models
3 from django
.utils
.translation
import ugettext_lazy
as _
4 import xnet
.accounts
.models
as accounts_models
6 class Event(models
.Model
):
7 NOTIFICATION_RECIPIENT_CREATOR
= 'creator'
8 NOTIFICATION_RECIPIENT_ANIM
= 'anim'
9 NOTIFICATION_RECIPIENT_BOTH
= 'both'
10 NOTIFICATION_RECIPIENT_NONE
= 'none'
12 NOTIFICATION_RECIPIENT_CHOICES
= (
13 (NOTIFICATION_RECIPIENT_CREATOR
, _(u
"créateur")),
14 (NOTIFICATION_RECIPIENT_ANIM
, _(u
"animateurs")),
15 (NOTIFICATION_RECIPIENT_BOTH
, _(u
"les deux")),
16 (NOTIFICATION_RECIPIENT_NONE
, _(u
"personne")),
19 short
= models
.SlugField(max_length
=40, verbose_name
=_(u
"nom raccourci"))
20 simple
= models
.BooleanField(verbose_name
=_(u
"simple"))
22 registration_end_date
= models
.DateTimeField(null
=True, blank
=True,
23 verbose_name
=_(u
"date limite d'inscription"))
24 notification_recipient
= models
.CharField(max_length
=10, choices
=NOTIFICATION_RECIPIENT_CHOICES
,
25 verbose_name
=_(u
"destinataire(s) des notifications"))
26 show_registered
= models
.BooleanField(verbose_name
=_(u
"montrer les inscriptions aux membres"))
27 allow_non_members
= models
.BooleanField(verbose_name
=_(u
"autoriser les non-membres"))
28 allow_guests
= models
.BooleanField(verbose_name
=_(u
"autoriser les invités"))
29 registered_limit
= models
.PositiveIntegerField(verbose_name
=_(u
"limites du nombre d'inscrits"))
31 start_date
= models
.DateTimeField(null
=True, blank
=True, verbose_name
=_(u
"date de début"))
32 end_date
= models
.DateTimeField(null
=True, blank
=True, verbose_name
=_(u
"date de fin"))
35 verbose_name
= _(u
"événement")
36 verbose_name_plural
= _(u
"événements")
39 class EventDescription(models
.Model
):
40 name
= models
.CharField(max_length
=100, verbose_name
=_(u
"nom"))
41 description
= models
.CharField(max_length
=1000, verbose_name
=_(u
"description"))
42 event
= models
.ForeignKey(Event
, verbose_name
=_(u
"événement parent"), related_name
=_(u
"+"))
43 registered_limit
= models
.PositiveIntegerField(verbose_name
=_(u
"limites du nombre d'inscrits"))
44 main
= models
.BooleanField(verbose_name
=_(u
"principale"))
47 verbose_name
= _(u
"description d'événement")
48 verbose_name_plural
= _(u
"descriptions d'événements")
51 class PaymentOption(models
.Model
):
52 name
= models
.CharField(max_length
=100, verbose_name
=_(u
"nom"))
53 amount
= models
.FloatField(verbose_name
=_(u
"montant"))
54 event_description
= models
.ForeignKey(EventDescription
, verbose_name
=_(u
"description associée"),
58 verbose_name
= _(u
"option de paiement")
59 verbose_name_plural
= _(u
"options de paiement")
62 class Registration(models
.Model
):
63 STATUS_PENDING
= 'pending'
64 STATUS_ACCEPTED
= 'accepted'
65 STATUS_CANCELLED
= 'cancelled'
68 (STATUS_PENDING
, _(u
"en attente")),
69 (STATUS_ACCEPTED
, _(u
"accepté")),
70 (STATUS_CANCELLED
, _(u
"annulé")),
73 user
= models
.ForeignKey(accounts_models
.Account
, verbose_name
=_(u
"utilisateur enregistré"),
75 event
= models
.ForeignKey(EventDescription
, verbose_name
=_(u
"événement associé"),
77 options
= models
.ForeignKey(PaymentOption
, verbose_name
=_(u
"options associées"),
79 status
= models
.CharField(max_length
=10, choices
=STATUS_CHOICES
, verbose_name
=_(u
"statut"))