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:
parent
3dd6b422ca
commit
8da13e60c2
@ -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.')
|
||||
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user