
 X                 @   s  d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z	 d d l
 m Z Gd d   d e j  Z Gd	 d
   d
 e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d S)    )unicode_literals)forms)GEOSExceptionGEOSGeometry)ugettext_lazy   )OpenLayersWidgetc                   s   e  Z d  Z d Z e Z d Z i e d  d 6e d  d 6e d  d 6e d	  d
 6Z   f d d   Z	 d d   Z
   f d d   Z d d   Z   S)GeometryFieldz
    This is the basic form field for a Geometry.  Any textual input that is
    accepted by GEOSGeometry is accepted by this form.  By default,
    this includes WKT, HEXEWKB, WKB (in a buffer), and GeoJSON.
    GEOMETRYzNo geometry value provided.requiredzInvalid geometry value.invalid_geomzInvalid geometry type.invalid_geom_typezXAn error occurred when transforming the geometry to the SRID of the geometry form field.transform_errorc                sZ   | j  d d   |  _ | j  d |  j  |  _ t t |   j |   |  j |  j j d <d  S)Nsrid	geom_type)popr   r   superr	   __init__widgetattrs)selfkwargs)	__class__ M/home/ubuntu/projects/ifolica/build/django/django/contrib/gis/forms/fields.pyr      s    zGeometryField.__init__c             C   s   | |  j  k r d St | t  so y t |  } Wqo t t t f k
 rk t j |  j d d d  Yqo Xn  | j	 s y |  j
 j | _	 Wq t k
 r |  j	 r |  j	 | _	 n  Yq Xn  | S)z<
        Transforms the value to a Geometry object.
        Nr   code)Zempty_values
isinstancer   r   
ValueError	TypeErrorr   ValidationErrorerror_messagesr   r   Zmap_sridAttributeError)r   valuer   r   r   	to_python#   s    $		zGeometryField.to_pythonc                s   t  t |   j |  } | d k r( | St | j  j   |  j k ru |  j d k ru t j |  j d d d  n  |  j	 r |  j	 d k r |  j	 | j	 k r y | j
 |  j	  Wq t k
 r t j |  j d d d  Yq Xn  | S)z
        Validates that the input value can be converted to a Geometry
        object (which is returned).  A ValidationError is raised if
        the value cannot be instantiated as a Geometry.
        Nr
   r   r   r   r   )r   r	   cleanstrr   upperr   r   r    r   	transformr   )r   r"   Zgeom)r   r   r   r%   9   s    .*zGeometryField.cleanc             C   s   y" |  j  |  } |  j  |  } Wn t j k
 r= d SYn X| rn | rn | j | j  | j | d d St |  t |  k Sd S)z: Compare geographic value of data with its initial value. TZ	tolerancegư>N)r#   r   r   r(   r   Zequals_exactbool)r   initialdatar   r   r   has_changedR   s    	zGeometryField.has_changed)__name__
__module____qualname____doc__r   r   r   _Zdefault_error_messagesr   r#   r%   r,   r   r   )r   r   r	   
   s   r	   c               @   s   e  Z d  Z d Z d S)GeometryCollectionFieldZGEOMETRYCOLLECTIONN)r-   r.   r/   r   r   r   r   r   r2   g   s   r2   c               @   s   e  Z d  Z d Z d S)
PointFieldZPOINTN)r-   r.   r/   r   r   r   r   r   r3   k   s   r3   c               @   s   e  Z d  Z d Z d S)MultiPointFieldZ
MULTIPOINTN)r-   r.   r/   r   r   r   r   r   r4   o   s   r4   c               @   s   e  Z d  Z d Z d S)LineStringFieldZ
LINESTRINGN)r-   r.   r/   r   r   r   r   r   r5   s   s   r5   c               @   s   e  Z d  Z d Z d S)MultiLineStringFieldZMULTILINESTRINGN)r-   r.   r/   r   r   r   r   r   r6   w   s   r6   c               @   s   e  Z d  Z d Z d S)PolygonFieldZPOLYGONN)r-   r.   r/   r   r   r   r   r   r7   {   s   r7   c               @   s   e  Z d  Z d Z d S)MultiPolygonFieldZMULTIPOLYGONN)r-   r.   r/   r   r   r   r   r   r8      s   r8   N)
__future__r   Zdjangor   Zdjango.contrib.gis.geosr   r   Zdjango.utils.translationr   r1   Zwidgetsr   ZFieldr	   r2   r3   r4   r5   r6   r7   r8   r   r   r   r   <module>   s   ]