Commit | Line | Data |
---|---|---|
563bc08c CW |
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 | |
5 | ||
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' | |
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")) | |
20 | simple = models.BooleanField(verbose_name=_(u"simple")) | |
21 | ||
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")) | |
30 | ||
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")) | |
33 | ||
34 | class Meta: | |
35 | verbose_name = _(u"événement") | |
36 | verbose_name_plural = _(u"événements") | |
37 | ||
38 | ||
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")) | |
45 | ||
46 | class Meta: | |
47 | verbose_name = _(u"description d'événement") | |
48 | verbose_name_plural = _(u"descriptions d'événements") | |
49 | ||
50 | ||
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"), | |
55 | related_name=_(u"+")) | |
56 | ||
57 | class Meta: | |
58 | verbose_name = _(u"option de paiement") | |
59 | verbose_name_plural = _(u"options de paiement") | |
60 | ||
61 | ||
62 | class Registration(models.Model): | |
63 | STATUS_PENDING = 'pending' | |
64 | STATUS_ACCEPTED = 'accepted' | |
65 | STATUS_CANCELLED = 'cancelled' | |
66 | ||
67 | STATUS_CHOICES = ( | |
68 | (STATUS_PENDING, _(u"en attente")), | |
69 | (STATUS_ACCEPTED, _(u"accepté")), | |
70 | (STATUS_CANCELLED, _(u"annulé")), | |
71 | ) | |
72 | ||
73 | user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"), | |
74 | related_name=_(u"+")) | |
75 | event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"), | |
76 | related_name=_(u"+")) | |
77 | options = models.ForeignKey(PaymentOption, verbose_name=_(u"options associées"), | |
78 | related_name=_(u"+")) | |
79 | status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut")) | |
80 | ||
81 |