diff --git a/configdb/db/validation.py b/configdb/db/validation.py index 9d70bc361d25d3d657ed53b92c0999b91e56b70e..62f8027b12fca00fcc48546256d3f30d59cecd65 100644 --- a/configdb/db/validation.py +++ b/configdb/db/validation.py @@ -1,4 +1,5 @@ import formencode +import ipaddr from formencode import validators Invalid = formencode.Invalid @@ -16,6 +17,14 @@ class RelationValidator(formencode.FancyValidator): return value raise Invalid('relation not a list of strings', value, state) +class IP6Address(formencode.FancyValidator): + def _to_python(self, addr, state): + try: + ipaddr.IPv6Network( address=addr ) + return addr + except ipaddr.AddressValueError, e: + raise Invalid('Not a well formed IPv6 address', addr, state) + _validator_map = { 'int': validators.Int(), @@ -28,9 +37,12 @@ _validator_map = { 'ip': validators.IPAddress(), 'cidr': validators.CIDR(), 'relation': RelationValidator(), + 'ip6': IP6Address(), } + + class ValidatorMixin(object): """Mixin class for entity validation.""" diff --git a/setup.py b/setup.py old mode 100644 new mode 100755 index 389301ccab1377949aafc0a430c9c0b2cb2cb787..e750c3f5665d2e9008605f65b581b1b4374da064 --- a/setup.py +++ b/setup.py @@ -4,13 +4,13 @@ from setuptools import setup, find_packages setup( name='configdb', - version='0.2.1', + version='0.2.2', description='database framework for configuration info', author='ale', author_email='ale@incal.net', url='http://git.autistici.org/p/configdb', install_requires=['argparse', 'Flask', 'formencode', 'inflect', - 'SQLAlchemy>0.7', 'python-dateutil'], + 'SQLAlchemy>0.7', 'python-dateutil', 'ipaddr'], setup_requires=[], zip_safe=True, packages=find_packages(), @@ -21,4 +21,3 @@ setup( ], }, ) -