events - update the model
[xnet] / xnet / events / models.py
CommitLineData
563bc08c
CW
1# -*- coding: utf-8 -*-
2from django.db import models
3from django.utils.translation import ugettext_lazy as _
4import xnet.accounts.models as accounts_models
5
6class Event(models.Model):
7 NOTIFICATION_RECIPIENT_CREATOR = 'creator'
8 NOTIFICATION_RECIPIENT_ANIM = 'anim'
9 NOTIFICATION_RECIPIENT_BOTH = 'both'
10 NOTIFICATION_RECIPIENT_NONE = 'none'
11
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")),
17 )
18
19 short = models.SlugField(max_length=40, verbose_name=_(u"nom raccourci"))
74215aac 20 main_description = models.OneToOneField('events.EventDescription', null=True, blank=True,
ee990e9d 21 verbose_name=_(u"description principale"), related_name=_(u"+"))
563bc08c 22 simple = models.BooleanField(verbose_name=_(u"simple"))
74215aac 23 creator = models.ForeignKey(accounts_models.Account, verbose_name=_(u"créateur"), related_name=_(u"created_events"))
563bc08c 24
74215aac 25 registration_end = models.DateTimeField(null=True, blank=True,
563bc08c
CW
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"))
74215aac 32 registration_limit = models.IntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
563bc08c
CW
33
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"))
36
ee990e9d
CW
37 def __unicode__(self):
38 return self.short
39
563bc08c
CW
40 class Meta:
41 verbose_name = _(u"événement")
42 verbose_name_plural = _(u"événements")
43
44
45class 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"))
74215aac
CW
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"))
563bc08c
CW
50 main = models.BooleanField(verbose_name=_(u"principale"))
51
ee990e9d
CW
52 def __unicode__(self):
53 return self.name
54
563bc08c
CW
55 class Meta:
56 verbose_name = _(u"description d'événement")
57 verbose_name_plural = _(u"descriptions d'événements")
58
59
ee990e9d 60class PriceOption(models.Model):
563bc08c 61 name = models.CharField(max_length=100, verbose_name=_(u"nom"))
ee990e9d 62 amount = models.IntegerField(verbose_name=_(u"montant (centimes)"))
563bc08c 63 event_description = models.ForeignKey(EventDescription, verbose_name=_(u"description associée"),
74215aac 64 related_name=_(u"price_options"))
563bc08c 65
ee990e9d
CW
66 def __unicode__(self):
67 return self.name
68
563bc08c
CW
69 class Meta:
70 verbose_name = _(u"option de paiement")
71 verbose_name_plural = _(u"options de paiement")
72
73
74class Registration(models.Model):
75 STATUS_PENDING = 'pending'
76 STATUS_ACCEPTED = 'accepted'
77 STATUS_CANCELLED = 'cancelled'
78
79 STATUS_CHOICES = (
80 (STATUS_PENDING, _(u"en attente")),
81 (STATUS_ACCEPTED, _(u"accepté")),
82 (STATUS_CANCELLED, _(u"annulé")),
83 )
84
85 user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"),
74215aac
CW
86 related_name=_(u"event_registrations"))
87 dn_event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"),
88 related_name=_(u"registrations"))
ee990e9d 89 option = models.ForeignKey(PriceOption, verbose_name=_(u"options associées"),
74215aac 90 related_name=_(u"registrations"))
ee990e9d 91 date_registered = models.DateTimeField(verbose_name=_(u"date d'enregistrement"))
563bc08c
CW
92 status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut"))
93
ee990e9d
CW
94 def __unicode__(self):
95 return "%s, %s, %s".format(unicode(user), unicode(event), unicode(option))
96
97 class Meta:
98 verbose_name = _(u"option de paiement")
99 verbose_name_plural = _(u"options de paiement")
563bc08c 100