
v^.                 @   s  d  d l  m Z m Z d  d l m Z d  d l m Z d d l m Z d d d d	 d
 d d g Z	 Gd d   d e e  Z
 Gd d   d e  Z Gd d   d e  Z Gd d	   d	 e  Z Gd d
   d
 e  Z Gd d   d e  Z Gd d   d e e  Z d S)    )
ArrayField	JSONField)Value)	Aggregate   )OrderableAggMixinArrayAggBitAndBitOrBoolAndBoolOrJSONBAgg	StringAggc               @   s@   e  Z d  Z d Z d Z d Z e d d    Z d d   Z d S)	r   Z	ARRAY_AGGz6%(function)s(%(distinct)s%(expressions)s %(ordering)s)Tc             C   s   t  |  j d j  S)Nr   )r   Zsource_expressionsoutput_field)self r   L/tmp/pip-build-8lau8j11/django/django/contrib/postgres/aggregates/general.pyr      s    zArrayAgg.output_fieldc             C   s   | s
 g  S| S)Nr   )r   value
expression
connectionr   r   r   convert_value   s    zArrayAgg.convert_valueN)	__name__
__module____qualname__functiontemplateallow_distinctpropertyr   r   r   r   r   r   r      s
   c               @   s   e  Z d  Z d Z d S)r	   ZBIT_ANDN)r   r   r   r   r   r   r   r   r	      s   c               @   s   e  Z d  Z d Z d S)r
   ZBIT_ORN)r   r   r   r   r   r   r   r   r
      s   c               @   s   e  Z d  Z d Z d S)r   ZBOOL_ANDN)r   r   r   r   r   r   r   r   r   #   s   c               @   s   e  Z d  Z d Z d S)r   ZBOOL_ORN)r   r   r   r   r   r   r   r   r   '   s   c               @   s+   e  Z d  Z d Z e   Z d d   Z d S)r   Z	JSONB_AGGc             C   s   | s
 g  S| S)Nr   )r   r   r   r   r   r   r   r   /   s    zJSONBAgg.convert_valueN)r   r   r   r   r   r   r   r   r   r   r   r   +   s   	c                   s@   e  Z d  Z d Z d Z d Z   f d d   Z d d   Z   S)r   Z
STRING_AGGz6%(function)s(%(distinct)s%(expressions)s %(ordering)s)Tc                s,   t  t |   } t   j | | |  d  S)N)r   strsuper__init__)r   r   	delimiterextraZdelimiter_expr)	__class__r   r   r    :   s    zStringAgg.__init__c             C   s   | s
 d S| S)N r   )r   r   r   r   r   r   r   r   >   s    zStringAgg.convert_value)r   r   r   r   r   r   r    r   r   r   )r#   r   r   5   s
   N)Zdjango.contrib.postgres.fieldsr   r   Zdjango.db.modelsr   Zdjango.db.models.aggregatesr   Zmixinsr   __all__r   r	   r
   r   r   r   r   r   r   r   r   <module>   s   
