diff --git a/attributs.py b/attributs.py index 92231cf..e242d74 100644 --- a/attributs.py +++ b/attributs.py @@ -633,6 +633,15 @@ class ipsec(Attr): legend = u'Clef 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): singlevalue = True optional = True diff --git a/lc_ldap.py b/lc_ldap.py index 48aa451..60e0b1e 100644 --- a/lc_ldap.py +++ b/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]