diff --git a/attributs.py b/attributs.py index f2846eb..8cafe53 100644 --- a/attributs.py +++ b/attributs.py @@ -267,19 +267,25 @@ class solde(Attr): def parse_value(self, solde, ldif): # on évite les dépassements - assert 0. >= float(solde) and float(solde) <= 1024. + if float(solde) >= config.impression.decouvert and float(solde) <= 1024.: + raise ValueError("Solde invalide: %s" % solde) self.value = solde -class host(Attr): +class dnsAttr(Attr): + def parse_value(self, dns, ldif): + dns = dns.lower() + name, net = dns.split('.', 1) + if (net not in ['crans.org', 'wifi.crans.org'] or + not re.match('[a-z][-_a-z0-9]+', name)): + raise ValueError("Nom d'hote invalide '%s'" % dns) + self.value = dns + + +class host(dnsAttr): singlevalue = True optional = False hname = legend = u"Nom d'hôte" - def parse_value(self, dns, ldif): - dns = dns.lower() - assert dns.endswith('.crans.org') - assert re.match('[a-z][-_a-z0-9]+', dns) - self.value = dns class macAddress(Attr): singlevalue = True @@ -293,6 +299,7 @@ class macAddress(Attr): def __unicode__(self): return unicode(self.value) + class ipHostNumber(Attr): singlevalue = True optional = False @@ -307,6 +314,7 @@ class ipHostNumber(Attr): def __unicode__(self): return unicode(self.value) + class mid(Attr): singlevalue = True optional = False @@ -318,16 +326,12 @@ class mid(Attr): def __unicode__(self): return unicode(int(self.value)) -class hostAlias(Attr): + +class hostAlias(dnsAttr): singlevalue = False optional = True legend = u'Alias de nom de machine' - def parse_value(self, dns, ldif): - dns = dns.lower() - assert dns.endswith('.crans.org') - assert re.match('[a-z][-_a-z0-9]+', dns) - self.value = dns class ipsec(Attr): singlevalue = False