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")) | |
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 | ||
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")) | |
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 | 60 | class 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 | ||
74 | class 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 |