From 4cce15b7944f02efee6b8cd8c0f4a92dd9213a80 Mon Sep 17 00:00:00 2001 From: glondu Date: Sat, 8 Jul 2006 17:47:22 +0200 Subject: [PATCH] Ajout du champ homepageAlias. darcs-hash:20060708154722-68412-7ed279f89235268100aea7ffd6109498d7d2cea1.gz --- gestion/ldap_crans.py | 55 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index e77d8d44..ab826b3b 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -271,7 +271,7 @@ class CransLdap: ['etudes', 'paiement', 'carteEtudiant', 'aid', 'postalAddress', 'historique', 'blacklist', 'droits', 'uidNumber', 'uid', 'info', 'solde', 'controle', 'contourneGreylist', 'rewriteMailHeaders', - 'ablacklist'], \ + 'ablacklist', 'homepageAlias'], \ 'club': \ ['cid', 'responsable', 'paiement', 'historique', 'blacklist', 'mailAlias', 'info', 'controle', 'ablacklist'], \ @@ -1055,7 +1055,8 @@ class BaseClasseCrans(CransLdap): # Formate les entrées de l'historique de la forme champ+diff-diff for champ in ['droits', 'controle', 'paiement', 'carteEtudiant', 'mailAlias', 'hostAlias', 'exempt', 'nvram', - 'portTCPin', 'portTCPout', 'portUDPin', 'portUDPout']: + 'portTCPin', 'portTCPout', 'portUDPin', 'portUDPout', + 'homepageAlias']: if champ in self.modifs: if champ == 'controle': # Ce n'est pas pareil que self._init_data.get('controle', ['']) @@ -1328,6 +1329,54 @@ class BaseProprietaire(BaseClasseCrans): self._set('mailAlias', liste) return liste + def homepageAlias(self, new=None): + """ + Creation ou visualisation des alias de page perso. + Meme systeme d'arguments que pour info. + """ + liste = self._data.get('homepageAlias', [])[:] + if new == None: return liste + + def validate(alias): + alias = alias.lower() + if not sre.match(r"^[a-z0-9](\.?[-a-z0-9]+)*$", alias): + raise ValueError("Alias incorrect : %s" % alias) + if "." not in alias: + alias += ".perso.crans.org" + if alias.endswith(".crans.org") and not alias.endswith(".perso.crans.org"): + raise ValueError("Les alias crans doivent se terminer par .perso.crans.org") + # ...peut-etre faire une verification de domaine ici... + # On convertit en str (il ne devrait plus y avoir de caractere Unicode) + return str(alias) + + if type(new) == list: + # Modif + index = new[0] + new = new[1] + if not new: + # Supression alias + liste.pop(index) + else: + # Modification alias + new = validate(new) + liste[index] = new + elif type(new) == str: + # Alias supplémentaire + if not new: + # On n'ajoute pas d'alias vide + return liste + # Ajout à la liste + new = validate(new) + liste.append(new) + else: + raise TypeError + + # Lock de l'alias (a faire) + # self.lock('homepageAlias', new) + + self._set('homepageAlias', liste) + return liste + def machines(self): """ Retourne les machines (instances) appartenant à la classe """ # Le champ id n'est pas initialisé lorsque le proprio est en cours @@ -1887,7 +1936,7 @@ class Adherent(BaseProprietaire): 'shadowWarning', 'loginShell', 'userPassword', 'uidNumber', 'gidNumber', 'homeDirectory', 'gecos', 'droits', 'mailAlias', 'canonicalAlias', - 'rewriteMailHeaders', 'contourneGreylist' ]: + 'rewriteMailHeaders', 'contourneGreylist', 'homepageAlias' ]: try: self._data.pop(c) except: pass