o
    TiS                     @   sh   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ	 d dl
mZ ddg di fZG d	d
 d
ejZdS )    N)GEOSGeometry)GEOSException)	smart_str)gettext_lazy)serializers  c                       sD   e Zd ZdZd ZdZdediZ fddZdd Z	d	d
 Z
  ZS )
PointFieldz
    A field for handling GeoDjango Point fields as a json format.
    Expected input format:
        {
        "latitude": 49.8782482189424,
         "longitude": 24.452545489
        }

    pointinvalidzEnter a valid location.c                    s2   | dd| _| dd | _t j|i | d S )N
str_pointsFsrid)popr   r   super__init__)selfargskwargs	__class__r   [/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/drf_extra_fields/geo_fields.pyr      s   zPointField.__init__c              	   C   s   |t v r	| js	dS t|tr*z|dd}t|}W n ty)   | d Y nw |r[t|t	r[z|
d}|
d}td| d| d	| jd
W S  ttfyZ   | d Y nw | d dS )z;
        Parse json data and return a point object
        N'"r   latitude	longitudezPOINT( ))r   )EMPTY_VALUESrequired
isinstancestrreplacejsonloads
ValueErrorZfaildictgetr   r   r   )r   valuer   r   r   r   r   to_internal_value"   s$   


zPointField.to_internal_valuec                 C   sR   |du r|S t |tr|j|jd}| jr't|d|d< t|d|d< |S )z1
        Transform POINT object to json.
        N)r   r   r   r   )r   r   yxr   r   r   )r   r'   r   r   r   to_representation;   s   
zPointField.to_representation)__name__
__module____qualname____doc__	type_nameZ
type_label_Zdefault_error_messagesr   r(   r+   __classcell__r   r   r   r   r	      s    	r	   )r"   Zdjango.contrib.gis.geosr   Zdjango.contrib.gis.geos.errorr   Zdjango.utils.encodingr   Zdjango.utils.translationr   r1   Zrest_frameworkr   r   Fieldr	   r   r   r   r   <module>   s    