[global] On diminue le risque de lock résiduel, et on corrige une faille des fonctions new[A-Z]*
* En cas d'erreur au create ou au save, on supprime les locks malgré tout * Les fonctions new* modifiaient directement le dico qu'on leur passait en argument, on fait désormais une copie de celui-ci, de façon à ce que test.py n'instancie pas toujours le même objet en croyant instancier des objets différents à chaque fois * Cela permet de trouver une typo dans services.py * crans_utils a été un peu corrigé.
This commit is contained in:
parent
e0bce3f7d3
commit
616acdbb7a
6 changed files with 52 additions and 21 deletions
20
lc_ldap.py
20
lc_ldap.py
|
@ -47,6 +47,7 @@ import attributs
|
|||
import objets
|
||||
import ldap_locks
|
||||
import variables
|
||||
import copy
|
||||
import itertools
|
||||
|
||||
## import de /usr/scripts/
|
||||
|
@ -218,10 +219,13 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
_, adherents = self.allMachinesAdherents(mode)
|
||||
return adherents
|
||||
|
||||
def newMachine(self, parent, realm, uldif, login=None):
|
||||
def newMachine(self, parent, realm, mldif, login=None):
|
||||
"""Crée une nouvelle machine: ``realm`` peut être:
|
||||
fil, fil-v6, wifi, wifi-v6, adm, gratuit, personnel-ens, special
|
||||
mldif est un uldif pour la machine
|
||||
--Partiellement implémenté"""
|
||||
# On ne veut pas modifier mldif directement
|
||||
uldif = copy.deepcopy(mldif)
|
||||
if login is None:
|
||||
login = self.current_login
|
||||
#adm, serveurs, bornes, wifi, adherents, gratuit ou personnel-ens"""
|
||||
|
@ -239,7 +243,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
uldif['objectClass'] = [u'machineWifi']
|
||||
assert isinstance(owner, objets.adherent) or isinstance(owner, objets.club)
|
||||
|
||||
elif realm in ["adherents", "adherents-v6", "personnel-ens"]:
|
||||
elif realm in ["adherents", "fil-v6", "personnel-ens"]:
|
||||
uldif['objectClass'] = [u'machineFixe']
|
||||
assert isinstance(owner, objets.adherent) or isinstance(owner, objets.club)
|
||||
|
||||
|
@ -249,7 +253,7 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
# On récupère la plage des mids
|
||||
plage = itertools.chain(*[xrange(a,b+1) for (a,b) in config.rid_primaires[realm]])
|
||||
# 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 ldif
|
||||
rid = uldif.setdefault('rid', [unicode(self._find_id('rid', plage)) ])
|
||||
|
||||
# La machine peut-elle avoir une ipv4 ?
|
||||
|
@ -262,14 +266,14 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
|
||||
# Tout doit disparaître !!
|
||||
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, uldif):
|
||||
def newAdherent(self, aldif):
|
||||
"""Crée un nouvel adhérent"""
|
||||
uldif = copy.deepcopy(aldif)
|
||||
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)
|
||||
|
@ -278,8 +282,9 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
else:
|
||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||
|
||||
def newClub(self, uldif):
|
||||
def newClub(self, cldif):
|
||||
"""Crée un nouveau club"""
|
||||
uldif = copy.deepcopy(cldif)
|
||||
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)
|
||||
|
@ -288,9 +293,10 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
|
|||
else:
|
||||
raise EnvironmentError("Vous n'avez pas le droit de créer cet adhérent.")
|
||||
|
||||
def newFacture(self, uldif):
|
||||
def newFacture(self, fldif):
|
||||
"""Crée une nouvelle facture
|
||||
--Non implémenté !"""
|
||||
uldif = copy.deepcopy(fldif)
|
||||
raise NotImplementedError()
|
||||
|
||||
def _create_entity(self, dn, uldif):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue