o
    ó<âg¸  ã                   @   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__© úY/var/www/html/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