
    DvgK                         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dS )    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateFuncValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   R     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                 V    |                      | j        d         j        j                  S )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    d/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/gis/db/models/aggregates.pyr   zGeoAggregate.output_field   s$    &&t'>q'A'N'STTT    c                     |j                             |             t                      j        ||fd|p|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   sk     	//555uww~
 
 Q!F!Fty!Q!Q
 	
 
 	
r   c                    | j         s| j                            d          pt          | dd          }|                                 }|                                 }|                                 t          g |t          |          R d| j	        d}|| j
        g}|                    |            |j        ||fi |S  | j        ||fi |S )N	toleranceg?SDOAGGRTYPE)r   r   )	is_extentextragetgetattrcopyget_source_expressionspopr   r	   r   filterset_source_expressionsr   )r   r"   r#   r$   r'   cloner   spatial_type_exprs           r   	as_oraclezGeoAggregate.as_oracle    s   ~ 	G
{33Wwt[RV7W7WIIIKKE!%!<!<!>!>""$$$ $ !#!i  ! ! '!.	! ! ! #4T[!A(();<<<5<*FFFFFt{8ZAA=AAAr   Tc                     t                                          |||||          }|                                D ]!}t          |d          s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   r7   zGeoAggregate.resolve_expression1   sr     GG&&uk5)XVV((** 	 	E5+..  L   r   N)NTNFF)__name__
__module____qualname__r   r)   r
   r   r   r4   r7   __classcell__r%   s   @r   r   r      s        HIU U _U	
 	
 	
 	
 	
 	
B B B$ SX	 	 	 	 	 	 	 	 	 	r   r   c                       e Zd Zd ZeZdS )r   N)rC   rD   rE   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                 X     t                      j        |fdt                      i| d S Nr   r   __init__r   r   
expressionr*   r%   s      r   rO   zExtent.__init__F   1    II+--I5IIIIIr   c                 6    |j                             |          S rB   )r   convert_extentr   valuerQ   r#   s       r   convert_valuezExtent.convert_valueI   s    ~,,U333r   rC   rD   rE   r!   r)   rO   rW   rF   rG   s   @r   r   r   B   sV        DIJ J J J J4 4 4 4 4 4 4r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   3Dc                 X     t                      j        |fdt                      i| d S rM   rN   rP   s      r   rO   zExtent3D.__init__Q   rR   r   c                 6    |j                             |          S rB   )r   convert_extent3drU   s       r   rW   zExtent3D.convert_valueT   s    ~..u555r   rX   rG   s   @r   r   r   M   sV        DIJ J J J J6 6 6 6 6 6 6r   r   c                       e Zd Zd ZeZdS )r   N)rC   rD   rE   r!   r   r   rI   r   r   r   r   X   s        D(r   r   c                       e Zd Zd ZeZdS )r   N)rC   rD   rE   r!   r   r   rI   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   rI   r   r   <module>rd      s              4 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
@
@
@- - - - -9 - - -`1 1 1 1 1l 1 1 1
4 4 4 4 4\ 4 4 46 6 6 6 6| 6 6 6) ) ) ) )| ) ) )
' ' ' ' 'L ' ' ' ' 'r   