
vÅÏ^–
  ã               @   sc   d  d l  m Z m Z d  d l m Z d  d l m Z Gd d „  d e ƒ Z Gd d „  d ƒ Z d S)	é    )ÚCoordTransformÚSpatialReference)ÚSerializerDoesNotExist)Ú
Serializerc                   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  ƒ  j ƒ  |  j j d d  ƒ |  _ |  j j d d ƒ |  _ |  j d  k	 r… |  j d  k	 r… |  j |  j k r… |  j |  j f • |  _ d  S)NÚgeometry_fieldÚsridiæ  )ÚsuperÚ_init_optionsZjson_kwargsÚpopr   r   Úselected_fields)Úself)Ú	__class__© úH/tmp/pip-build-8lau8j11/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                s_   t  ƒ  j | ƒ d  |  _ |  j d  k r[ x0 | j j D]" } t | d ƒ r5 | j |  _ Pq5 Wd  S)NZ	geom_type)r   Ústart_objectÚ	_geometryr   Ú_metaÚfieldsÚhasattrÚname)r   ÚobjÚfield)r   r   r   r      s    	zSerializer.start_objectc             C   s  d d d |  j  i } |  j d  k s3 d |  j k r` d | d k r` | j j j | ƒ | d d <|  j rú |  j j |  j k rá |  j j |  j k rÄ t |  j ƒ } t	 |  j j
 | ƒ |  j |  j j <|  j j |  j |  j j ƒ t |  j j ƒ | d <n
 d  | d <| S)NÚtypeZFeatureZ
propertiesÚpkZgeometry)Ú_currentr   r   r   Zvalue_to_stringr   r   r   r   r   ÚsrsZ	transformÚevalZgeojson)r   r   Údatar    r   r   r   Úget_dump_object&   s    	"
zSerializer.get_dump_objectc                s>   | j  |  j k r' | j | ƒ |  _ n t ƒ  j | | ƒ d  S)N)r   r   Zvalue_from_objectr   r   Úhandle_field)r   r   r   )r   r   r   r$   :   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__B   s    zDeserializer.__init__N)r%   r&   r'   r,   r   r   r   r   r)   A   s   r)   N)	Zdjango.contrib.gis.gdalr   r   Zdjango.core.serializers.baser   Zdjango.core.serializers.jsonr   ZJSONSerializerr)   r   r   r   r   Ú<module>   s   ;