diff options
| author | Justin Bronn <jbronn@gmail.com> | 2008-01-18 16:38:51 +0000 |
|---|---|---|
| committer | Justin Bronn <jbronn@gmail.com> | 2008-01-18 16:38:51 +0000 |
| commit | 8da13e60c2b0df68f41897e1fca21ae370a49318 (patch) | |
| tree | d68af9356ee10ecc596afb42c3cbca817648a2e8 | |
| parent | 3dd6b422ca658eaeddbf499513fb8b0a52b7f41d (diff) | |
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
| -rw-r--r-- | django/contrib/gis/oldforms/__init__.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/django/contrib/gis/oldforms/__init__.py b/django/contrib/gis/oldforms/__init__.py index 0f3f33c78e..94ef9acc1f 100644 --- a/django/contrib/gis/oldforms/__init__.py +++ b/django/contrib/gis/oldforms/__init__.py @@ -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.') + |
