î
Ý^Q\ý
  ã               @   sv   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	 ƒ Z Gd d „  d e
 ƒ Z d	 S)
é    )Úunicode_literals)Ú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  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__© úL/var/www/dbchiro/venv/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ì |  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)NÚFeatureÚtypeZ
propertiesÚpkZgeometry)Z_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                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&   <   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__D   s    zDeserializer.__init__N)r'   r(   r)   r.   r   r   r   r   r+   C   s   r+   N)Ú
__future__r   Zdjango.contrib.gis.gdalr   r   Zdjango.core.serializers.baser   Zdjango.core.serializers.jsonr   ZJSONSerializerÚobjectr+   r   r   r   r   Ú<module>   s
   ;