1 # -*- coding: utf-8 -*-
3 from django
.db
import models
5 from django_xworkflows
import models
as xwf_models
7 from xnet
.accounts
import models
as accounts_models
8 from xnet
.utils
.images
.fields
import ImageWithThumbsField
as ImageField
10 class MembershipWorkflow(xwf_models
.Workflow
):
12 ('pending', u
"En attente"),
13 ('enabled', u
"Actif"),
14 ('removed', u
"Supprimé"),
17 ('accept', ['pending'], 'enabled'),
18 ('remove', ['pending', 'enabled'], 'removed'),
20 initial_state
= 'pending'
22 log_model
= '' # We don't want logs
25 class XGroup(models
.Model
):
26 """A model for an XGroup."""
30 KIND_INSTIT
= 'instit'
33 (KIND_PROMO
, u
"Promo"),
34 (KIND_GROUP
, u
"Groupe"),
35 (KIND_BINET
, u
"Binet"),
36 (KIND_INSTIT
, u
"Institution"),
39 DOMAIN_HISTORY
= 'history'
40 DOMAIN_INTERNATIONAL
= 'international'
41 DOMAIN_EVENTS
= 'events'
42 DOMAIN_LEISURE
= 'leisure'
43 DOMAIN_SPORTS
= 'sports'
45 DOMAIN_REGION
= 'region'
48 (DOMAIN_HISTORY
, u
"Histoire"),
49 (DOMAIN_INTERNATIONAL
, u
"International"),
50 (DOMAIN_EVENTS
, u
"Événements"),
51 (DOMAIN_LEISURE
, u
"Loisirs"),
52 (DOMAIN_SPORTS
, u
"Sports"),
54 (DOMAIN_REGION
, u
"Région"),
57 name
= models
.CharField(max_length
=100, verbose_name
=u
"nom", unique
=True)
58 short
= models
.SlugField(max_length
=10, verbose_name
=u
"nom court", unique
=True)
59 kind
= models
.CharField(max_length
=10, choices
=KIND_CHOICES
, verbose_name
=u
"type")
60 domain
= models
.CharField(max_length
=20, choices
=DOMAIN_CHOICES
, blank
=True, verbose_name
=u
"domaine")
62 dns
= models
.CharField(max_length
=128, verbose_name
=u
"dns domain", blank
=True)
64 web
= models
.CharField(max_length
=255, verbose_name
=u
"website", blank
=True)
65 #contact = models.ForeignKey('Account')
66 description
= models
.TextField(blank
=True)
67 logo
= ImageField(upload_to
='logos', null
=True, blank
=True)
69 members
= models
.ManyToManyField(accounts_models
.Account
,
70 related_name
='xgroups', through
='Membership', verbose_name
=u
"membres")
73 verbose_name
= u
"groupe"
74 verbose_name_plural
= u
"groupes"
76 def __unicode__(self
):
80 class Membership(xwf_models
.WorkflowEnabled
, models
.Model
):
84 (LEVEL_MEMBER
, u
"membre"),
85 (LEVEL_ADMIN
, u
"administrateur"),
88 xgroup
= models
.ForeignKey(XGroup
, related_name
='memberships', verbose_name
=u
"groupe")
89 user
= models
.ForeignKey(accounts_models
.Account
, related_name
='memberships', verbose_name
=u
"utilisateur")
91 level
= models
.IntegerField(choices
=LEVEL_CHOICES
, default
=LEVEL_MEMBER
, verbose_name
=u
"droits")
92 state
= xwf_models
.StateField(MembershipWorkflow
, verbose_name
=u
"état")
95 verbose_name
= u
"adhérent"
96 verbose_name_plural
= u
"adhérents"
97 unique_together
= ['xgroup', 'user']
99 def __unicode__(self
):
100 return u
"{} {} de {} [{}]".format(self
.user
, self
.get_level_display(), self
.xgroup
, self
.state
)