o
    »ïØeú  ã                   @   s<   d Z ddlmZ ddlmZ ddlmZ G dd„ deƒZdS )z$View that supports QuerySetSequence.é    )ÚBaseQuerySetView)ÚContentType)ÚQuerySetSequencec                       s`   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‡ fdd„Z‡  ZS )ÚBaseQuerySetSequenceViewa  
    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.

    .. py:attribute:: mixup

        Cause the autocomplete to show a few results of each querysets.
    Té
   c                 C   s   | j s| jS dS )z#Don't paginate if :py:attr:`mixup`.N)ÚmixupÚpaginate_by)ÚselfÚqueryset© r   úg/var/www/html/Testing_prj/Navya-Bakers/venv/lib/python3.10/site-packages/dal_queryset_sequence/views.pyÚget_paginate_by   s   z(BaseQuerySetSequenceView.get_paginate_byc                    s   | j rdS tt| ƒ |¡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|ƒ}|rt| j| ƒ‰ t‡ fdd„|D ƒŽ }|S )z-Return a queryset with different model types.c                    s   g | ]}|d ˆ … ‘qS )Nr   )Ú.0Úq©Úlimitr   r   Ú
<listcomp>*   s    z<BaseQuerySetSequenceView.mixup_querysets.<locals>.<listcomp>)ÚlistÚget_querysetsÚlenÚintr   r   )r	   ÚqsÚ	querysetsÚqueryset_countr   r   r   Úmixup_querysets$   s   z(BaseQuerySetSequenceView.mixup_querysetsc                    s"   t t| ƒ ¡ }| jr|  |¡}|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f S )z#Return ctypeid-objectid for result.z%s-%s)r   ÚobjectsÚget_for_modelÚpk)r	   Úresultr   r   r   Úget_result_value6   s   ÿz)BaseQuerySetSequenceView.get_result_valuec                 C   sH   |j jr zt|j j ¡ ƒd }W |j jS  ty   Y |j jS w |j jS )z?Return the name of the model, fetch parent if model is a proxy.r   )Ú_metaÚproxyr   ÚparentsÚkeysÚ
IndexErrorÚverbose_name)r	   Úmodelr   r   r   Úget_model_name;   s   þþz'BaseQuerySetSequenceView.get_model_namec                    s$   |j D ]}tƒ  ||¡r dS qdS )z<Return True if a orm_lookups requires calling qs.distinct().TN)Ú
_querysetsr   Úlookup_needs_distinct)r	   r
   Úorm_lookupsr   r   r   r   r/   D   s
   
ÿÿz.BaseQuerySetSequenceView.lookup_needs_distinct)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r    r%   r-   r/   Ú__classcell__r   r   r   r   r   
   s    			r   N)r4   Ú	dal.viewsr   Ú"django.contrib.contenttypes.modelsr   Úqueryset_sequencer   r   r   r   r   r   Ú<module>   s
    