
    h                     ^    S SK r S SKJrJr  S SKJr  S SKJr   " S S\5      r " S S5      r	g)	    N)CoordTransformSpatialReferenceSerializerDoesNotExist)
Serializerc                   V   ^  \ rS rSrSrU 4S jrS rS rU 4S jrS r	U 4S jr
S	rU =r$ )
r      z4
Convert a queryset to GeoJSON, http://geojson.org/
c                   > [         TU ]  5         U R                  R                  SS 5      U l        U R                  R                  SS 5      U l        U R                  R                  SS5      U l        U R                  bI  U R                  b;  U R                  U R                  ;  a   / U R                  QU R                  PU l        g g g g )Ngeometry_fieldid_fieldsridi  )super_init_optionsjson_kwargspopr   r   r   selected_fields)self	__class__s    X/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/serializers/geojson.pyr   Serializer._init_options   s    "..223CTJ((,,Z>$$((6	  ,##/##4+?+??#OT%9%9#O4;N;N#OD  @ 0 -    c                     U R                  5         0 U l        U R                  R                  SU R                  -  5        g )Nzg{"type": "FeatureCollection", "crs": {"type": "name", "properties": {"name": "EPSG:%d"}}, "features": [)r   _ctsstreamwriter   r   s    r   start_serializationSerializer.start_serialization   s8    	#yy)	
r   c                 :    U R                   R                  S5        g )Nz]})r   r   r   s    r   end_serializationSerializer.end_serialization"   s    $r   c                    > [         TU ]  U5        S U l        U R                  cB  UR                  R
                   H'  n[        US5      (       d  M  UR                  U l          g    g g )N	geom_type)r   start_object	_geometryr   _metafieldshasattrnamer   objfieldr   s      r   r$   Serializer.start_object%   sX    S!&))5+..*/**D' * 'r   c                 `   SU R                   c  UR                  O[        XR                   5      U R                  S.nU R                  b  SU R                  ;   a4  SUS   ;  a+  UR
                  R                  R                  U5      US   S'   U R                  (       Ga	  U R                  R                  U R                  :w  a  U R                  R                  U R                  ;  aV  [        U R                  5      n[        U R                  R                  U5      U R                  U R                  R                  '   U R                  R                  U R                  U R                  R                     5        [        R                  " U R                  R                   5      US'   U$ S US'   U$ )NFeature)typeid
propertiespkr2   geometry)r   r3   getattr_currentr   r&   value_to_stringr%   r   r   r   r   srs	transformjsonloadsgeojson)r   r+   datar8   s       r   get_dump_objectSerializer.get_dump_object/   sE    MM1#&&wsMM7R--
   (DD4H4H,H$|,,'*yy||'C'CC'HDt$>>>~~""dii/ >>&&dii7*4995C5C**C6DIIdnn112 ((4>>3F3F)GH#zz$..*@*@AD   $Dr   c                    > UR                   U R                  :X  a  UR                  U5      U l        g [        TU ]  X5        g )N)r)   r   value_from_objectr%   r   handle_fieldr*   s      r   rB   Serializer.handle_fieldH   s4    ::,,,"44S9DNG ,r   )r   r%   r   r   r   r   )__name__
__module____qualname____firstlineno____doc__r   r   r    r$   r>   rB   __static_attributes____classcell__)r   s   @r   r   r      s,    
P
 2- -r   r   c                       \ rS rSrS rSrg)DeserializerO   c                     [        S5      e)Nz*geojson is a serialization-only serializerr   )r   argskwargss      r   __init__Deserializer.__init__P   s    $%QRRr    N)rD   rE   rF   rG   rQ   rI   rS   r   r   rL   rL   O   s    Sr   rL   )
r:   django.contrib.gis.gdalr   r   django.core.serializers.baser   django.core.serializers.jsonr   JSONSerializerrL   rS   r   r   <module>rX      s,     D ? ED- D-NS Sr   