o
    [h<                     @   sR   d dl Z 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 )	    N)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dd | _| jdd | _| jdd| _| jd ur8| jd ur:| j| jvr<g | j| j| _d S d S d S d S )Ngeometry_fieldid_fieldsridi  )super_init_optionsZjson_kwargspopr   r   r	   selected_fieldsself	__class__ /home/ubuntu/experiments/live_experiments/Pythonexperiments/Otree/venv/lib/python3.10/site-packages/django/contrib/gis/serializers/geojson.pyr      s   


zSerializer._init_optionsc                 C   s   |    i | _| jd d S )Nz+{"type": "FeatureCollection", "features": [)r   _ctsstreamwriter   r   r   r   start_serialization   s   zSerializer.start_serializationc                 C   s   | j d d S )Nz]})r   r   r   r   r   r   end_serialization   s   zSerializer.end_serializationc                    sJ   t  | d | _| jd u r!|jjD ]}t|dr |j| _ d S qd S d S )NZ	geom_type)r
   start_object	_geometryr   _metafieldshasattrnamer   objfieldr   r   r   r   !   s   

zSerializer.start_objectc                 C   s   d| j d u r	|jnt|| j | jd}| jd u sd| jv r.d|d vr.|jj||d d< | jrf| jj| jkr[| jj| j	vrPt
| j}t| jj|| j	| jj< | j| j	| jj  t| jj|d< |S d |d< |S )NZFeature)typeid
propertiespkr$   Zgeometry)r   r%   getattr_currentr   r   Zvalue_to_stringr   r	   r   r   r   srs	transformjsonloadsZgeojson)r   r    datar(   r   r   r   get_dump_object+   s&   
zSerializer.get_dump_objectc                    s.   |j | jkr||| _d S t || d S )N)r   r   Zvalue_from_objectr   r
   handle_fieldr   r   r   r   r.   D   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)Nz*geojson is a serialization-only serializerr   )r   argskwargsr   r   r   __init__L   s   zDeserializer.__init__N)r/   r0   r1   r7   r   r   r   r   r4   K   s    r4   )
r*   Zdjango.contrib.gis.gdalr   r   Zdjango.core.serializers.baser   Zdjango.core.serializers.jsonr   ZJSONSerializerr4   r   r   r   r   <module>   s    C