1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
import psycopg2.extensions
from psycopg2.extras import Inet
class Macaddr(Inet):
"""
Wrap a string for the MACADDR type, like Inet
"""
def getquoted(self):
obj = psycopg2.extensions.adapt(self.addr)
if hasattr(obj, 'prepare'):
obj.prepare(self._conn)
return obj.getquoted() + b"::macaddr"
class Macaddr8(Inet):
"""
Wrap a string for the MACADDR8 type, like Inet
"""
def getquoted(self):
obj = psycopg2.extensions.adapt(self.addr)
if hasattr(obj, 'prepare'):
obj.prepare(self._conn)
return obj.getquoted() + b"::macaddr8"
# Register array types for CIDR and MACADDR (Django already registers INET)
CIDRARRAY_OID = 651
CIDRARRAY = psycopg2.extensions.new_array_type(
(CIDRARRAY_OID,),
'CIDRARRAY',
psycopg2.extensions.UNICODE,
)
psycopg2.extensions.register_type(CIDRARRAY)
MACADDRARRAY_OID = 1040
MACADDRARRAY = psycopg2.extensions.new_array_type(
(MACADDRARRAY_OID,),
'MACADDRARRAY',
psycopg2.extensions.UNICODE,
)
psycopg2.extensions.register_type(MACADDRARRAY)
# select typarray from pg_type where typname = 'macaddr8' -> 775
MACADDRARRAY8_OID = 775
MACADDRARRAY8 = psycopg2.extensions.new_array_type(
(MACADDRARRAY8_OID,),
'MACADDRARRAY8',
psycopg2.extensions.UNICODE,
)
psycopg2.extensions.register_type(MACADDRARRAY8)
|