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")) | |
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 | ||
44 | class 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 | 59 | class 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 | ||
73 | class 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 |