summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Tamlyn <marc.tamlyn@gmail.com>2014-09-21 08:51:59 +0100
committerMarc Tamlyn <marc.tamlyn@gmail.com>2014-09-22 13:10:03 +0100
commitc6fd1e904cb15da1a627843c79b89b19beabe2a1 (patch)
tree5dce09e61f430c1b24d28ee9fdc99088ac37ec9b
parentc9a53035d61588bc7c76eb38db74b774d64b5c1c (diff)
Fixed Oracle GIS gml() test failure introduced by e910340; refs #18757.
-rw-r--r--django/contrib/gis/db/backends/oracle/operations.py1
-rw-r--r--django/contrib/gis/db/models/query.py4
-rw-r--r--django/contrib/gis/db/models/sql/__init__.py4
-rw-r--r--django/contrib/gis/db/models/sql/conversion.py12
4 files changed, 18 insertions, 3 deletions
diff --git a/django/contrib/gis/db/backends/oracle/operations.py b/django/contrib/gis/db/backends/oracle/operations.py
index 4beb5a1589..aa06e98433 100644
--- a/django/contrib/gis/db/backends/oracle/operations.py
+++ b/django/contrib/gis/db/backends/oracle/operations.py
@@ -148,6 +148,7 @@ class OracleOperations(DatabaseOperations, BaseSpatialOperations):
'PointField', 'GeometryField', 'LineStringField',
'PolygonField', 'MultiPointField', 'MultiLineStringField',
'MultiPolygonField', 'GeometryCollectionField', 'GeomField',
+ 'GMLField',
)
if internal_type in geometry_fields:
converters.append(self.convert_textfield_value)
diff --git a/django/contrib/gis/db/models/query.py b/django/contrib/gis/db/models/query.py
index 198a6288c0..cbc1536b8a 100644
--- a/django/contrib/gis/db/models/query.py
+++ b/django/contrib/gis/db/models/query.py
@@ -3,7 +3,7 @@ from django.db.models.query import QuerySet
from django.contrib.gis.db.models import aggregates
from django.contrib.gis.db.models.fields import get_srid_info, PointField, LineStringField
-from django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery
+from django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery, GMLField
from django.contrib.gis.geometry.backend import Geometry
from django.contrib.gis.measure import Area, Distance
@@ -175,6 +175,8 @@ class GeoQuerySet(QuerySet):
if backend.postgis:
s['procedure_fmt'] = '%(version)s,%(geo_col)s,%(precision)s'
s['procedure_args'] = {'precision': precision, 'version': version}
+ if backend.oracle:
+ s['select_field'] = GMLField()
return self._spatial_attribute('gml', s, **kwargs)
diff --git a/django/contrib/gis/db/models/sql/__init__.py b/django/contrib/gis/db/models/sql/__init__.py
index cde4c2d5e6..fc965c5c67 100644
--- a/django/contrib/gis/db/models/sql/__init__.py
+++ b/django/contrib/gis/db/models/sql/__init__.py
@@ -1,6 +1,6 @@
-from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField
+from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField, GMLField
from django.contrib.gis.db.models.sql.query import GeoQuery
__all__ = [
- 'AreaField', 'DistanceField', 'GeomField', 'GeoQuery',
+ 'AreaField', 'DistanceField', 'GeomField', 'GMLField', 'GeoQuery',
]
diff --git a/django/contrib/gis/db/models/sql/conversion.py b/django/contrib/gis/db/models/sql/conversion.py
index 2908828b80..98112b3285 100644
--- a/django/contrib/gis/db/models/sql/conversion.py
+++ b/django/contrib/gis/db/models/sql/conversion.py
@@ -51,3 +51,15 @@ class GeomField(BaseField):
def get_internal_type(self):
return 'GeometryField'
+
+
+class GMLField(BaseField):
+ """
+ Wrapper for GML to be used by Oracle to ensure Database.LOB conversion.
+ """
+
+ def get_internal_type(self):
+ return 'GMLField'
+
+ def from_db_value(self, value, connection):
+ return value