[global] Passage à tout unicode et quelques corrections mineures.
* Typos * Docstrings unicode * Erreurs unicode * Ajout de _post_delete et _post_create * ?
This commit is contained in:
parent
b2abbef3b4
commit
60ded9f830
7 changed files with 244 additions and 237 deletions
70
lc_ldap.py
70
lc_ldap.py
|
@ -41,12 +41,6 @@ import re
|
|||
|
||||
import ldap
|
||||
|
||||
## import de /usr/scripts/
|
||||
if not "/usr/scripts/" in sys.path:
|
||||
sys.path.append('/usr/scripts/')
|
||||
|
||||
import gestion.config as config
|
||||
|
||||
## import locaux
|
||||
import crans_utils
|
||||
import attributs
|
||||
|
@ -54,6 +48,12 @@ import objets
|
|||
import ldap_locks
|
||||
import variables
|
||||
|
||||
## import de /usr/scripts/
|
||||
if not "/usr/scripts/" in sys.path:
|
||||
sys.path.append('/usr/scripts/')
|
||||
|
||||
import gestion.config as config
|
||||
|
||||
# A priori, ldif_to_uldif et ldif_to_cldif sont obsolètes,
|
||||
# du fait de l'apparition de AttrsDict dans attributs.py
|
||||
def ldif_to_uldif(ldif):
|
||||
|
@ -169,7 +169,8 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
ldap_res = self.search_ext_s(dn, scope, filterstr, sizelimit=sizelimit)
|
||||
ret = []
|
||||
for dn, ldif in ldap_res:
|
||||
ret.append(objets.new_cransldapobject(self, dn, mode, ldif))
|
||||
uldif = ldif_to_uldif(ldif)
|
||||
ret.append(objets.new_cransldapobject(self, dn, mode, uldif))
|
||||
return ret
|
||||
|
||||
def allMachinesAdherents(self, mode='ro'):
|
||||
|
@ -183,15 +184,15 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
for dn, attrs in self.search_s(variables.base_dn, scope=2):
|
||||
# On crée les listes des machines et propriétaires
|
||||
if dn.startswith('mid='): # les machines
|
||||
m = objets.new_cransldapobject(self, dn, mode, ldif = attrs)
|
||||
m = objets.new_cransldapobject(self, dn, mode, uldif=ldif_to_uldif(attrs))
|
||||
parent_dn = dn.split(',', 1)[1]
|
||||
if not machines.has_key(parent_dn):
|
||||
machines[parent_dn] = []
|
||||
machines[parent_dn].append(m)
|
||||
elif (dn.startswith('aid=') or dn.startswith('cid=') or dn == variables.base_dn) and not parent.has_key(dn):
|
||||
parent[dn] = objets.new_cransldapobject(self, dn, mode, ldif = attrs)
|
||||
parent[dn] = objets.new_cransldapobject(self, dn, mode, uldif=ldif_to_uldif(attrs))
|
||||
allmachines = []
|
||||
for dn,mlist in machines.iteritems(): # on associe propriétaires et machines
|
||||
for dn, mlist in machines.iteritems(): # on associe propriétaires et machines
|
||||
parent[dn]._machines = mlist
|
||||
for m in mlist:
|
||||
m._proprio = parent[dn]
|
||||
|
@ -214,7 +215,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
_,adherents = self.allMachinesAdherents(mode)
|
||||
return adherents
|
||||
|
||||
def newMachine(self, parent, realm, ldif, login=None):
|
||||
def newMachine(self, parent, realm, uldif, login=None):
|
||||
"""Crée une nouvelle machine: ``realm`` peut être:
|
||||
fil, fil-v6, wifi, wifi-v6, adm, gratuit, personnel-ens, special
|
||||
--Partiellement implémenté"""
|
||||
|
@ -224,75 +225,76 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
owner = self.search('objectClass=*', dn=parent, scope=0)[0]
|
||||
|
||||
if realm in ["adm", "serveurs", "serveurs-v6", "adm-v6"]:
|
||||
ldif['objectClass'] = ['machineCrans']
|
||||
uldif['objectClass'] = [u'machineCrans']
|
||||
assert isinstance(owner, objets.AssociationCrans)
|
||||
|
||||
elif realm == "bornes":
|
||||
ldif['objectClass'] = ['borneWifi']
|
||||
uldif['objectClass'] = [u'borneWifi']
|
||||
assert isinstance(owner, objets.AssociationCrans)
|
||||
|
||||
elif realm in ["wifi", "wifi-v6"]:
|
||||
ldif['objectClass'] = ['machineWifi']
|
||||
uldif['objectClass'] = [u'machineWifi']
|
||||
assert isinstance(owner, objets.adherent) or isinstance(owner, objets.club)
|
||||
|
||||
elif realm in ["adherents", "fil-v6", "personnel-ens"]:
|
||||
ldif['objectClass'] = ['machineFixe']
|
||||
elif realm in ["adherents", "adherents-v6", "personnel-ens"]:
|
||||
uldif['objectClass'] = [u'machineFixe']
|
||||
assert isinstance(owner, objets.adherent) or isinstance(owner, objets.club)
|
||||
|
||||
else: raise ValueError("Realm inconnu: %r" % realm)
|
||||
else:
|
||||
raise ValueError("Realm inconnu: %r" % realm)
|
||||
|
||||
# On récupère la plage des mids
|
||||
plage = xrange( *(config.rid[realm]))
|
||||
# On récupère le premier id libre dans la plages s'il n'est pas
|
||||
# déjà précisé dans le ldiff
|
||||
rid = ldif.setdefault('rid', [ str(self._find_id('rid', plage)) ])
|
||||
rid = uldif.setdefault('rid', [unicode(self._find_id('rid', plage)) ])
|
||||
|
||||
# La machine peut-elle avoir une ipv4 ?
|
||||
if 'v6' not in realm:
|
||||
ldif['ipHostNumber'] = [ str(crans_utils.ip4_of_rid(int(rid[0]))) ]
|
||||
ldif['ip6HostNumber'] = [ str(crans_utils.ip6_of_mac(ldif['macAddress'][0], int(rid[0]))) ]
|
||||
uldif['ipHostNumber'] = [ unicode(crans_utils.ip4_of_rid(int(rid[0]))) ]
|
||||
uldif['ip6HostNumber'] = [ unicode(crans_utils.ip6_of_mac(uldif['macAddress'][0], int(rid[0]))) ]
|
||||
|
||||
# Mid
|
||||
ldif['mid'] = [ str(self._find_id('mid')) ]
|
||||
uldif['mid'] = [ unicode(self._find_id('mid')) ]
|
||||
|
||||
# Tout doit disparaître !!
|
||||
machine = self._create_entity('mid=%s,%s' % (ldif['mid'][0], parent), ldif)
|
||||
machine.history_add(login, "inscription")
|
||||
machine = self._create_entity('mid=%s,%s' % (uldif['mid'][0], parent), uldif)
|
||||
machine.history_add(login, u"inscription")
|
||||
if machine.may_be(variables.created, self.droits + self._check_parent(machine.dn)):
|
||||
return machine
|
||||
else:
|
||||
raise EnvironmentError("Vous n'avez pas le droit de créer cette machine.")
|
||||
|
||||
def newAdherent(self, ldif):
|
||||
def newAdherent(self, uldif):
|
||||
"""Crée un nouvel adhérent"""
|
||||
aid = ldif.setdefault('aid', [ str(self._find_id('aid')) ])
|
||||
ldif['objectClass'] = ['adherent']
|
||||
adherent = self._create_entity('aid=%s,%s' % (aid[0], variables.base_dn), ldif)
|
||||
aid = uldif.setdefault('aid', [ unicode(self._find_id('aid')) ])
|
||||
uldif['objectClass'] = [u'adherent']
|
||||
adherent = self._create_entity('aid=%s,%s' % (aid[0], variables.base_dn), uldif)
|
||||
if adherent.may_be(variables.created, self.droits):
|
||||
return adherent
|
||||
else:
|
||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||
|
||||
def newClub(self, ldif):
|
||||
def newClub(self, uldif):
|
||||
"""Crée un nouveau club"""
|
||||
cid = ldif.setdefault('cid', [ str(self._find_id('cid')) ])
|
||||
ldif['objectClass'] = ['club']
|
||||
club = self._create_entity('cid=%s,%s' % (cid[0], variables.base_dn), ldif)
|
||||
cid = uldif.setdefault('cid', [ unicode(self._find_id('cid')) ])
|
||||
uldif['objectClass'] = [u'club']
|
||||
club = self._create_entity('cid=%s,%s' % (cid[0], variables.base_dn), uldif)
|
||||
if club.may_be(variables.created, self.droits):
|
||||
return club
|
||||
else:
|
||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||
|
||||
def newFacture(self, ldif):
|
||||
def newFacture(self, uldif):
|
||||
"""Crée une nouvelle facture
|
||||
--Non implémenté !"""
|
||||
raise NotImplementedError()
|
||||
|
||||
def _create_entity(self, dn, ldif):
|
||||
def _create_entity(self, dn, uldif):
|
||||
'''Crée une nouvelle entité ldap avec le dn ``dn`` et les
|
||||
attributs de ``ldif``. Attention, ldif doit contenir des
|
||||
données encodées.'''
|
||||
return objets.new_cransldapobject(self, dn, 'rw', ldif)
|
||||
return objets.new_cransldapobject(self, dn, 'rw', uldif)
|
||||
|
||||
def _find_id(self, attr, plage=None):
|
||||
'''Trouve un id libre. Si une plage est fournie, cherche
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue