1 | from ..adapters.mssql import MSSQL |
---|
2 | from .base import SQLRepresenter, JSONRepresenter |
---|
3 | from . import representers, before_type, for_type |
---|
4 | |
---|
5 | |
---|
6 | @representers.register_for(MSSQL) |
---|
7 | class MSSQLRepresenter(SQLRepresenter, JSONRepresenter): |
---|
8 | def _make_geoextra(self, field_type, srid): |
---|
9 | geotype, params = field_type[:-1].split("(") |
---|
10 | if params: |
---|
11 | srid = params |
---|
12 | return {"srid": srid} |
---|
13 | |
---|
14 | @before_type("geometry") |
---|
15 | def geometry_extras(self, field_type): |
---|
16 | return self._make_geoextra(field_type, 0) |
---|
17 | |
---|
18 | @for_type("geometry", adapt=False) |
---|
19 | def _geometry(self, value, srid): |
---|
20 | return "geometry::STGeomFromText('%s',%s)" % (value, srid) |
---|
21 | |
---|
22 | @before_type("geography") |
---|
23 | def geography_extras(self, field_type): |
---|
24 | return self._make_geoextra(field_type, 4326) |
---|
25 | |
---|
26 | @for_type("geography", adapt=False) |
---|
27 | def _geography(self, value, srid): |
---|
28 | return "geography::STGeomFromText('%s',%s)" % (srid, value) |
---|