events - Update models
[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"))
ee990e9d
CW
20 main_description = models.ForeignKey('events.EventDescription', null=True, blank=True,
21 verbose_name=_(u"description principale"), related_name=_(u"+"))
563bc08c
CW
22 simple = models.BooleanField(verbose_name=_(u"simple"))
23
24 registration_end_date = models.DateTimeField(null=True, blank=True,
25 verbose_name=_(u"date limite d'inscription"))
26 notification_recipient = models.CharField(max_length=10, choices=NOTIFICATION_RECIPIENT_CHOICES,
27 verbose_name=_(u"destinataire(s) des notifications"))
28 show_registered = models.BooleanField(verbose_name=_(u"montrer les inscriptions aux membres"))
29 allow_non_members = models.BooleanField(verbose_name=_(u"autoriser les non-membres"))
30 allow_guests = models.BooleanField(verbose_name=_(u"autoriser les invités"))
31 registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
32
33 start_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de début"))
34 end_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de fin"))
35
ee990e9d
CW
36 def __unicode__(self):
37 return self.short
38
563bc08c
CW
39 class Meta:
40 verbose_name = _(u"événement")
41 verbose_name_plural = _(u"événements")
42
43
44class EventDescription(models.Model):
45 name = models.CharField(max_length=100, verbose_name=_(u"nom"))
46 description = models.CharField(max_length=1000, verbose_name=_(u"description"))
47 event = models.ForeignKey(Event, verbose_name=_(u"événement parent"), related_name=_(u"+"))
48 registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
49 main = models.BooleanField(verbose_name=_(u"principale"))
50
ee990e9d
CW
51 def __unicode__(self):
52 return self.name
53
563bc08c
CW
54 class Meta:
55 verbose_name = _(u"description d'événement")
56 verbose_name_plural = _(u"descriptions d'événements")
57
58
ee990e9d 59class PriceOption(models.Model):
563bc08c 60 name = models.CharField(max_length=100, verbose_name=_(u"nom"))
ee990e9d 61 amount = models.IntegerField(verbose_name=_(u"montant (centimes)"))
563bc08c
CW
62 event_description = models.ForeignKey(EventDescription, verbose_name=_(u"description associée"),
63 related_name=_(u"+"))
64
ee990e9d
CW
65 def __unicode__(self):
66 return self.name
67
563bc08c
CW
68 class Meta:
69 verbose_name = _(u"option de paiement")
70 verbose_name_plural = _(u"options de paiement")
71
72
73class Registration(models.Model):
74 STATUS_PENDING = 'pending'
75 STATUS_ACCEPTED = 'accepted'
76 STATUS_CANCELLED = 'cancelled'
77
78 STATUS_CHOICES = (
79 (STATUS_PENDING, _(u"en attente")),
80 (STATUS_ACCEPTED, _(u"accepté")),
81 (STATUS_CANCELLED, _(u"annulé")),
82 )
83
84 user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"),
85 related_name=_(u"+"))
86 event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"),
87 related_name=_(u"+"))
ee990e9d 88 option = models.ForeignKey(PriceOption, verbose_name=_(u"options associées"),
563bc08c 89 related_name=_(u"+"))
ee990e9d 90 date_registered = models.DateTimeField(verbose_name=_(u"date d'enregistrement"))
563bc08c
CW
91 status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut"))
92
ee990e9d
CW
93 def __unicode__(self):
94 return "%s, %s, %s".format(unicode(user), unicode(event), unicode(option))
95
96 class Meta:
97 verbose_name = _(u"option de paiement")
98 verbose_name_plural = _(u"options de paiement")
563bc08c 99