1
0
mirror of https://github.com/django/django.git synced 2025-07-04 09:49:12 +00:00

gis: Fixed #6357, and added a validator to WKTField.

git-svn-id: http://code.djangoproject.com/svn/django/branches/gis@7026 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Justin Bronn 2008-01-18 16:38:51 +00:00
parent 3dd6b422ca
commit 8da13e60c2

View File

@ -1,14 +1,29 @@
from django.core.validators import ValidationError
from django.oldforms import LargeTextField
from django.contrib.gis.geos import GEOSException, GEOSGeometry
class WKTField(LargeTextField):
"An oldforms LargeTextField for editing WKT text in the admin."
def __init__(self, *args, **kwargs):
super(WKTField, self).__init__(*args, **kwargs)
# Overridding the validator list.
self.validator_list = [self.isValidGeom]
def render(self, data):
# Returns the WKT value for the geometry field. When no such data
# is present, return None to LargeTextField's render.
if not data:
return super(WKTField, self).render(None)
else:
if isinstance(data, GEOSGeometry):
return super(WKTField, self).render(data.wkt)
elif isinstance(data, basestring):
return super(WKTField, self).render(data)
else:
return super(WKTField, self).render(None)
def isValidGeom(self, field_data, all_data):
try:
g = GEOSGeometry(field_data)
except GEOSException:
raise ValidationError('Valid WKT or HEXEWKB is required for Geometry Fields.')