Django

Code

Show
Ignore:
Timestamp:
01/18/08 10:38:51 (1 year ago)
Author:
jbronn
Message:

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

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/gis/django/contrib/gis/oldforms/__init__.py

    r5795 r7026  
     1from django.core.validators import ValidationError 
    12from django.oldforms import LargeTextField 
     3from django.contrib.gis.geos import GEOSException, GEOSGeometry 
    24 
    35class WKTField(LargeTextField): 
    46    "An oldforms LargeTextField for editing WKT text in the admin." 
    5      
     7    def __init__(self, *args, **kwargs): 
     8        super(WKTField, self).__init__(*args, **kwargs) 
     9        # Overridding the validator list. 
     10        self.validator_list = [self.isValidGeom] 
     11 
    612    def render(self, data): 
    713        # Returns the WKT value for the geometry field.  When no such data 
    814        #  is present, return None to LargeTextField's render. 
    9         if not data: 
     15        if isinstance(data, GEOSGeometry): 
     16            return super(WKTField, self).render(data.wkt) 
     17        elif isinstance(data, basestring): 
     18            return super(WKTField, self).render(data) 
     19        else: 
    1020            return super(WKTField, self).render(None) 
    11         else: 
    12             return super(WKTField, self).render(data.wkt) 
     21 
     22    def isValidGeom(self, field_data, all_data): 
     23        try: 
     24            g = GEOSGeometry(field_data) 
     25        except GEOSException: 
     26            raise ValidationError('Valid WKT or HEXEWKB is required for Geometry Fields.') 
     27         
    1328     
    1429