î
ªÍ X&  ã               @   s•   d  d l  m Z d  d l m Z d  d l m Z m Z d  d l m Z	 e re d  d l m
 Z
 m Z n  Gd d „  d e	 ƒ Z Gd d	 „  d	 e ƒ Z d
 S)é    )Úunicode_literals)ÚHAS_GDAL)ÚSerializationErrorÚSerializerDoesNotExist)Ú
Serializer)ÚCoordTransformÚSpatialReferencec                   sp   e  Z d  Z d Z ‡  f d d †  Z d d „  Z d d „  Z ‡  f d d	 †  Z d
 d „  Z ‡  f d d †  Z	 ‡  S)r   z<
    Convert a queryset to GeoJSON, http://geojson.org/
    c                s–   t  t |  ƒ j ƒ  |  j j d d  ƒ |  _ |  j j d d ƒ |  _ |  j d  k	 r’ |  j d  k	 r’ |  j |  j k r’ t |  j ƒ |  j g |  _ n  d  S)NÚgeometry_fieldÚsridiæ  )	Úsuperr   Ú_init_optionsZjson_kwargsÚpopr	   r
   Úselected_fieldsÚlist)Úself)Ú	__class__© úT/home/ubuntu/projects/ifolica/build/django/django/contrib/gis/serializers/geojson.pyr      s    zSerializer._init_optionsc             C   s.   |  j  ƒ  i  |  _ |  j j d |  j ƒ d  S)Nzg{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:%d"}}, "features": [)r   Ú_ctsÚstreamÚwriter
   )r   r   r   r   Ústart_serialization   s
    
		zSerializer.start_serializationc             C   s   |  j  j d ƒ d  S)Nz]})r   r   )r   r   r   r   Úend_serialization    s    zSerializer.end_serializationc                sk   t  t |  ƒ j | ƒ d  |  _ |  j d  k rg x6 | j j D]% } t | d ƒ r; | j |  _ Pq; q; Wn  d  S)NZ	geom_type)	r   r   Ústart_objectÚ	_geometryr	   Ú_metaÚfieldsÚhasattrÚname)r   ÚobjÚfield)r   r   r   r   #   s    	zSerializer.start_objectc             C   s/  i d d 6|  j  d 6} |  j d  k s5 d |  j k re d | d k re | j j j | ƒ | d d <n  |  j r!|  j j |  j k rt sŸ t d |  j ƒ ‚ n  |  j j |  j	 k rè t
 |  j ƒ } t |  j j | ƒ |  j	 |  j j <n  |  j j |  j	 |  j j ƒ n  t |  j j ƒ | d <n
 d  | d <| S)NZFeatureÚtypeZ
propertiesÚpkzAUnable to convert geometry to SRID %s when GDAL is not installed.Zgeometry)Z_currentr   r   r"   Zvalue_to_stringr   r
   r   r   r   r   r   ÚsrsZ	transformÚevalZgeojson)r   r   Údatar#   r   r   r   Úget_dump_object-   s$     	% 
zSerializer.get_dump_objectc                sD   | j  |  j k r' | j | ƒ |  _ n t t |  ƒ j | | ƒ d  S)N)r   r	   Zvalue_from_objectr   r   r   Úhandle_field)r   r   r    )r   r   r   r'   E   s    zSerializer.handle_field)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r&   r'   r   r   )r   r   r      s   
r   c               @   s   e  Z d  Z d d „  Z d S)ÚDeserializerc             O   s   t  d ƒ ‚ d  S)Nz*geojson is a serialization-only serializer)r   )r   ÚargsÚkwargsr   r   r   Ú__init__M   s    zDeserializer.__init__N)r(   r)   r*   r/   r   r   r   r   r,   L   s   r,   N)Ú
__future__r   Zdjango.contrib.gis.gdalr   Zdjango.core.serializers.baser   r   Zdjango.core.serializers.jsonr   ZJSONSerializerr   r   Úobjectr,   r   r   r   r   Ú<module>   s   ?