from xnet.utils.images.fields import ImageWithThumbsField as ImageField
-class MembershipWorkflow(xwf_models.Workflow):
- states = (
- ('pending', u"En attente"),
- ('enabled', u"Actif"),
- ('removed', u"Supprimé"),
- )
- transitions = (
- ('accept', ['pending'], 'enabled'),
- ('remove', ['pending', 'enabled'], 'removed'),
- )
- initial_state = 'pending'
-
- log_model = '' # We don't want logs
-
-
-class XGroup(models.Model):
- """A model for an XGroup."""
- KIND_PROMO = 'promo'
- KIND_GROUP = 'group'
- KIND_BINET = 'binet'
- KIND_INSTIT = 'instit'
-
- KIND_CHOICES = (
- (KIND_PROMO, u"Promo"),
- (KIND_GROUP, u"Groupe"),
- (KIND_BINET, u"Binet"),
- (KIND_INSTIT, u"Institution"),
- )
-
- DOMAIN_HISTORY = 'history'
- DOMAIN_INTERNATIONAL = 'international'
- DOMAIN_EVENTS = 'events'
- DOMAIN_LEISURE = 'leisure'
- DOMAIN_SPORTS = 'sports'
- DOMAIN_PRO = 'pro'
- DOMAIN_REGION = 'region'
-
- DOMAIN_CHOICES = (
- (DOMAIN_HISTORY, u"Histoire"),
- (DOMAIN_INTERNATIONAL, u"International"),
- (DOMAIN_EVENTS, u"Événements"),
- (DOMAIN_LEISURE, u"Loisirs"),
- (DOMAIN_SPORTS, u"Sports"),
- (DOMAIN_PRO, u"Pro"),
- (DOMAIN_REGION, u"Région"),
- )
-
- name = models.CharField(max_length=100, verbose_name=u"nom", unique=True)
- short = models.SlugField(max_length=10, verbose_name=u"nom court", unique=True)
- kind = models.CharField(max_length=10, choices=KIND_CHOICES, verbose_name=u"type")
- domain = models.CharField(max_length=20, choices=DOMAIN_CHOICES, blank=True, verbose_name=u"domaine")
-
- 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('Account')
- description = models.TextField(blank=True)
- logo = ImageField(upload_to='logos', null=True, blank=True)
-
- class Meta:
- 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"
def __unicode__(self):
return self.username
-
-
-class Membership(xwf_models.WorkflowEnabled, models.Model):
- LEVEL_MEMBER = 0
- LEVEL_ADMIN = 10
- LEVEL_CHOICES = (
- (LEVEL_MEMBER, u"membre"),
- (LEVEL_ADMIN, u"administrateur"),
- )
-
- xgroup = models.ForeignKey(XGroup, related_name='memberships', verbose_name=u"groupe")
- xuser = models.ForeignKey(Account, related_name='memberships', verbose_name=u"utilisateur")
-
- 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, self.get_level_display(), self.xgroup, self.state)