add Meta and unicode to classes
[xnet] / xnet / accounts / models.py
CommitLineData
53722fb0
BG
1# -*- coding: utf-8 -*-
2
3from django.contrib.auth import models as auth_models
4from django.db import models
5
6from django_xworkflows import models as xwf_models
7
8
9class MembershipWorkflow(xwf_models.Workflow):
10 states = (
11 ('pending', u"En attente"),
12 ('enabled', u"Actif"),
13 ('removed', u"Supprimé"),
14 )
15 transitions = (
16 ('accept', ['pending'], 'enabled'),
17 ('remove', ['pending', 'enabled'], 'removed'),
18 )
19 initial_state = 'pending'
20
21 log_model = '' # We don't want logs
22
23
24class XGroup(models.Model):
25 """A model for an XGroup."""
26 KIND_PROMO = 'promo'
27 KIND_GROUP = 'group'
28 KIND_BINET = 'binet'
29 KIND_INSTIT = 'instit'
30
31 KIND_CHOICES = (
32 (KIND_PROMO, u"Promo"),
33 (KIND_GROUP, u"Groupe"),
34 (KIND_BINET, u"Binet"),
35 (KIND_INSTIT, u"Institution"),
36 )
37
38 DOMAIN_HISTORY = 'history'
39 DOMAIN_INTERNATIONAL = 'international'
40 DOMAIN_EVENTS = 'events'
41 DOMAIN_LEISURE = 'leisure'
42 DOMAIN_SPORTS = 'sports'
43 DOMAIN_PRO = 'pro'
44 DOMAIN_REGION = 'region'
45
46 DOMAIN_CHOICES = (
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"),
52 (DOMAIN_PRO, u"Pro"),
53 (DOMAIN_REGION, u"Région"),
54 )
55
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")
60
61 dns = models.CharField(max_length=128, verbose_name=u"dns domain", blank=True)
62
63 class Meta:
2dcfeb7d
BG
64 verbose_name = u"groupe"
65 verbose_name_plural = u"groupes"
66
67 def __unicode__(self):
68 return self.name
53722fb0
BG
69
70
71class Account(auth_models.AbstractUser):
72 xgroups = models.ManyToManyField(
73 XGroup, related_name='users', through='Membership', verbose_name=u"groupes")
74
2dcfeb7d
BG
75 class Meta:
76 verbose_name = u"utilisateur"
77 verbose_name_plural = u"utilisateurs"
78
79 def __unicode__(self):
80 return self.username
81
53722fb0
BG
82
83class Membership(xwf_models.WorkflowEnabled, models.Model):
84 LEVEL_MEMBER = 0
85 LEVEL_ADMIN = 10
86 LEVEL_CHOICES = (
87 (LEVEL_MEMBER, u"membre"),
88 (LEVEL_ADMIN, u"administrateur"),
89 )
90
91 xgroup = models.ForeignKey(XGroup, related_name='memberships', verbose_name=u"groupe")
92 xuser = models.ForeignKey(Account, related_name='memberships', verbose_name=u"utilisateur")
93
94 level = models.IntegerField(choices=LEVEL_CHOICES, default=LEVEL_MEMBER, verbose_name=u"droits")
95 state = xwf_models.StateField(MembershipWorkflow, verbose_name=u"état")
2dcfeb7d
BG
96
97 class Meta:
98 verbose_name = u"adhérent"
99 verbose_name_plural = u"adhérents"
100
101 def __unicode__(self):
102 return self.name