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 main_description
= models
.OneToOneField('events.EventDescription', null
=True, blank
=True,
21 verbose_name
=_(u
"description principale"), related_name
=_(u
"+"))
22 simple
= models
.BooleanField(verbose_name
=_(u
"simple"))
23 creator
= models
.ForeignKey(accounts_models
.Account
, verbose_name
=_(u
"créateur"), related_name
=_(u
"created_events"))
25 registration_end
= models
.DateTimeField(null
=True, blank
=True,
26 verbose_name
=_(u
"date limite d'inscription"))
27 notification_recipient
= models
.CharField(max_length
=10, choices
=NOTIFICATION_RECIPIENT_CHOICES
,
28 verbose_name
=_(u
"destinataire(s) des notifications"))
29 show_registered
= models
.BooleanField(verbose_name
=_(u
"montrer les inscriptions aux membres"))
30 allow_non_members
= models
.BooleanField(verbose_name
=_(u
"autoriser les non-membres"))
31 allow_guests
= models
.BooleanField(verbose_name
=_(u
"autoriser les invités"))
32 registration_limit
= models
.IntegerField(verbose_name
=_(u
"limites du nombre d'inscrits"))
34 start_date
= models
.DateTimeField(null
=True, blank
=True, verbose_name
=_(u
"date de début"))
35 end_date
= models
.DateTimeField(null
=True, blank
=True, verbose_name
=_(u
"date de fin"))
37 def __unicode__(self
):
41 verbose_name
= _(u
"événement")
42 verbose_name_plural
= _(u
"événements")
45 class EventDescription(models
.Model
):
46 name
= models
.CharField(max_length
=100, verbose_name
=_(u
"nom"))
47 description
= models
.CharField(max_length
=1000, verbose_name
=_(u
"description"))
48 event
= models
.ForeignKey(Event
, verbose_name
=_(u
"événement parent"), related_name
=_(u
"descriptions"))
49 registration_limit
= models
.IntegerField(verbose_name
=_(u
"limites du nombre d'inscrits"))
50 main
= models
.BooleanField(verbose_name
=_(u
"principale"))
52 def __unicode__(self
):
56 verbose_name
= _(u
"description d'événement")
57 verbose_name_plural
= _(u
"descriptions d'événements")
60 class PriceOption(models
.Model
):
61 name
= models
.CharField(max_length
=100, verbose_name
=_(u
"nom"))
62 amount
= models
.IntegerField(verbose_name
=_(u
"montant (centimes)"))
63 event_description
= models
.ForeignKey(EventDescription
, verbose_name
=_(u
"description associée"),
64 related_name
=_(u
"price_options"))
66 def __unicode__(self
):
70 verbose_name
= _(u
"option de paiement")
71 verbose_name_plural
= _(u
"options de paiement")
74 class Registration(models
.Model
):
75 STATUS_PENDING
= 'pending'
76 STATUS_ACCEPTED
= 'accepted'
77 STATUS_CANCELLED
= 'cancelled'
80 (STATUS_PENDING
, _(u
"en attente")),
81 (STATUS_ACCEPTED
, _(u
"accepté")),
82 (STATUS_CANCELLED
, _(u
"annulé")),
85 user
= models
.ForeignKey(accounts_models
.Account
, verbose_name
=_(u
"utilisateur enregistré"),
86 related_name
=_(u
"event_registrations"))
87 dn_event
= models
.ForeignKey(EventDescription
, verbose_name
=_(u
"événement associé"),
88 related_name
=_(u
"registrations"))
89 option
= models
.ForeignKey(PriceOption
, verbose_name
=_(u
"options associées"),
90 related_name
=_(u
"registrations"))
91 date_registered
= models
.DateTimeField(verbose_name
=_(u
"date d'enregistrement"))
92 status
= models
.CharField(max_length
=10, choices
=STATUS_CHOICES
, verbose_name
=_(u
"statut"))
94 def __unicode__(self
):
95 return "%s, %s, %s".format(unicode(user
), unicode(event
), unicode(option
))
98 verbose_name
= _(u
"option de paiement")
99 verbose_name_plural
= _(u
"options de paiement")