1 # -*- coding: utf-8 -*-
3 from django
.contrib
.auth
import models
as auth_models
4 from django
.db
import models
6 from django_xworkflows
import models
as xwf_models
8 from xnet
.utils
.images
.fields
import ImageWithThumbsField
as ImageField
11 class MembershipWorkflow(xwf_models
.Workflow
):
13 ('pending', u
"En attente"),
14 ('enabled', u
"Actif"),
15 ('removed', u
"Supprimé"),
18 ('accept', ['pending'], 'enabled'),
19 ('remove', ['pending', 'enabled'], 'removed'),
21 initial_state
= 'pending'
23 log_model
= '' # We don't want logs
26 class XGroup(models
.Model
):
27 """A model for an XGroup."""
31 KIND_INSTIT
= 'instit'
34 (KIND_PROMO
, u
"Promo"),
35 (KIND_GROUP
, u
"Groupe"),
36 (KIND_BINET
, u
"Binet"),
37 (KIND_INSTIT
, u
"Institution"),
40 DOMAIN_HISTORY
= 'history'
41 DOMAIN_INTERNATIONAL
= 'international'
42 DOMAIN_EVENTS
= 'events'
43 DOMAIN_LEISURE
= 'leisure'
44 DOMAIN_SPORTS
= 'sports'
46 DOMAIN_REGION
= 'region'
49 (DOMAIN_HISTORY
, u
"Histoire"),
50 (DOMAIN_INTERNATIONAL
, u
"International"),
51 (DOMAIN_EVENTS
, u
"Événements"),
52 (DOMAIN_LEISURE
, u
"Loisirs"),
53 (DOMAIN_SPORTS
, u
"Sports"),
55 (DOMAIN_REGION
, u
"Région"),
58 name
= models
.CharField(max_length
=100, verbose_name
=u
"nom", unique
=True)
59 short
= models
.SlugField(max_length
=10, verbose_name
=u
"nom court", unique
=True)
60 kind
= models
.CharField(max_length
=10, choices
=KIND_CHOICES
, verbose_name
=u
"type")
61 domain
= models
.CharField(max_length
=20, choices
=DOMAIN_CHOICES
, verbose_name
=u
"domaine")
63 dns
= models
.CharField(max_length
=128, verbose_name
=u
"dns domain", blank
=True)
65 web
= models
.CharField(max_length
=255, verbose_name
=u
"website", blank
=True)
66 #contact = models.ForeignKey('Account')
67 description
= models
.TextField(blank
=True)
68 logo
= ImageField(upload_to
='logos', null
=True, blank
=True)
71 verbose_name
= u
"groupe"
72 verbose_name_plural
= u
"groupes"
74 def __unicode__(self
):
78 class Account(auth_models
.AbstractUser
):
79 xgroups
= models
.ManyToManyField(
80 XGroup
, related_name
='users', through
='Membership', verbose_name
=u
"groupes")
83 verbose_name
= u
"utilisateur"
84 verbose_name_plural
= u
"utilisateurs"
86 def __unicode__(self
):
90 class Membership(xwf_models
.WorkflowEnabled
, models
.Model
):
94 (LEVEL_MEMBER
, u
"membre"),
95 (LEVEL_ADMIN
, u
"administrateur"),
98 xgroup
= models
.ForeignKey(XGroup
, related_name
='memberships', verbose_name
=u
"groupe")
99 xuser
= models
.ForeignKey(Account
, related_name
='memberships', verbose_name
=u
"utilisateur")
101 level
= models
.IntegerField(choices
=LEVEL_CHOICES
, default
=LEVEL_MEMBER
, verbose_name
=u
"droits")
102 state
= xwf_models
.StateField(MembershipWorkflow
, verbose_name
=u
"état")
105 verbose_name
= u
"adhérent"
106 verbose_name_plural
= u
"adhérents"
107 unique_together
= ['xgroup', 'xuser']
109 def __unicode__(self
):
110 return u
"{} {} de {} [{}]".format(self
.xuser
, dict(Membership
.LEVEL_CHOICES
)[self
.level
], self
.xgroup
, self
.state
)