events - use XWorkflows
authorCorentin Wallez <corentin@wallez.net>
Sat, 2 Feb 2013 18:03:11 +0000 (18:03 +0000)
committerCorentin Wallez <corentin@wallez.net>
Sat, 2 Feb 2013 18:03:11 +0000 (18:03 +0000)
xnet/events/admin.py
xnet/events/models.py

index 43f3ddf..5205ffa 100644 (file)
@@ -27,8 +27,8 @@ admin.site.register(models.PriceOption, PriceOptionAdmin)
 
 
 class RegistrationAdmin(admin.ModelAdmin):
-    list_display = ['status']
-    list_filter = ['status']
+    list_display = ['state']
+    list_filter = ['state']
     search_fields = ['']
 
 admin.site.register(models.Registration, RegistrationAdmin)
index f61cc12..f599cf4 100644 (file)
@@ -1,6 +1,9 @@
 # -*- coding: utf-8 -*-
 from django.db import models
 from django.utils.translation import ugettext_lazy as _
+
+from django_xworkflows import models as xwf_models
+
 import xnet.accounts.models as accounts_models
 
 class Event(models.Model):
@@ -71,17 +74,22 @@ class PriceOption(models.Model):
         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é")),
+class RegistrationWorkflow(xwf_models.Workflow):
+    states = (
+        ('pending', u"En attente"),
+        ('accepted', u"Accepté"),
+        ('cancelled', u"Annulé"),
     )
+    transitions = (
+        ('accept', ['pending'], 'accepted'),
+        ('cancel', ['pending', 'accepted'], 'cancelled'),
+    )
+    initial_state = 'pending'
+
+    log_model = ''  # We don't want logs
 
+
+class Registration(models.Model):
     user = models.ForeignKey(accounts_models.Account, verbose_name=_(u"utilisateur enregistré"),
             related_name=_(u"event_registrations"))
     dn_event = models.ForeignKey(EventDescription, verbose_name=_(u"événement associé"),
@@ -89,12 +97,12 @@ class Registration(models.Model):
     option = models.ForeignKey(PriceOption, verbose_name=_(u"options associées"),
             related_name=_(u"registrations"))
     date_registered = models.DateTimeField(verbose_name=_(u"date d'enregistrement"))
-    status = models.CharField(max_length=10, choices=STATUS_CHOICES, verbose_name=_(u"statut"))
+    state = xwf_models.StateField(RegistrationWorkflow, verbose_name=u"état")
 
     def __unicode__(self):
         return "%s, %s, %s".format(unicode(user), unicode(event), unicode(option))
 
     class Meta:
-        verbose_name = _(u"option de paiement")
-        verbose_name_plural = _(u"options de paiement")
+        verbose_name = _(u"inscription")
+        verbose_name_plural = _(u"inscriptions")