Ajout d'infos sur les attributs
Pour l'intranet et un futur gest_crans
This commit is contained in:
parent
96705403a2
commit
7a644cdfa9
2 changed files with 78 additions and 5 deletions
68
attributs.py
68
attributs.py
|
@ -62,6 +62,14 @@ class Attr(object):
|
||||||
can_modify = ['Nounou']
|
can_modify = ['Nounou']
|
||||||
"""La liste des droits qui suffisent à avoir le droit de modifier la valeur"""
|
"""La liste des droits qui suffisent à avoir le droit de modifier la valeur"""
|
||||||
|
|
||||||
|
can_view = ['Nounou', 'apprenti', 'self', 'parent', 'owner']
|
||||||
|
"""Qui peut voir l'attribut. Par défaut, les nounous et les apprentis
|
||||||
|
peuvent tout voir. Par transparence, et par utilité, on autorise par
|
||||||
|
défaut l'adhérent à voir les données le concernant."""
|
||||||
|
|
||||||
|
category = 'other'
|
||||||
|
"""Catégorie de l'attribut (pour affichage futur)"""
|
||||||
|
|
||||||
def __init__(self, val, ldif, conn, ctxt_check):
|
def __init__(self, val, ldif, conn, ctxt_check):
|
||||||
"""Crée un nouvel objet représentant un attribut.
|
"""Crée un nouvel objet représentant un attribut.
|
||||||
|
|
||||||
|
@ -135,6 +143,11 @@ class objectClass(Attr):
|
||||||
optional = False
|
optional = False
|
||||||
legend = "entité"
|
legend = "entité"
|
||||||
|
|
||||||
|
can_modify = []
|
||||||
|
""" Personne ne doit modifier de classe """
|
||||||
|
|
||||||
|
can_view = ['Nounou', 'apprenti']
|
||||||
|
""" Internal purpose (et à fin pédagogique) """
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
if val not in [ 'top', 'posixAccount', 'shadowAccount', 'proprio',
|
if val not in [ 'top', 'posixAccount', 'shadowAccount', 'proprio',
|
||||||
|
@ -160,16 +173,25 @@ class aid(intAttr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Identifiant de l'adhérent"
|
legend = u"Identifiant de l'adhérent"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
|
can_modify = []
|
||||||
|
""" Personne ne devrait modifier un attribut d'identification """
|
||||||
|
|
||||||
|
can_view = ['Nounou', 'apprenti', 'cableurs']
|
||||||
|
|
||||||
class uid(Attr):
|
class uid(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
option = False
|
option = False
|
||||||
legend = u"L'identifiant canonique de l'adhérent"
|
legend = u"L'identifiant canonique de l'adhérent"
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
class nom(Attr):
|
class nom(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
legend = "Nom"
|
legend = "Nom"
|
||||||
|
category = 'perso'
|
||||||
|
can_modify = ["Nounou", "Cableur"]
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
if u'club' in ldif['objectClass']:
|
if u'club' in ldif['objectClass']:
|
||||||
|
@ -177,11 +199,12 @@ class nom(Attr):
|
||||||
else:
|
else:
|
||||||
self.value = validate_name(val)
|
self.value = validate_name(val)
|
||||||
|
|
||||||
|
|
||||||
class prenom(Attr):
|
class prenom(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Prénom"
|
legend = u"Prénom"
|
||||||
|
category = 'perso'
|
||||||
|
can_modify = ["Nounou", "Cableur"]
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
self.value = validate_name(val)
|
self.value = validate_name(val)
|
||||||
|
@ -191,6 +214,7 @@ class tel(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Téléphone"
|
legend = u"Téléphone"
|
||||||
|
category = 'perso'
|
||||||
can_modify = ["self", "Nounou", "Cableur"]
|
can_modify = ["self", "Nounou", "Cableur"]
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
|
@ -212,9 +236,13 @@ class yearAttr(intAttr):
|
||||||
class paiement(yearAttr):
|
class paiement(yearAttr):
|
||||||
legend = u"Paiement"
|
legend = u"Paiement"
|
||||||
can_modify = ["Cableur", "Nounou", "tresorier"]
|
can_modify = ["Cableur", "Nounou", "tresorier"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
class carteEtudiant(yearAttr):
|
class carteEtudiant(yearAttr):
|
||||||
legend = u"Carte d'étudiant"
|
legend = u"Carte d'étudiant"
|
||||||
|
category = 'perso'
|
||||||
|
can_modify = ["Cableur", "Nounou", "tresorier"]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class mailAlias(Attr):
|
class mailAlias(Attr):
|
||||||
|
@ -222,6 +250,7 @@ class mailAlias(Attr):
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Alias mail"
|
legend = u"Alias mail"
|
||||||
can_modify = ["self", "Cableur", "Nounou"]
|
can_modify = ["self", "Cableur", "Nounou"]
|
||||||
|
category = 'mail'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
val = val.lower()
|
val = val.lower()
|
||||||
|
@ -234,6 +263,7 @@ class canonicalAlias(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Alias mail canonique"
|
legend = u"Alias mail canonique"
|
||||||
|
category = 'mail'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
val = u".".join([ a.capitalize() for a in val.split(u'.', 1) ])
|
val = u".".join([ a.capitalize() for a in val.split(u'.', 1) ])
|
||||||
|
@ -241,12 +271,12 @@ class canonicalAlias(Attr):
|
||||||
raise ValueError("Alias mail invalide (%s)" % val)
|
raise ValueError("Alias mail invalide (%s)" % val)
|
||||||
self.value = val
|
self.value = val
|
||||||
|
|
||||||
|
|
||||||
class etudes(Attr):
|
class etudes(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Études"
|
legend = u"Études"
|
||||||
can_modify = ["self", "Cableur", "Nounou"]
|
can_modify = ["self", "Cableur", "Nounou"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
# who cares
|
# who cares
|
||||||
|
@ -258,6 +288,7 @@ class chbre(Attr):
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Chambre sur le campus"
|
legend = u"Chambre sur le campus"
|
||||||
can_modify = ["self", "Cableur", "Nounou"]
|
can_modify = ["self", "Cableur", "Nounou"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
if self.ctxt_check: # Si ce n'est pas la peine de vérifier, on ne vérifie pas
|
if self.ctxt_check: # Si ce n'est pas la peine de vérifier, on ne vérifie pas
|
||||||
|
@ -285,6 +316,7 @@ class droits(Attr):
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Droits sur les serveurs"
|
legend = u"Droits sur les serveurs"
|
||||||
can_modify = ["Nounou", "Bureau"]
|
can_modify = ["Nounou", "Bureau"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, val, ldif):
|
def parse_value(self, val, ldif):
|
||||||
if val.lower() not in ['apprenti', 'nounou', 'cableur', 'tresorier', 'bureau',
|
if val.lower() not in ['apprenti', 'nounou', 'cableur', 'tresorier', 'bureau',
|
||||||
|
@ -308,6 +340,7 @@ class solde(Attr):
|
||||||
self.value = solde
|
self.value = solde
|
||||||
|
|
||||||
class dnsAttr(Attr):
|
class dnsAttr(Attr):
|
||||||
|
category = 'dns'
|
||||||
def parse_value(self, dns, ldif):
|
def parse_value(self, dns, ldif):
|
||||||
dns = dns.lower()
|
dns = dns.lower()
|
||||||
name, net = dns.split('.', 1)
|
name, net = dns.split('.', 1)
|
||||||
|
@ -322,6 +355,7 @@ class host(dnsAttr):
|
||||||
optional = False
|
optional = False
|
||||||
hname = legend = u"Nom d'hôte"
|
hname = legend = u"Nom d'hôte"
|
||||||
can_modify = ["parent", "Nounou", "Cableur"]
|
can_modify = ["parent", "Nounou", "Cableur"]
|
||||||
|
category = 'base_tech'
|
||||||
|
|
||||||
|
|
||||||
class macAddress(Attr):
|
class macAddress(Attr):
|
||||||
|
@ -329,6 +363,7 @@ class macAddress(Attr):
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Adresse physique de la carte réseau"
|
legend = u"Adresse physique de la carte réseau"
|
||||||
hname = "Adresse MAC"
|
hname = "Adresse MAC"
|
||||||
|
category = 'base_tech'
|
||||||
can_modify = ["parent", "Nounou", "Cableur"]
|
can_modify = ["parent", "Nounou", "Cableur"]
|
||||||
|
|
||||||
def parse_value(self, mac, ldif):
|
def parse_value(self, mac, ldif):
|
||||||
|
@ -343,6 +378,7 @@ class ipHostNumber(Attr):
|
||||||
optional = False
|
optional = False
|
||||||
legend = u"Adresse IPv4 de la machine"
|
legend = u"Adresse IPv4 de la machine"
|
||||||
hname = "IPv4"
|
hname = "IPv4"
|
||||||
|
category = 'base_tech'
|
||||||
|
|
||||||
def parse_value(self, ip, ldif):
|
def parse_value(self, ip, ldif):
|
||||||
if ip == '<automatique>':
|
if ip == '<automatique>':
|
||||||
|
@ -357,6 +393,7 @@ class mid(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
legend = "Identifiant de machine"
|
legend = "Identifiant de machine"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
def parse_value(self, mid, ldif):
|
def parse_value(self, mid, ldif):
|
||||||
self.value = Mid(mid = int(mid))
|
self.value = Mid(mid = int(mid))
|
||||||
|
@ -374,21 +411,25 @@ class ipsec(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
legend = u'Clef wifi'
|
legend = u'Clef wifi'
|
||||||
|
category = 'wifi'
|
||||||
|
|
||||||
class puissance(Attr):
|
class puissance(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"puissance d'émission pour les bornes wifi"
|
legend = u"puissance d'émission pour les bornes wifi"
|
||||||
|
category = 'wifi'
|
||||||
|
|
||||||
class canal(intAttr):
|
class canal(intAttr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u'Canal d\'émission de la borne'
|
legend = u'Canal d\'émission de la borne'
|
||||||
|
category = 'wifi'
|
||||||
|
|
||||||
class portAttr(Attr):
|
class portAttr(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
|
legend = u'Ouverture de port'
|
||||||
|
category = 'firewall'
|
||||||
|
|
||||||
def parse_value(self, port, ldif):
|
def parse_value(self, port, ldif):
|
||||||
if ":" in port:
|
if ":" in port:
|
||||||
|
@ -435,6 +476,7 @@ class prise(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Prise sur laquelle est branchée la machine"
|
legend = u"Prise sur laquelle est branchée la machine"
|
||||||
|
category = 'base_tech'
|
||||||
|
|
||||||
def parse_value(self, prise, ldif):
|
def parse_value(self, prise, ldif):
|
||||||
### Tu es une Nounou, je te fais confiance
|
### Tu es une Nounou, je te fais confiance
|
||||||
|
@ -444,11 +486,13 @@ class cid(intAttr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Identifiant du club"
|
legend = u"Identifiant du club"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
class responsable(Attr):
|
class responsable(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Responsable du club"
|
legend = u"Responsable du club"
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def get_respo(self):
|
def get_respo(self):
|
||||||
if self.value == None:
|
if self.value == None:
|
||||||
|
@ -467,6 +511,7 @@ class blacklist(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Blackliste"
|
legend = u"Blackliste"
|
||||||
|
category = 'info'
|
||||||
|
|
||||||
def parse_value(self, bl, ldif):
|
def parse_value(self, bl, ldif):
|
||||||
bl_debut, bl_fin, bl_type, bl_comm = bl.split('$')
|
bl_debut, bl_fin, bl_type, bl_comm = bl.split('$')
|
||||||
|
@ -491,24 +536,28 @@ class historique(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Historique de l'objet"
|
legend = u"Historique de l'objet"
|
||||||
|
category = 'info'
|
||||||
|
|
||||||
class info(Attr):
|
class info(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
legend = u"Quelques informations"
|
legend = u"Quelques informations"
|
||||||
|
category = 'info'
|
||||||
can_modify = ["Nounou", "Cableur", "Bureau"]
|
can_modify = ["Nounou", "Cableur", "Bureau"]
|
||||||
|
|
||||||
class homepageAlias(Attr):
|
class homepageAlias(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = u'Un alias pour la page personnelle'
|
legend = u'Un alias pour la page personnelle'
|
||||||
can_modify = ["WebMaster", "Nounou", "Cableur"]
|
can_modify = ["Nounou", "Cableur"]
|
||||||
|
category = 'webpage'
|
||||||
|
|
||||||
class charteMA(Attr):
|
class charteMA(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend= "Signale si l'adhérent a signé la charte de membres actifs"
|
legend= "Signale si l'adhérent a signé la charte de membres actifs"
|
||||||
can_modify = ["Nounou", "Bureau"]
|
can_modify = ["Nounou", "Bureau"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, signed, ldif):
|
def parse_value(self, signed, ldif):
|
||||||
if signed.upper() not in ["TRUE", "FALSE"]:
|
if signed.upper() not in ["TRUE", "FALSE"]:
|
||||||
|
@ -569,16 +618,19 @@ class uidNumber(intAttr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = "L'uid du compte de l'adherent"
|
legend = "L'uid du compte de l'adherent"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
class gidNumber(intAttr):
|
class gidNumber(intAttr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = "Le gid du compte de l'adhérent"
|
legend = "Le gid du compte de l'adhérent"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
class gecos(Attr):
|
class gecos(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
legend = "Le gecos"
|
legend = "Le gecos"
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
def parse_value(self, gecos, ldif):
|
def parse_value(self, gecos, ldif):
|
||||||
a, b, c, d = gecos.split(',')
|
a, b, c, d = gecos.split(',')
|
||||||
|
@ -589,6 +641,7 @@ class mail(Attr):
|
||||||
optional = False
|
optional = False
|
||||||
legend = "Le mail de l'adhérent"
|
legend = "Le mail de l'adhérent"
|
||||||
can_modify = ["self", "Nounou", "Cableur"]
|
can_modify = ["self", "Nounou", "Cableur"]
|
||||||
|
category = 'mail'
|
||||||
|
|
||||||
# XXX - to be implemented
|
# XXX - to be implemented
|
||||||
#def parse_value(self, mail, ldif):
|
#def parse_value(self, mail, ldif):
|
||||||
|
@ -597,20 +650,26 @@ class mail(Attr):
|
||||||
class cn(Attr):
|
class cn(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
class dn(Attr):
|
class dn(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
|
category = 'id'
|
||||||
|
|
||||||
class postalAddress(Attr):
|
class postalAddress(Attr):
|
||||||
singlevalue = False
|
singlevalue = False
|
||||||
optional = True
|
optional = True
|
||||||
can_modify = ["self", "Cableur", "Nounou", "Bureau"]
|
can_modify = ["self", "Cableur", "Nounou", "Bureau"]
|
||||||
|
legend = u"Adresse"
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
class controle(Attr):
|
class controle(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = False
|
optional = False
|
||||||
|
legend = u"Contrôle"
|
||||||
can_modify = ["Tresorier", "Nounou"]
|
can_modify = ["Tresorier", "Nounou"]
|
||||||
|
category = 'perso'
|
||||||
|
|
||||||
def parse_value(self, ctrl, ldif):
|
def parse_value(self, ctrl, ldif):
|
||||||
if ctrl not in [u"", u"c", u"p", u"cp", u"pc"]:
|
if ctrl not in [u"", u"c", u"p", u"cp", u"pc"]:
|
||||||
|
@ -631,6 +690,7 @@ CRANS_ATTRIBUTES= {
|
||||||
'prenom' : prenom,
|
'prenom' : prenom,
|
||||||
'tel' : tel,
|
'tel' : tel,
|
||||||
'paiement' : paiement,
|
'paiement' : paiement,
|
||||||
|
'controle': controle,
|
||||||
'carteEtudiant' : carteEtudiant,
|
'carteEtudiant' : carteEtudiant,
|
||||||
'mailAlias' : mailAlias,
|
'mailAlias' : mailAlias,
|
||||||
'canonicalAlias' : canonicalAlias,
|
'canonicalAlias' : canonicalAlias,
|
||||||
|
|
15
lc_ldap.py
15
lc_ldap.py
|
@ -278,6 +278,19 @@ def new_cransldapobject(conn, dn, mode='ro', ldif = None):
|
||||||
class CransLdapObject(object):
|
class CransLdapObject(object):
|
||||||
"""Classe de base des objets CransLdap.
|
"""Classe de base des objets CransLdap.
|
||||||
Cette classe ne devrait pas être utilisée directement."""
|
Cette classe ne devrait pas être utilisée directement."""
|
||||||
|
|
||||||
|
""" Champs uniques et nécessaires """
|
||||||
|
ufields = []
|
||||||
|
|
||||||
|
""" Champs uniques facultatifs """
|
||||||
|
ofields = []
|
||||||
|
|
||||||
|
""" Champs multivalués facultatifs """
|
||||||
|
mfields = []
|
||||||
|
|
||||||
|
""" Champs obligatoires multivalué """
|
||||||
|
xfields = []
|
||||||
|
|
||||||
def __init__(self, conn, dn, mode='ro', ldif = None):
|
def __init__(self, conn, dn, mode='ro', ldif = None):
|
||||||
'''
|
'''
|
||||||
Créée une instance d'un objet Crans (machine, adhérent,
|
Créée une instance d'un objet Crans (machine, adhérent,
|
||||||
|
@ -533,7 +546,7 @@ class AssociationCrans(proprio):
|
||||||
class adherent(proprio):
|
class adherent(proprio):
|
||||||
u"""Adhérent crans."""
|
u"""Adhérent crans."""
|
||||||
ufields = proprio.ufields + ['aid', 'prenom', 'tel', 'mail', 'mailInvalide']
|
ufields = proprio.ufields + ['aid', 'prenom', 'tel', 'mail', 'mailInvalide']
|
||||||
ofields = proprio.ofields + ['charteMA', 'adherentPayant', 'typeAdhesion',
|
ofields = proprio.ofields + ['charteMA',
|
||||||
'canonicalAlias', 'solde', 'contourneGreylist',
|
'canonicalAlias', 'solde', 'contourneGreylist',
|
||||||
'rewriteMailHeaders', 'derniereConnexion',
|
'rewriteMailHeaders', 'derniereConnexion',
|
||||||
'homepageAlias']
|
'homepageAlias']
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue