
    SL,h                         d dl mZmZmZmZ d dlmZmZmZ d dl	m
Z
 g dZ G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d de      Z G d de      Zy)    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateFuncValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   L     e Zd ZdZdZed        Zd fd	Zd Z	 d fd	Z	 xZ
S )	GeoAggregateNFc                 f    | j                  | j                  d   j                  j                        S )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    f/var/www/paragaon_website/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/aggregates.pyr   zGeoAggregate.output_field   s*    &&t'>'>q'A'N'N'S'STT    c                     |j                   j                  |        t        |   ||fd|xs% |j                   j	                  | j
                        i|S )Nfunction)opscheck_expression_supportsuperas_sqlspatial_aggregate_namename)r   compiler
connectionr   extra_context	__class__s        r   r   zGeoAggregate.as_sql   sZ     	//5w~
 Q!F!Ftyy!Q
 	
 	
r   c                    | j                   s| j                  j                  d      xs t        | dd      }| j	                         }| j                         }| j                  r|j                          t        g |t        |      d| j                  d}|g}| j                  r|j                  | j                         |j                  |        |j                  ||fi |S  | j                  ||fi |S )N	toleranceg?SDOAGGRTYPE)r   r   )	is_extentextragetgetattrcopyget_source_expressionsfilterpopr   r	   r   appendset_source_expressionsr   )r   r"   r#   r$   r'   cloner   spatial_type_exprs           r   	as_oraclezGeoAggregate.as_oracle    s    ~~

{3Wwt[RV7WIIIKE!%!<!<!>{{"&&( $ !#!i ! '!..	! #4!4{{"))$++6(();<5<<*FFFt{{8ZA=AAr   c                     t         |   |||||      }|j                         D ]  }t        |d      rt	        d       |S )N	geom_typez6Geospatial aggregates only allowed on geometry fields.)r   resolve_expressionget_source_fieldshasattr
ValueError)	r   queryallow_joinsreuse	summarizefor_savecfieldr%   s	           r   r8   zGeoAggregate.resolve_expression4   sU     G&uk5)XV((* 	E5+. L 	
 r   N)NTNFF)__name__
__module____qualname__r   r)   r
   r   r   r5   r8   __classcell__r%   s   @r   r   r      s=    HIU U	
B* SX	 	r   r   c                       e Zd Zd ZeZy)r   N)rD   rE   rF   r!   r   r    r   r   r   r   @   s    D0r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   2Dc                 :    t        |   |fdt               i| y Nr   r   __init__r   r   
expressionr*   r%   s      r   rP   zExtent.__init__I       I+-I5Ir   c                 8    |j                   j                  |      S rC   )r   convert_extentr   valuerR   r#   s       r   convert_valuezExtent.convert_valueL   s    ~~,,U33r   rD   rE   rF   r!   r)   rP   rX   rG   rH   s   @r   r   r   E   s    DIJ4r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   3Dc                 :    t        |   |fdt               i| y rN   rO   rQ   s      r   rP   zExtent3D.__init__T   rS   r   c                 8    |j                   j                  |      S rC   )r   convert_extent3drV   s       r   rX   zExtent3D.convert_valueW   s    ~~..u55r   rY   rH   s   @r   r   r   P   s    DIJ6r   r   c                       e Zd Zd ZeZy)r   N)rD   rE   rF   r!   r   r   rJ   r   r   r   r   [   s    D(r   r   c                       e Zd Zd ZeZy)r   N)rD   rE   rF   r!   r   r   rJ   r   r   r   r   `   s    D&r   r   N)#django.contrib.gis.db.models.fieldsr   r   r   r   django.db.modelsr   r   r	   django.utils.functionalr
   __all__r   r   r   r   r   r   rJ   r   r   <module>re      sh     4 3 3
@09 0f1l 1
4\ 46| 6)| )
'L 'r   