[lc_ldap] On met en place un système de propagation de certaines modifications.

* Quand on modifie un attribut qui devrait en modifier d'autres, on peut
 invoquer check_changes pour voir ce qui devrait être changé, puis
 validate_changes pour rendre ces changements effectifs. Il ne reste plus
 qu'à appeler save pour enregistrer le tout.
 * Correction de petits problèmes sur les locks : quand save réussissait,
 ils n'étaient pas virés.
This commit is contained in:
Pierre-Elliott Bécue 2013-07-04 02:06:13 +02:00
parent 9540bc572c
commit c2968c6b15
5 changed files with 133 additions and 28 deletions

View file

@ -141,7 +141,7 @@ class AttrsDict(dict):
def __getitem__(self, attr):
values = super(AttrsDict, self).__getitem__(attr)
if not isinstance(values, list):
values = [ values ]
values = [values]
output = []
for val in values:
output.append(attrify(val, attr, self._conn, self._parent))
@ -699,11 +699,9 @@ class ip6HostNumber(Attr):
ldap_name = "ip6HostNumber"
def parse_value(self, ip6):
if self.parent != None:
ip = ip6_of_mac(str(self.parent['macAddress'][0]), int(str(self.parent['rid'][0])))
else:
ip = ip6
self.value = netaddr.ip.IPAddress(ip)
if ip6 == '<automatique>':
ip6 = ip6_of_mac(str(self.parent['macAddress'][0]), int(str(self.parent['rid'][0])))
self.value = netaddr.IPAddress(ip6)
def __unicode__(self):
return unicode(self.value)
@ -726,7 +724,7 @@ class mid(Attr):
@crans_attribute
class rid(Attr):
singlevalue = True
optional = False
optional = True
unique = True
legend = u"Identifiant réseau de machine"
category = 'id'