|
@@ -32,25 +32,33 @@ class Member(models.Model):
|
|
|
default='non_adherent')
|
|
|
type = models.CharField(max_length=20, choices=MEMBER_TYPE_CHOICES,
|
|
|
default='personne_physique')
|
|
|
- first_name = models.CharField(max_length=200)
|
|
|
- last_name = models.CharField(max_length=200)
|
|
|
+ first_name = models.CharField(max_length=200, verbose_name=u'Prénom')
|
|
|
+ last_name = models.CharField(max_length=200, verbose_name=u'Nom')
|
|
|
ldap_cn = models.CharField(max_length=200, blank=True,
|
|
|
- help_text='Clé avec le LDAP. Laisser vide pour la générer automatiquement')
|
|
|
+ help_text='Clé avec le LDAP. Laisser vide pour la générer'
|
|
|
+ 'automatiquement')
|
|
|
organization_name = models.CharField(max_length=200, blank=True,
|
|
|
- help_text='Nom de l\'organisme pour une personne morale')
|
|
|
- email = models.EmailField(max_length=254)
|
|
|
- home_phone_number = models.CharField(max_length=25, blank=True)
|
|
|
- mobile_phone_number = models.CharField(max_length=25, blank=True)
|
|
|
- address = models.TextField()
|
|
|
- postal_code = models.CharField(max_length=15)
|
|
|
- city = models.CharField(max_length=200)
|
|
|
- country = models.CharField(max_length=200)
|
|
|
+ verbose_name='Nom de l\'organisme',
|
|
|
+ help_text='Pour une personne morale')
|
|
|
+ email = models.EmailField(max_length=254, verbose_name=u'Courriel')
|
|
|
+ home_phone_number = models.CharField(max_length=25, blank=True,
|
|
|
+ verbose_name=u'Téléphone fixe')
|
|
|
+ mobile_phone_number = models.CharField(max_length=25, blank=True,
|
|
|
+ verbose_name=u'Téléphone mobile')
|
|
|
+ address = models.TextField(verbose_name=u'Adresse')
|
|
|
+ postal_code = models.CharField(max_length=15,
|
|
|
+ verbose_name=u'Code postal')
|
|
|
+ city = models.CharField(max_length=200,
|
|
|
+ verbose_name=u'Commune')
|
|
|
+ country = models.CharField(max_length=200,
|
|
|
+ default='France',
|
|
|
+ verbose_name=u'Pays')
|
|
|
entry_date = models.DateField(null=False,
|
|
|
blank=False,
|
|
|
default=datetime.date.today,
|
|
|
- help_text='date de première adhésion')
|
|
|
+ verbose_name='Date de première adhésion')
|
|
|
resign_date = models.DateField(null=True, blank=True,
|
|
|
- help_text='date de départ de l\'association')
|
|
|
+ verbose_name='Date de départ de l\'association')
|
|
|
|
|
|
def __unicode__(self):
|
|
|
name = self.first_name + ' ' + self.last_name
|
|
@@ -76,26 +84,28 @@ class CryptoKey(models.Model):
|
|
|
KEY_TYPE_CHOICES = (('RSA', 'RSA'), ('GPG', 'GPG'))
|
|
|
|
|
|
type = models.CharField(max_length=3, choices=KEY_TYPE_CHOICES)
|
|
|
- key = models.TextField()
|
|
|
- member = models.ForeignKey('Member')
|
|
|
+ key = models.TextField(verbose_name=u'Clé')
|
|
|
+ member = models.ForeignKey('Member', verbose_name=u'Membre')
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return u'Clé %s de %s' % (self.type, self.member)
|
|
|
|
|
|
|
|
|
class MembershipFee(models.Model):
|
|
|
- member = models.ForeignKey('Member', related_name='membership_fees')
|
|
|
- amount = models.IntegerField(null=False, default='20', help_text='en €')
|
|
|
+ member = models.ForeignKey('Member', related_name='membership_fees',
|
|
|
+ verbose_name=u'Membre')
|
|
|
+ amount = models.IntegerField(null=False, default='20', help_text='en €',
|
|
|
+ verbose_name=u'Montant')
|
|
|
start_date = models.DateField(
|
|
|
null=False,
|
|
|
blank=False,
|
|
|
default=datetime.date.today,
|
|
|
- help_text='date de début de cotisation')
|
|
|
+ verbose_name='Date de début de cotisation')
|
|
|
end_date = models.DateField(
|
|
|
null=False,
|
|
|
blank=False,
|
|
|
default=datetime.date.today() + datetime.timedelta(365),
|
|
|
- help_text='fin de validité de cotisation')
|
|
|
+ verbose_name='Date de fin de cotisation')
|
|
|
|
|
|
def __unicode__(self):
|
|
|
return (u'%s - %s - %i€' % (self.member, self.start_date,
|
|
@@ -105,7 +115,7 @@ class MembershipFee(models.Model):
|
|
|
class LdapUser(ldapdb.models.Model):
|
|
|
# TODO: déplacer ligne suivante dans settings.py
|
|
|
base_dn = "ou=users,ou=unix,o=ILLYSE,l=Villeurbanne,st=RHA,c=FR"
|
|
|
- object_classes = ['inetOrgPerson', 'organizationalPerson', 'person',
|
|
|
+ object_classes = ['inetOrgPerson', 'organizationalPerson', 'person',
|
|
|
'top', 'posixAccount']
|
|
|
|
|
|
uid = CharField(db_column='uid', unique=True, max_length=255)
|
|
@@ -127,6 +137,7 @@ class LdapUser(ldapdb.models.Model):
|
|
|
class Meta:
|
|
|
managed = False # Indique à South de ne pas gérer le model LdapUser
|
|
|
|
|
|
+
|
|
|
class LdapGroup(ldapdb.models.Model):
|
|
|
"""
|
|
|
Class for representing an LDAP group entry.
|
|
@@ -179,14 +190,14 @@ def define_display_name(sender, instance, **kwargs):
|
|
|
@receiver(pre_save, sender=Member)
|
|
|
def define_ldap_cn(sender, instance, **kwargs):
|
|
|
"""
|
|
|
- Lors de la sauvegarde d'un membre. Si le champ ldap_cn n'est pas définit,
|
|
|
+ Lors de la sauvegarde d'un membre. Si le champ ldap_cn n'est pas définit,
|
|
|
le calcul automatiquement en fonction du nom et du prénom
|
|
|
"""
|
|
|
if not instance.ldap_cn:
|
|
|
# Première lettre de chaque partie du prénom
|
|
|
first_name_letters = ''.join(
|
|
|
[c[0] for c in instance.first_name.split('-')]
|
|
|
- )
|
|
|
+ )
|
|
|
# Concaténer avec nom de famille
|
|
|
ldap_cn = ('%s%s' % (first_name_letters, instance.last_name))
|
|
|
# Remplacer ou enlever les caractères non ascii
|
|
@@ -195,8 +206,8 @@ def define_ldap_cn(sender, instance, **kwargs):
|
|
|
# Enlever ponctuation et espace
|
|
|
ldap_cn = ldap_cn.translate(None, string.punctuation + ' ')
|
|
|
# En minuscule
|
|
|
- ldap_cn = ldap_cn.lower()
|
|
|
-
|
|
|
+ ldap_cn = ldap_cn.lower()
|
|
|
+
|
|
|
instance.ldap_cn = ldap_cn
|
|
|
|
|
|
|
|
@@ -206,17 +217,17 @@ def sync_ldap(sender, instance, created, **kwargs):
|
|
|
Update LDAP data when a member is saved
|
|
|
"""
|
|
|
if not created:
|
|
|
- ldap_user = LdapUser.objects.get(pk=instance.ldap_cn)
|
|
|
+ ldap_user = LdapUser.objects.get(pk=instance.ldap_cn)
|
|
|
|
|
|
if created:
|
|
|
max_uidNumber = LdapUser.objects.order_by('-uidNumber')[0].uidNumber
|
|
|
-
|
|
|
+
|
|
|
ldap_user = LdapUser()
|
|
|
ldap_user.pk = instance.ldap_cn
|
|
|
ldap_user.uid = instance.ldap_cn
|
|
|
ldap_user.nick_name = instance.ldap_cn
|
|
|
ldap_user.uidNumber = max_uidNumber + 1
|
|
|
-
|
|
|
+
|
|
|
ldap_user.last_name = instance.last_name
|
|
|
ldap_user.first_name = instance.first_name
|
|
|
ldap_user.save()
|
|
@@ -228,7 +239,7 @@ def sync_ldap(sender, instance, created, **kwargs):
|
|
|
|
|
|
|
|
|
@receiver(post_delete, sender=Member)
|
|
|
-def remove_ldap_user_from_coin_group_when_deleting_member(sender,
|
|
|
+def remove_ldap_user_from_coin_group_when_deleting_member(sender,
|
|
|
instance,
|
|
|
**kwargs):
|
|
|
"""
|