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_optionsjson_kwargspopr   r   r	   selected_fieldsself	__class__ h/var/www/html/optinet_system/venv/lib/python3.10/site-packages/django/contrib/gis/serializers/geojson.pyr      s   


zSerializer._init_optionsc                 C   s$   |    i | _| 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 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 )N	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 )NFeature)typeid
propertiespkr'   geometry)r   r(   getattr_currentr   r   value_to_stringr   r	   r   r   r   srs	transformjsonloads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   value_from_objectr   r
   handle_fieldr!   r   r   r   r5   H   s   zSerializer.handle_field)__name__
__module____qualname____doc__r   r   r   r   r3   r5   __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__P   s   zDeserializer.__init__N)r6   r7   r8   r>   r   r   r   r   r;   O   s    r;   )
r/   django.contrib.gis.gdalr   r   django.core.serializers.baser   django.core.serializers.jsonr   JSONSerializerr;   r   r   r   r   <module>   s    G