î
Þ^Q\  ã               @   sP   d  Z  d d l m Z d d l m Z d d l m Z Gd d „  d e ƒ Z d S)z$View that supports QuerySetSequence.é    )ÚBaseQuerySetView)ÚContentType)ÚQuerySetSequencec                   sv   e  Z d  Z d Z d Z d Z d d „  Z ‡  f d d †  Z d d	 „  Z ‡  f d
 d †  Z	 d d „  Z
 d d „  Z ‡  S)ÚBaseQuerySetSequenceViewzœ
    Base view that uses a QuerySetSequence.

    Compatible with form fields which use a ContentType id as well as a model
    pk to identify a value.
    Té
   c             C   s   |  j  s |  j Sd S)z#Don't paginate if :py:attr:`mixup`.N)ÚmixupÚpaginate_by)ÚselfZqueryset© r
   úP/var/www/dbchiro/venv/lib/python3.4/site-packages/dal_queryset_sequence/views.pyÚget_paginate_by   s    z(BaseQuerySetSequenceView.get_paginate_byc                s#   |  j  r d St t |  ƒ j | ƒ S)z!Return False if :py:attr:`mixup`.F)r   Úsuperr   Úhas_more)r	   Úcontext)Ú	__class__r
   r   r      s    	z!BaseQuerySetSequenceView.has_morec                s{   t  t | j j ƒ ƒ rw t |  j t  | j j ƒ ƒ ‰  | j j d d d … t ‡  f d d †  | j j Dƒ Œ  } n  | S)z-Return a queryset with different model types.r   Né   c                s    g  |  ] } | d  ˆ  … ‘ q S)Nr
   )Ú.0Úq)Úlimitr
   r   ú
<listcomp>%   s   	 z<BaseQuerySetSequenceView.mixup_querysets.<locals>.<listcomp>)ÚlenÚlistÚqueryZ
_querysetsÚintr   r   )r	   Úqsr
   )r   r   Úmixup_querysets    s
    (z(BaseQuerySetSequenceView.mixup_querysetsc                s4   t  t |  ƒ j ƒ  } |  j r0 |  j | ƒ } n  | S)zAMix results from all querysets in QuerySetSequence if self.mixup.)r   r   Úget_querysetr   r   )r	   r   )r   r
   r   r   (   s    	z%BaseQuerySetSequenceView.get_querysetc             C   s    d t  j j | ƒ j | j f S)z#Return ctypeid-objectid for result.z%s-%s)r   ZobjectsZget_for_modelÚpk)r	   Úresultr
   r
   r   Úget_result_value1   s    z)BaseQuerySetSequenceView.get_result_valuec             C   sN   | j  j rD y  t | j  j j ƒ  ƒ d } WqD t k
 r@ YqD Xn  | j  j S)z>Return the name of the model, fetch parent if model is a proxyr   )Z_metaÚproxyr   ÚparentsÚkeysÚ
IndexErrorZverbose_name)r	   Zmodelr
   r
   r   Úget_model_name6   s     z'BaseQuerySetSequenceView.get_model_name)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r$   r
   r
   )r   r   r   
   s   	r   N)r(   Z	dal.viewsr   Z"django.contrib.contenttypes.modelsr   Zqueryset_sequencer   r   r
   r
   r
   r   Ú<module>   s   