[lc_ldap] Changement de protocole dans la création des objets
* _create_entity a été changée pour récupérer des dicos de valeurs encodées, on adapte les méthodes new* en virant les uldifs, et en rendant l'historique non unicode. * Ipsec est facultatif, donc on le crée après avoir instancié la machine, que l'on souhaite instancier le plus tôt possible, et on en laisse la gestion à attributs, pour le parsage etc
This commit is contained in:
parent
3b09c98c5b
commit
b5a6062c44
2 changed files with 34 additions and 27 deletions
|
@ -633,6 +633,15 @@ class ipsec(Attr):
|
||||||
legend = u'Clef wifi'
|
legend = u'Clef wifi'
|
||||||
category = 'wifi'
|
category = 'wifi'
|
||||||
|
|
||||||
|
def parse_value(self, val):
|
||||||
|
val = str(val)
|
||||||
|
if len(val) == 10:
|
||||||
|
self.value = val
|
||||||
|
else:
|
||||||
|
val = 'auto'
|
||||||
|
if val == "auto":
|
||||||
|
selv.value = ''.join( random.choice(filter(lambda x: x != 'l' and x != 'o', string.lowercase) + filter(lambda x: x != '1' and x != '0', string.digits)) for i in range(10))
|
||||||
|
|
||||||
class puissance(Attr):
|
class puissance(Attr):
|
||||||
singlevalue = True
|
singlevalue = True
|
||||||
optional = True
|
optional = True
|
||||||
|
|
52
lc_ldap.py
52
lc_ldap.py
|
@ -249,7 +249,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
||||||
_,adherents = self.allMachinesAdherents()
|
_,adherents = self.allMachinesAdherents()
|
||||||
return adherents
|
return adherents
|
||||||
|
|
||||||
def newMachine(self, parent, realm, uldif, login=None):
|
def newMachine(self, parent, realm, ldif, login=None):
|
||||||
"""Crée une nouvelle machine: ``realm`` peut être:
|
"""Crée une nouvelle machine: ``realm`` peut être:
|
||||||
fil, fil-v6, wifi, wifi-v6, adm, gratuit, personnel-ens, special
|
fil, fil-v6, wifi, wifi-v6, adm, gratuit, personnel-ens, special
|
||||||
--Partiellement implémenté"""
|
--Partiellement implémenté"""
|
||||||
|
@ -257,20 +257,19 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
||||||
owner = self.search('objectClass=*', dn=parent, scope=0)[0]
|
owner = self.search('objectClass=*', dn=parent, scope=0)[0]
|
||||||
|
|
||||||
if realm in ["adm", "serveurs", "serveurs-v6", "adm-v6"]:
|
if realm in ["adm", "serveurs", "serveurs-v6", "adm-v6"]:
|
||||||
uldif['objectClass'] = [u'machineCrans']
|
ldif['objectClass'] = ['machineCrans']
|
||||||
assert isinstance(owner, AssociationCrans)
|
assert isinstance(owner, AssociationCrans)
|
||||||
|
|
||||||
elif realm == "bornes":
|
elif realm == "bornes":
|
||||||
uldif['objectClass'] = [u'borneWifi']
|
ldif['objectClass'] = ['borneWifi']
|
||||||
assert isinstance(owner, AssociationCrans)
|
assert isinstance(owner, AssociationCrans)
|
||||||
|
|
||||||
elif realm in ["wifi", "wifi-v6"]:
|
elif realm in ["wifi", "wifi-v6"]:
|
||||||
uldif['objectClass'] = [u'machineWifi']
|
ldif['objectClass'] = ['machineWifi']
|
||||||
uldif['ipsec'] = [u''.join( random.choice(filter(lambda x: x != 'l' and x != 'o', string.lowercase) + filter(lambda x: x != '1' and x != '0', string.digits)) for i in range(10))]
|
|
||||||
assert isinstance(owner, adherent) or isinstance(owner, club)
|
assert isinstance(owner, adherent) or isinstance(owner, club)
|
||||||
|
|
||||||
elif realm in ["adherents", "fil-adherents", "fil-v6", "personnel-ens"]:
|
elif realm in ["adherents", "fil-adherents", "fil-v6", "personnel-ens"]:
|
||||||
uldif['objectClass'] = [u'machineFixe']
|
ldif['objectClass'] = ['machineFixe']
|
||||||
assert isinstance(owner, adherent) or isinstance(owner, club)
|
assert isinstance(owner, adherent) or isinstance(owner, club)
|
||||||
|
|
||||||
else: raise ValueError("Realm inconnu: %r" % realm)
|
else: raise ValueError("Realm inconnu: %r" % realm)
|
||||||
|
@ -279,47 +278,46 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
||||||
plage = xrange( *(config.rid[realm]))
|
plage = xrange( *(config.rid[realm]))
|
||||||
# On récupère le premier id libre dans la plages s'il n'est pas
|
# On récupère le premier id libre dans la plages s'il n'est pas
|
||||||
# déjà précisé dans le ldiff
|
# déjà précisé dans le ldiff
|
||||||
rid = uldif.setdefault('rid', [ unicode(self._find_id('rid', plage)) ])
|
rid = ldif.setdefault('rid', [ self._find_id('rid', plage) ])
|
||||||
|
|
||||||
# La machine peut-elle avoir une ipv4 ?
|
# La machine peut-elle avoir une ipv4 ?
|
||||||
if 'v6' not in realm:
|
if 'v6' not in realm:
|
||||||
uldif['ipHostNumber'] = [ unicode(crans_utils.ip4_of_rid(int(rid[0]))) ]
|
ldif['ipHostNumber'] = [ crans_utils.ip4_of_rid(int(rid[0])) ]
|
||||||
uldif['ip6HostNumber'] = [ unicode(crans_utils.ip6_of_mac(uldif['macAddress'][0], int(rid[0]))) ]
|
ldif['ip6HostNumber'] = [ crans_utils.ip6_of_mac(ldif['macAddress'][0], int(rid[0])) ]
|
||||||
|
|
||||||
# Mid
|
# Mid
|
||||||
uldif['mid'] = [ unicode(self._find_id('mid')) ]
|
ldif['mid'] = [ self._find_id('mid') ]
|
||||||
|
|
||||||
# Tout doit disparaître !!
|
# Tout doit disparaître !!
|
||||||
machine = self._create_entity('mid=%s,%s' % (uldif['mid'][0], parent), uldif)
|
machine = self._create_entity('mid=%s,%s' % (ldif['mid'][0], parent), ldif)
|
||||||
login = login or current_user
|
login = login or current_user
|
||||||
machine.history_add(login, u"inscription")
|
machine.history_add(login, "inscription")
|
||||||
if machine.may_be(created, self.droits + self._check_parent(machine.dn)):
|
if machine.may_be(created, self.droits + self._check_parent(machine.dn)):
|
||||||
machine.create()
|
return machine
|
||||||
else:
|
else:
|
||||||
raise EnvironmentError("Vous n'avez pas le droit de créer cette machine.")
|
raise EnvironmentError("Vous n'avez pas le droit de créer cette machine.")
|
||||||
return machine
|
|
||||||
|
|
||||||
def newAdherent(self, uldif):
|
def newAdherent(self, ldif):
|
||||||
"""Crée un nouvel adhérent"""
|
"""Crée un nouvel adhérent"""
|
||||||
aid = uldif.setdefault('aid', [ unicode(self._find_id('aid')) ])
|
aid = ldif.setdefault('aid', [ self._find_id('aid') ])
|
||||||
uldif['objectClass'] = [u'adherent']
|
ldif['objectClass'] = ['adherent']
|
||||||
adherent = self._create_entity('aid=%s,%s' % (aid[0], base_dn), uldif)
|
adherent = self._create_entity('aid=%s,%s' % (aid[0], base_dn), ldif)
|
||||||
if adherent.may_be(created, self.droits):
|
if adherent.may_be(created, self.droits):
|
||||||
adherent.create()
|
return adherent
|
||||||
else:
|
else:
|
||||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||||
|
|
||||||
def newClub(self, uldif):
|
def newClub(self, ldif):
|
||||||
"""Crée un nouveau club"""
|
"""Crée un nouveau club"""
|
||||||
cid = uldif.setdefault('cid', [ unicode(self._find_id('cid')) ])
|
cid = ldif.setdefault('cid', [ self._find_id('cid') ])
|
||||||
uldif['objectClass'] = [u'club']
|
ldif['objectClass'] = ['club']
|
||||||
club = self._create_entity('cid=%s,%s' % (cid[0], base_dn), uldif)
|
club = self._create_entity('cid=%s,%s' % (cid[0], base_dn), ldif)
|
||||||
if club.may_be(created, self.droits):
|
if club.may_be(created, self.droits):
|
||||||
club.create()
|
return club
|
||||||
else:
|
else:
|
||||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||||
|
|
||||||
def newFacture(self, uldif):
|
def newFacture(self, ldif):
|
||||||
"""Crée une nouvelle facture
|
"""Crée une nouvelle facture
|
||||||
--Non implémenté !"""
|
--Non implémenté !"""
|
||||||
raise NotImplementedError()
|
raise NotImplementedError()
|
||||||
|
@ -548,9 +546,9 @@ class CransLdapObject(object):
|
||||||
###ATTENTION : C'est un kludge pour pouvoir continuer à faire "comme avant",
|
###ATTENTION : C'est un kludge pour pouvoir continuer à faire "comme avant",
|
||||||
### mais on devrait tout recoder pour utiliser l'historique LDAP"""
|
### mais on devrait tout recoder pour utiliser l'historique LDAP"""
|
||||||
assert isinstance(login, str) or isinstance(login, unicode)
|
assert isinstance(login, str) or isinstance(login, unicode)
|
||||||
assert isinstance(chain, unicode)
|
assert isinstance(chain, str)
|
||||||
|
|
||||||
new_line = u"%s, %s : %s" % (time.strftime("%d/%m/%Y %H:%M"), login, chain)
|
new_line = "%s, %s : %s" % (time.strftime("%d/%m/%Y %H:%M"), login, chain)
|
||||||
# Attention, le __setitem__ est surchargé, mais pas .append sur l'historique
|
# Attention, le __setitem__ est surchargé, mais pas .append sur l'historique
|
||||||
self["historique"] = self.get("historique", []) + [new_line]
|
self["historique"] = self.get("historique", []) + [new_line]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue