3
7^
                 @   sJ   d dl mZmZ d dlmZ d dlmZ G dd deZG d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	  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	rZ| jd k	rZ| j| jkrZ| j| jf| _d S )Ngeometry_fieldsridi  )super_init_optionsZjson_kwargspopr   r   selected_fields)self)	__class__ H/tmp/pip-build-8app2_gc/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                sF   t  j| d | _| jd krBx$|jjD ]}t|dr&|j| _P q&W d 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| j d}| jd ks d| jkrBd|d krB|jjj||d d< | jr| jj| jkr| jj| jkrt| j}t	| jj
|| j| jj< | jj| j| jj  t| jj|d< nd |d< |S )NFeature)type
propertiespkr   Z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&   __classcell__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   ;