--- /dev/null
+from django.contrib import admin
+
+from . import models
+
+
+class EventAdmin(admin.ModelAdmin):
+ list_display = ['short', 'simple', 'start_date', 'end_date']
+ list_filter = ['simple', 'start_date', 'end_date']
+ search_fields = ['short']
+
+admin.site.register(models.Event, EventAdmin)
+
+
+class EventDescriptionAdmin(admin.ModelAdmin):
+ list_display = ['name', 'event', 'main']
+ list_filter = ['main']
+ search_fields = ['name']
+
+admin.site.register(models.EventDescription, EventDescriptionAdmin)
+
+
+class PaymentOptionAdmin(admin.ModelAdmin):
+ list_display = ['name', 'amount']
+ search_fields = ['name']
+
+admin.site.register(models.PaymentOption, PaymentOptionAdmin)
+
+
+class RegistrationAdmin(admin.ModelAdmin):
+ list_display = ['status']
+ list_filter = ['status']
+ search_fields = ['']
+
+admin.site.register(models.Registration, RegistrationAdmin)
--- /dev/null
+# -*- coding: utf-8 -*-
+from django.db import models
+from django.utils.translation import ugettext_lazy as _
+import xnet.accounts.models as accounts_models
+
+class Event(models.Model):
+ NOTIFICATION_RECIPIENT_CREATOR = 'creator'
+ NOTIFICATION_RECIPIENT_ANIM = 'anim'
+ NOTIFICATION_RECIPIENT_BOTH = 'both'
+ NOTIFICATION_RECIPIENT_NONE = 'none'
+
+ NOTIFICATION_RECIPIENT_CHOICES = (
+ (NOTIFICATION_RECIPIENT_CREATOR, _(u"créateur")),
+ (NOTIFICATION_RECIPIENT_ANIM, _(u"animateurs")),
+ (NOTIFICATION_RECIPIENT_BOTH, _(u"les deux")),
+ (NOTIFICATION_RECIPIENT_NONE, _(u"personne")),
+ )
+
+ short = models.SlugField(max_length=40, verbose_name=_(u"nom raccourci"))
+ simple = models.BooleanField(verbose_name=_(u"simple"))
+
+ registration_end_date = models.DateTimeField(null=True, blank=True,
+ verbose_name=_(u"date limite d'inscription"))
+ notification_recipient = models.CharField(max_length=10, choices=NOTIFICATION_RECIPIENT_CHOICES,
+ verbose_name=_(u"destinataire(s) des notifications"))
+ show_registered = models.BooleanField(verbose_name=_(u"montrer les inscriptions aux membres"))
+ allow_non_members = models.BooleanField(verbose_name=_(u"autoriser les non-membres"))
+ allow_guests = models.BooleanField(verbose_name=_(u"autoriser les invités"))
+ registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
+
+ start_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de début"))
+ end_date = models.DateTimeField(null=True, blank=True, verbose_name=_(u"date de fin"))
+
+ class Meta:
+ verbose_name = _(u"événement")
+ verbose_name_plural = _(u"événements")
+
+
+class EventDescription(models.Model):
+ name = models.CharField(max_length=100, verbose_name=_(u"nom"))
+ description = models.CharField(max_length=1000, verbose_name=_(u"description"))
+ event = models.ForeignKey(Event, verbose_name=_(u"événement parent"), related_name=_(u"+"))
+ registered_limit = models.PositiveIntegerField(verbose_name=_(u"limites du nombre d'inscrits"))
+ main = models.BooleanField(verbose_name=_(u"principale"))
+
+ class Meta:
+ verbose_name = _(u"description d'événement")
+ verbose_name_plural = _(u"descriptions d'événements")
+
+
+class PaymentOption(models.Model):
+ name = models.CharField(max_length=100, verbose_name=_(u"nom"))
+ amount = models.FloatField(verbose_name=_(u"montant"))
+ event_description = models.ForeignKey(EventDescription, verbose_name=_(u"description associée"),
+ related_name=_(u"+"))
+
+ class Meta:
+ verbose_name = _(u"option de paiement")
+ verbose_name_plural = _(u"options de paiement")
+
+
+class Registration(models.Model):
+ STATUS_PENDING = 'pending'
+ STATUS_ACCEPTED = 'accepted'
+ STATUS_CANCELLED = 'cancelled'
+
+ STATUS_CHOICES = (
+ (STATUS_PENDING, _(u"en attente")),
+ (STATUS_ACCEPTED, _(u"accepté")),
+ (STATUS_CANCELLED, _(u"annulé")),
+ )
+
+ user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"),
+ related_name=_(u"+"))
+ event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"),
+ related_name=_(u"+"))
+ options = models.ForeignKey(PaymentOption, verbose_name=_(u"options associées"),
+ related_name=_(u"+"))
+ status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut"))
+
+