File: psycopg2_types.py

package info (click to toggle)
python-django-netfields 1.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 444 kB
  • sloc: python: 2,067; sh: 7; makefile: 4; sql: 2
file content (53 lines) | stat: -rw-r--r-- 1,374 bytes parent folder | download | duplicates (3)
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)