source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/gluon/packages/dal/pydal/representers/postgre.py

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 1.6 KB
Line 
1from ..adapters.postgres import Postgre, PostgreNew
2from .base import SQLRepresenter, JSONRepresenter
3from . import representers, before_type, for_type
4from ..helpers.serializers import serializers
5
6
7@representers.register_for(Postgre)
8class PostgreRepresenter(SQLRepresenter, JSONRepresenter):
9    def _make_geoextra(self, field_type):
10        srid = 4326
11        geotype, params = field_type[:-1].split("(")
12        params = params.split(",")
13        if len(params) >= 2:
14            schema, srid = params[:2]
15        return {"srid": srid}
16
17    @before_type("geometry")
18    def geometry_extras(self, field_type):
19        return self._make_geoextra(field_type)
20
21    @for_type("geometry", adapt=False)
22    def _geometry(self, value, srid):
23        # If the value starts with a zero, treat as a WKB string
24        # and pass back flagged as hex data as is. Otherwise treat
25        # the value as WKT and pass it through the converter.
26        if value[0] == "0":
27            return "E'%s'" % value
28        else:
29            return "ST_GeomFromText('%s',%s)" % (value, srid)
30
31    @before_type("geography")
32    def geography_extras(self, field_type):
33        return self._make_geoextra(field_type)
34
35    @for_type("geography", adapt=False)
36    def _geography(self, value, srid):
37        return "ST_GeogFromText('SRID=%s;%s')" % (srid, value)
38
39    @for_type("jsonb", encode=True)
40    def _jsonb(self, value):
41        return serializers.json(value)
42
43
44@representers.register_for(PostgreNew)
45class PostgreArraysRepresenter(PostgreRepresenter):
46    def _listify_elements(self, elements):
47        return "{" + ",".join(str(el) for el in elements) + "}"
Note: See TracBrowser for help on using the repository browser.