
    gK                         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    /var/www/python.vincentserveurtest.ovh/public_html/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                          t        g |t        |      d| j                  d}|| j                  g}|j                  |        |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    ~~

{3Wwt[RV7WIIIKE!%!<!<!>""$ $ !#!i ! '!..	! #4T[[!A(();<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   r7   zGeoAggregate.resolve_expression1   sP     G&uk5)X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	
B$ SX	 	r   r   c                       e Zd Zd ZeZy)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                 :    t        |   |fdt               i| y Nr   r   __init__r   r   
expressionr*   r%   s      r   rO   zExtent.__init__F       I+-I5Ir   c                 8    |j                   j                  |      S rB   )r   convert_extentr   valuerQ   r#   s       r   convert_valuezExtent.convert_valueI   s    ~~,,U33r   rC   rD   rE   r!   r)   rO   rW   rF   rG   s   @r   r   r   B   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 rM   rN   rP   s      r   rO   zExtent3D.__init__Q   rR   r   c                 8    |j                   j                  |      S rB   )r   convert_extent3drU   s       r   rW   zExtent3D.convert_valueT   s    ~~..u55r   rX   rG   s   @r   r   r   M   s    DIJ6r   r   c                       e Zd Zd ZeZy)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y)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      sh     4 3 3
@-9 -`1l 1
4\ 46| 6)| )
'L 'r   