[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
52
lc_ldap.py
52
lc_ldap.py
|
@ -249,7 +249,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
_,adherents = self.allMachinesAdherents()
|
||||
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:
|
||||
fil, fil-v6, wifi, wifi-v6, adm, gratuit, personnel-ens, special
|
||||
--Partiellement implémenté"""
|
||||
|
@ -257,20 +257,19 @@ 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"]:
|
||||
uldif['objectClass'] = [u'machineCrans']
|
||||
ldif['objectClass'] = ['machineCrans']
|
||||
assert isinstance(owner, AssociationCrans)
|
||||
|
||||
elif realm == "bornes":
|
||||
uldif['objectClass'] = [u'borneWifi']
|
||||
ldif['objectClass'] = ['borneWifi']
|
||||
assert isinstance(owner, AssociationCrans)
|
||||
|
||||
elif realm in ["wifi", "wifi-v6"]:
|
||||
uldif['objectClass'] = [u'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))]
|
||||
ldif['objectClass'] = ['machineWifi']
|
||||
assert isinstance(owner, adherent) or isinstance(owner, club)
|
||||
|
||||
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)
|
||||
|
||||
else: raise ValueError("Realm inconnu: %r" % realm)
|
||||
|
@ -279,47 +278,46 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
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 = 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 ?
|
||||
if 'v6' not in realm:
|
||||
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]))) ]
|
||||
ldif['ipHostNumber'] = [ crans_utils.ip4_of_rid(int(rid[0])) ]
|
||||
ldif['ip6HostNumber'] = [ crans_utils.ip6_of_mac(ldif['macAddress'][0], int(rid[0])) ]
|
||||
|
||||
# Mid
|
||||
uldif['mid'] = [ unicode(self._find_id('mid')) ]
|
||||
ldif['mid'] = [ self._find_id('mid') ]
|
||||
|
||||
# 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
|
||||
machine.history_add(login, u"inscription")
|
||||
machine.history_add(login, "inscription")
|
||||
if machine.may_be(created, self.droits + self._check_parent(machine.dn)):
|
||||
machine.create()
|
||||
return machine
|
||||
else:
|
||||
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"""
|
||||
aid = uldif.setdefault('aid', [ unicode(self._find_id('aid')) ])
|
||||
uldif['objectClass'] = [u'adherent']
|
||||
adherent = self._create_entity('aid=%s,%s' % (aid[0], base_dn), uldif)
|
||||
aid = ldif.setdefault('aid', [ self._find_id('aid') ])
|
||||
ldif['objectClass'] = ['adherent']
|
||||
adherent = self._create_entity('aid=%s,%s' % (aid[0], base_dn), ldif)
|
||||
if adherent.may_be(created, self.droits):
|
||||
adherent.create()
|
||||
return adherent
|
||||
else:
|
||||
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"""
|
||||
cid = uldif.setdefault('cid', [ unicode(self._find_id('cid')) ])
|
||||
uldif['objectClass'] = [u'club']
|
||||
club = self._create_entity('cid=%s,%s' % (cid[0], base_dn), uldif)
|
||||
cid = ldif.setdefault('cid', [ self._find_id('cid') ])
|
||||
ldif['objectClass'] = ['club']
|
||||
club = self._create_entity('cid=%s,%s' % (cid[0], base_dn), ldif)
|
||||
if club.may_be(created, self.droits):
|
||||
club.create()
|
||||
return club
|
||||
else:
|
||||
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
|
||||
--Non implémenté !"""
|
||||
raise NotImplementedError()
|
||||
|
@ -548,9 +546,9 @@ class CransLdapObject(object):
|
|||
###ATTENTION : C'est un kludge pour pouvoir continuer à faire "comme avant",
|
||||
### mais on devrait tout recoder pour utiliser l'historique LDAP"""
|
||||
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
|
||||
self["historique"] = self.get("historique", []) + [new_line]
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue