
    h	                         S r SSKJr  SSKJrJr  SSKJr   " S S\R                  5      r	 " S S\R                  5      r
g	)
zR
This module holds simple classes to convert geospatial values from the
database.
    )Decimal)AreaDistance)modelsc                   H   ^  \ rS rSrSrU 4S jrS rS	S jrS rS r	Sr
U =r$ )
	AreaField   zWrapper for Area values.c                 .   > [         TU ]  5         Xl        g Nsuper__init__	geo_fieldselfr   	__class__s     ]/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/db/models/sql/conversion.pyr   AreaField.__init__       "    c                 F    [        U[        5      (       d  [        S5      eU$ )Nz0AreaField only accepts Area measurement objects.)
isinstancer   
ValueError)r   values     r   get_prep_valueAreaField.get_prep_value   s     %&&OPPr   c                 |    Uc  g UR                   R                  U R                  5      nU(       a  [        X5      $ U$ r   )opsget_area_att_for_fieldr   getattr)r   r   
connectionpreparedarea_atts        r   get_db_prep_valueAreaField.get_db_prep_value   s4    =>>88H+3wu'>>r   c                     Uc  g [        U[        5      (       a  [        U5      nUR                  R	                  U R
                  5      nU(       a  [        S0 XA0D6$ U$ N )r   r   floatr   r   r   r   )r   r   
expressionr!   r#   s        r   from_db_valueAreaField.from_db_value   sR    = eW%%%LE>>88H,4t(x'(?%?r   c                     g)Nr   r(   r   s    r   get_internal_typeAreaField.get_internal_type)   s    r   r   F__name__
__module____qualname____firstlineno____doc__r   r   r$   r+   r/   __static_attributes____classcell__r   s   @r   r   r      s%    #
?	@ r   r   c                   N   ^  \ rS rSrSrU 4S jrU 4S jrS	S jrS rS r	Sr
U =r$ )
DistanceField-   zWrapper for Distance values.c                 .   > [         TU ]  5         Xl        g r   r   r   s     r   r   DistanceField.__init__0   r   r   c                 P   > [        U[        5      (       a  U$ [        TU ]  U5      $ r   )r   r   r   r   )r   r   r   s     r   r   DistanceField.get_prep_value4   s%    eX&&Lw%e,,r   c                     [        U[        5      (       d  U$ UR                  R                  U R                  5      nU(       d  [        S5      e[        X5      $ )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$   DistanceField.get_db_prep_value9   sL    %**L!~~@@PQ  u++r   c                 ~    Uc  g UR                   R                  U R                  5      nU(       a  [        S0 XA0D6$ U$ r'   )r   rD   r   r   )r   r   r*   r!   rE   s        r   r+   DistanceField.from_db_valueC   s:    =!~~@@P4@x0</0KeKr   c                     g)Nr=   r(   r.   s    r   r/   DistanceField.get_internal_typeI   s    r   r1   r2   r3   r;   s   @r   r=   r=   -   s%    "#-
,L r   r=   N)r8   decimalr   django.contrib.gis.measurer   r   	django.dbr   
FloatFieldr   r=   r(   r   r   <module>rO      s:   
  5 !! BF%% r   