
    Dvg	                     ~    d Z ddlmZ ddlmZmZ ddlmZ  G d dej                  Z	 G d dej                  Z
d	S )
zR
This module holds simple classes to convert geospatial values from the
database.
    )Decimal)AreaDistance)modelsc                   <     e Zd ZdZ fdZd ZddZd Zd Z xZ	S )		AreaFieldzWrapper for Area values.c                 V    t                                                       || _        d S Nsuper__init__	geo_fieldselfr   	__class__s     h/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/db/models/sql/conversion.pyr   zAreaField.__init__   $    "    c                 N    t          |t                    st          d          |S )Nz0AreaField only accepts Area measurement objects.)
isinstancer   
ValueError)r   values     r   get_prep_valuezAreaField.get_prep_value   s)    %&& 	QOPPPr   Fc                 p    |d S |j                             | j                  }|rt          ||          n|S r
   )opsget_area_att_for_fieldr   getattr)r   r   
connectionpreparedarea_atts        r   get_db_prep_valuezAreaField.get_db_prep_value   s=    =F>88HH+3>wuh'''>r   c                     |d S t          |t                    rt          |          }|j                            | j                  }|rt          di ||in|S N )r   r   floatr   r   r   r   )r   r   
expressionr   r    s        r   from_db_valuezAreaField.from_db_value   se    =F eW%% 	!%LLE>88HH,4?t((x'(((%?r   c                     dS )Nr   r$   r   s    r   get_internal_typezAreaField.get_internal_type)   s    {r   F
__name__
__module____qualname____doc__r   r   r!   r'   r*   __classcell__r   s   @r   r   r      s        # # # # #  
? ? ? ?	@ 	@ 	@      r   r   c                   @     e Zd ZdZ fdZ fdZddZd Zd Z xZ	S )	DistanceFieldzWrapper for Distance values.c                 V    t                                                       || _        d S r
   r   r   s     r   r   zDistanceField.__init__0   r   r   c                 t    t          |t                    r|S t                                          |          S r
   )r   r   r   r   )r   r   r   s     r   r   zDistanceField.get_prep_value4   s2    eX&& 	Lww%%e,,,r   Fc                     t          |t                    s|S |j                            | j                  }|st          d          t          ||          S )Nz?Distance measure is supplied, but units are unknown for result.)r   r   r   get_distance_att_for_fieldr   r   r   )r   r   r   r   distance_atts        r   r!   zDistanceField.get_db_prep_value9   s_    %** 	L!~@@PP 	Q   ul+++r   c                 l    |d S |j                             | j                  }|rt          di ||in|S r#   )r   r8   r   r   )r   r   r&   r   r9   s        r   r'   zDistanceField.from_db_valueC   sF    =F!~@@PP4@Kx00</000eKr   c                     dS )Nr4   r$   r)   s    r   r*   zDistanceField.get_internal_typeI   s    r   r+   r,   r2   s   @r   r4   r4   -   s        ""# # # # #- - - - -
, , , ,L L L      r   r4   N)r0   decimalr   django.contrib.gis.measurer   r   	django.dbr   
FloatFieldr   r4   r$   r   r   <module>r@      s    
       5 5 5 5 5 5 5 5          !   B    F%     r   