group_required decorator
[xnet] / xnet / accounts / models.py
index e4f83ab..6308429 100644 (file)
@@ -5,6 +5,8 @@ from django.db import models
 
 from django_xworkflows import models as xwf_models
 
+from xnet.utils.images.fields import ImageWithThumbsField as ImageField
+
 
 class MembershipWorkflow(xwf_models.Workflow):
     states = (
@@ -60,15 +62,30 @@ class XGroup(models.Model):
 
     dns = models.CharField(max_length=128, verbose_name=u"dns domain", blank=True)
 
+    web = models.CharField(max_length=255, verbose_name=u"website", blank=True)
+    #contact = models.ForeignKey('')
+    description = models.TextField()
+    logo = ImageField(upload_to='logos', null=True, blank=True)
+
     class Meta:
-        verbose_name = u"group"
-        verbose_name_plural = u"groups"
+        verbose_name = u"groupe"
+        verbose_name_plural = u"groupes"
+
+    def __unicode__(self):
+        return self.name
 
 
 class Account(auth_models.AbstractUser):
     xgroups = models.ManyToManyField(
         XGroup, related_name='users', through='Membership', verbose_name=u"groupes")
 
+    class Meta:
+        verbose_name = u"utilisateur"
+        verbose_name_plural = u"utilisateurs"
+
+    def __unicode__(self):
+        return self.username
+
 
 class Membership(xwf_models.WorkflowEnabled, models.Model):
     LEVEL_MEMBER = 0
@@ -83,3 +100,11 @@ class Membership(xwf_models.WorkflowEnabled, models.Model):
 
     level = models.IntegerField(choices=LEVEL_CHOICES, default=LEVEL_MEMBER, verbose_name=u"droits")
     state = xwf_models.StateField(MembershipWorkflow, verbose_name=u"état")
+
+    class Meta:
+        verbose_name = u"adhérent"
+        verbose_name_plural = u"adhérents"
+        unique_together = ['xgroup', 'xuser']
+
+    def __unicode__(self):
+        return u"{} {} de {} [{}]".format(self.xuser, dict(Membership.LEVEL_CHOICES)[self.level], self.xgroup, self.state)