ó
®â0_c           @   sÍ   d  d l  m Z d  d l m Z d  d l m Z d d d d d g Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ	 d e f d „  ƒ  YZ
 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   ExtentField(   t   Value(   t	   Aggregatet   Collectt   Extentt   Extent3Dt   MakeLinet   Uniont   GeoAggregatec           B   s>   e  Z d Z e Z d  „  Z d „  Z d e d e e d „ Z	 RS(   c         C   sA   | j  j |  ƒ | j  j |  j ƒ |  _ t t |  ƒ j | | ƒ S(   N(   t   opst   check_expression_supportt   spatial_aggregate_namet   namet   functiont   superR   t   as_sql(   t   selft   compilert
   connection(    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR      s    c         C   sŽ   |  j  s~ |  j j d ƒ p* t |  d d ƒ } |  j ƒ  } | j ƒ  } | j t | ƒ ƒ | j | ƒ d | _	 | j
 | | ƒ S|  j
 | | ƒ S(   Nt	   tolerancegš™™™™™©?s*   %(function)s(SDOAGGRTYPE(%(expressions)s))(   t	   is_extentt   extrat   gett   getattrt   copyt   get_source_expressionst   appendR   t   set_source_expressionst   templateR   (   R   R   R   R   t   clonet   expressions(    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyt	   as_oracle   s    	$	c         C   s`   t  t |  ƒ j | | | | | ƒ } x5 | j ƒ  D]' } t | j d ƒ s1 t d ƒ ‚ q1 q1 W| S(   Nt	   geom_types6   Geospatial aggregates only allowed on geometry fields.(   R   R   t   resolve_expressionR   t   hasattrt   fieldt
   ValueError(   R   t   queryt   allow_joinst   reuset	   summarizet   for_savet   ct   expr(    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR!      s
    $N(
   t   __name__t
   __module__t   NoneR   t   FalseR   R   R   t   TrueR!   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR      s
   		c           B   s   e  Z d  Z RS(   R   (   R,   R-   R   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR   &   s   c           B   s&   e  Z d  Z d Z d „  Z d „  Z RS(   R   t   2Dc         K   s&   t  t |  ƒ j | d t ƒ  | d  S(   Nt   output_field(   R   R   t   __init__R    (   R   t
   expressionR   (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR3   .   s    c         C   s   | j  j | | j d ƒ ƒ S(   Nt   transformed_srid(   R	   t   convert_extentR   (   R   t   valueR4   R   t   context(    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyt   convert_value1   s    (   R,   R-   R   R   R3   R9   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR   *   s   	c           B   s&   e  Z d  Z d Z d „  Z d „  Z RS(   R   t   3Dc         K   s&   t  t |  ƒ j | d t ƒ  | d  S(   NR2   (   R   R   R3   R    (   R   R4   R   (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR3   9   s    c         C   s   | j  j | | j d ƒ ƒ S(   NR5   (   R	   t   convert_extent3dR   (   R   R7   R4   R   R8   (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR9   <   s    (   R,   R-   R   R   R3   R9   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR   5   s   	c           B   s   e  Z d  Z RS(   R   (   R,   R-   R   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR   @   s   c           B   s   e  Z d  Z RS(   R   (   R,   R-   R   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyR   D   s   N(   t#   django.contrib.gis.db.models.fieldsR    t   django.db.modelsR   t   django.db.models.aggregatesR   t   __all__R   R   R   R   R   R   (    (    (    sI   /tmp/pip-unpacked-wheel-BAJOf3/django/contrib/gis/db/models/aggregates.pyt   <module>   s   