
    Dvg                     l    d dl Z d dlmZmZ d dlmZ d dlmZ  G d de          Z G d d          Z	dS )	    N)CoordTransformSpatialReferenceSerializerDoesNotExist)
Serializerc                   H     e Zd ZdZ fdZd Zd Z fdZd Z fdZ	 xZ
S )r   z<
    Convert a queryset to GeoJSON, http://geojson.org/
    c                 v   t                                                       | j                            dd           | _        | j                            dd           | _        | j                            dd          | _        | j        ,| j        '| 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__s    c/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/serializers/geojson.pyr   zSerializer._init_options   s    ".223CTJJ(,,Z>>$((66	 ,#/#4+???#OT%9#O4;N#OD   	 -,//??    c                     |                                   i | _        | j                            d| j        z             d S )Nzg{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:%d"}}, "features": [)r   _ctsstreamwriter   r   s    r   start_serializationzSerializer.start_serialization   sN    	#y)	
 	
 	
 	
 	
r   c                 :    | j                             d           d S )Nz]})r   r   r   s    r   end_serializationzSerializer.end_serialization"   s    $r   c                     t                                          |           d | _        | j        .|j        j        D ]#}t          |d          r|j        | _         d S "d S d S )N	geom_type)r   start_object	_geometryr
   _metafieldshasattrnamer   objfieldr   s      r   r    zSerializer.start_object%   sy    S!!!&)  5+.. */*D'EE '& r   c                 l   d| j         |j        nt          || j                   | j        d}| j        	d| j        v r2d|d         vr(|j        j                            |          |d         d<   | j        r| j        j        | j        k    r| j        j        | j	        vr@t          | j                  }t          | j        j        |          | j	        | j        j        <   | j                            | j	        | j        j                            t          j        | j        j                  |d<   n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'   datar3   s       r   get_dump_objectzSerializer.get_dump_object/   s.    M1#&&wsDM7R7R-
 
  (DD4H,H,H$|,,,'*y|'C'CC'H'HDt$> 	$~"di// >&di77*4955C5C*C6 6DIdn12 ((4>3F)GHHH#z$.*@AAD#Dr   c                     |j         | j        k    r|                    |          | _        d S t	                                          ||           d S )N)r%   r
   value_from_objectr!   r   handle_fieldr&   s      r   r<   zSerializer.handle_fieldH   sL    :,,,"44S99DNNNGG  e,,,,,r   )__name__
__module____qualname____doc__r   r   r   r    r9   r<   __classcell__)r   s   @r   r   r      s         
P 
P 
P 
P 
P
 
 
           2- - - - - - - - -r   r   c                       e Zd Zd ZdS )Deserializerc                      t          d          )Nz*geojson is a serialization-only serializerr   )r   argskwargss      r   __init__zDeserializer.__init__P   s    $%QRRRr   N)r=   r>   r?   rG    r   r   rC   rC   O   s(        S S S S Sr   rC   )
r5   django.contrib.gis.gdalr   r   django.core.serializers.baser   django.core.serializers.jsonr   JSONSerializerrC   rH   r   r   <module>rM      s     D D D D D D D D ? ? ? ? ? ? E E E E E ED- D- D- D- D- D- D- D-NS S S S S S S S S Sr   