Metadata-Version: 1.1
Name: django-netfields
Version: 0.2.1
Summary: Django PostgreSQL netfields implementation
Home-page: https://github.com/jimfunk/django-postgresql-netfields
Author: James Oakley
Author-email: jfunk@funktronics.ca
License: BSD
Description: Django PostgreSQL Netfields
        ===========================
        
        .. image:: https://secure.travis-ci.org/jimfunk/django-postgresql-netfields.png
        
        This project is an attempt at making proper PostgreSQL net related fields for
        Django. In Django pre 1.4 the built in ``IPAddressField`` does not support IPv6
        and uses an inefficient ``HOST()`` cast in all lookups. As of 1.4 you can use
        ``GenericIPAddressField`` for IPv6, but the casting problem remains.
        
        In addition to the basic ``IPAddressField`` replacement a ``CIDR`` and
        a ``MACADDR`` field have been added. This library also provides a manager that
        allows for advanced IP based lookup directly in the ORM.
        
        In Python, the values of these fields are represented as types from the
        netaddr_ module.
        
        .. _netaddr: http://pythonhosted.org/netaddr/
        
        Dependencies
        ------------
        
        Current version of code is targeting Django 1.3-1.4 support, as this relies
        heavily on ORM internals supporting multiple versions is especially tricky. The
        ``netaddr`` module is used for the same reasons.
        
        Getting started
        ---------------
        
        Make sure ``netfields`` is in your ``PYTHONPATH``.
        
        ``InetAddressField`` will store values in PostgreSQL as type ``INET``. In
        Python, the value will be represented as a ``netaddr.IPAddress`` object.
        
         from netfields import InetAddressField, NetManager
        
         class Example(models.Model):
             inet = InetAddressField()
             # ...
        
             objects = NetManager()
        
        ``CidrAddressField`` will store values in PostgreSQL as type ``CIDR``. In
        Python, the value will be represented as a ``netaddr.IPNetwork`` object.
        
         from netfields import CidrAddressField, NetManager
        
         class Example(models.Model):
             inet = CidrAddressField()
             # ...
        
             objects = NetManager()
        
        ``MACAddressField`` will store values in PostgreSQL as type ``MACADDR``. In
        Python, the value will be represented as a ``netaddr.EUI`` object. Note that
        the default text representation of EUI objects is not the same as that of the
        ``netaddr`` module. It is represented in a format that is more commonly used
        in network utilities and by network administrators (``00:11:22:aa:bb:cc``).
        
         from netfields import CidrAddressField, NetManager
        
         class Example(models.Model):
             inet = CidrAddressField()
             # ...
        
        For ``InetAddressField`` and ``CidrAddressField``, ``NetManager`` is required
        for the extra lookups to be available. Lookups for ``INET`` and ``CIDR``
        database types will be handled differently than when running vanilla Django.
        All lookups are case-insensitive and text based lookups are avoided whenever
        possible. In addition to Django's default lookup types the following have been added.
        
        * ``__net_contained``
        * ``__net_contained_or_equal``
        * ``__net_contains``
        * ``__net_contains_or_equals``
        
        These correspond with the operators from
        http://www.postgresql.org/docs/9.1/interactive/functions-net.html
        
        ``netfields`` does not have to be in ``INSTALLED_APPS``.
        
        Related Django bugs
        -------------------
        
        * 11442_ - Postgresql backend casts inet types to text, breaks IP operations and IPv6 lookups.
        * 811_ - IPv6 address field support.
        
        https://docs.djangoproject.com/en/dev/releases/1.4/#extended-ipv6-support is also relevant
        
        .. _11442: http://code.djangoproject.com/ticket/11442
        .. _811: http://code.djangoproject.com/ticket/811
        
        
        Similar projects
        ----------------
        
        https://bitbucket.org/onelson/django-ipyfield tries to solve some of the same
        issues as this library. However, instead of supporting just postgres via the proper
        fields types the ipyfield currently uses a ``VARCHAR(39)`` as a fake unsigned 64 bit
        number in its implementation.
        
        History
        -------
        
        Main repo was originaly kept https://github.com/adamcik/django-postgresql-netfields
        Late April 2013 the project was moved to https://github.com/jimfunk/django-postgresql-netfields
        to pass the torch on to someone who actually uses this code actively :-)
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Utilities
