e4f83ab90dd41a462420b3cbb2828b58459ce6cb
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
9 class MembershipWorkflow(xwf_models
.Workflow
):
11 ('pending', u
"En attente"),
12 ('enabled', u
"Actif"),
13 ('removed', u
"Supprimé"),
16 ('accept', ['pending'], 'enabled'),
17 ('remove', ['pending', 'enabled'], 'removed'),
19 initial_state
= 'pending'
21 log_model
= '' # We don't want logs
24 class XGroup(models
.Model
):
25 """A model for an XGroup."""
29 KIND_INSTIT
= 'instit'
32 (KIND_PROMO
, u
"Promo"),
33 (KIND_GROUP
, u
"Groupe"),
34 (KIND_BINET
, u
"Binet"),
35 (KIND_INSTIT
, u
"Institution"),
38 DOMAIN_HISTORY
= 'history'
39 DOMAIN_INTERNATIONAL
= 'international'
40 DOMAIN_EVENTS
= 'events'
41 DOMAIN_LEISURE
= 'leisure'
42 DOMAIN_SPORTS
= 'sports'
44 DOMAIN_REGION
= 'region'
47 (DOMAIN_HISTORY
, u
"Histoire"),
48 (DOMAIN_INTERNATIONAL
, u
"International"),
49 (DOMAIN_EVENTS
, u
"Événements"),
50 (DOMAIN_LEISURE
, u
"Loisirs"),
51 (DOMAIN_SPORTS
, u
"Sports"),
53 (DOMAIN_REGION
, u
"Région"),
56 name
= models
.CharField(max_length
=100, verbose_name
=u
"nom", unique
=True)
57 short
= models
.SlugField(max_length
=10, verbose_name
=u
"nom court", unique
=True)
58 kind
= models
.CharField(max_length
=10, choices
=KIND_CHOICES
, verbose_name
=u
"type")
59 domain
= models
.CharField(max_length
=20, choices
=DOMAIN_CHOICES
, verbose_name
=u
"domaine")
61 dns
= models
.CharField(max_length
=128, verbose_name
=u
"dns domain", blank
=True)
64 verbose_name
= u
"group"
65 verbose_name_plural
= u
"groups"
68 class Account(auth_models
.AbstractUser
):
69 xgroups
= models
.ManyToManyField(
70 XGroup
, related_name
='users', through
='Membership', verbose_name
=u
"groupes")
73 class Membership(xwf_models
.WorkflowEnabled
, models
.Model
):
77 (LEVEL_MEMBER
, u
"membre"),
78 (LEVEL_ADMIN
, u
"administrateur"),
81 xgroup
= models
.ForeignKey(XGroup
, related_name
='memberships', verbose_name
=u
"groupe")
82 xuser
= models
.ForeignKey(Account
, related_name
='memberships', verbose_name
=u
"utilisateur")
84 level
= models
.IntegerField(choices
=LEVEL_CHOICES
, default
=LEVEL_MEMBER
, verbose_name
=u
"droits")
85 state
= xwf_models
.StateField(MembershipWorkflow
, verbose_name
=u
"état")