
     +h )                     $   d Z 	 ddlmZ n# e$ r	 ddlmZ Y nw xY wddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ  G d
 de          Z G d dee          Z G d de          Z G d dee          Z G d de          ZdS )zSelect2 view implementation.    )Sequence)OrderedDict)BaseQuerySetView	ViewMixin)http)ImproperlyConfigured)F)gettext)Viewc                   (    e Zd ZdZdZd Zd Zd ZdS )Select2ViewMixinz1View mixin to render a JSON response for Select2.Fc                 ,      fd|d         D             S )z2Return data for the 'results' key of the response.c                     g | ]A}                     |                              |                              |          d BS )idtextselected_textget_result_valueget_result_labelget_selected_result_label.0resultselfs     U/var/www/html/e360mart/e360mart_env/lib/python3.11/site-packages/dal_select2/views.py
<listcomp>z0Select2ViewMixin.get_results.<locals>.<listcomp>   se     
 
 

  ++F33--f55!%!?!?!G!G 
 
 
    object_list )r   contexts   ` r   get_resultszSelect2ViewMixin.get_results   s5    
 
 
 

 $M2
 
 
 	
r   c                 r    g }d} j         ru|rs|                    dd          }||j        dk    rd} j        s- fd|d         D             }|                                |v rd}n fd|d         D             }||v rd}|r3                      j                  r|t          d	          d
|iz  ddg}|S )z4Form the correct create_option to append to results.Fpage_objN   Tc              3   f   K   | ]+}                     |                                          V  ,d S N)r   lowerr   s     r   	<genexpr>z5Select2ViewMixin.get_create_option.<locals>.<genexpr>-   sY       $J $J(. %)$9$9&$A$A$G$G$I$I $J $J $J $J $J $Jr   r   c              3   B   K   | ]}                     |          V  d S r'   )r   r   s     r   r)   z5Select2ViewMixin.get_create_option.<locals>.<genexpr>2   sE       $ $ ))&11$ $ $ $ $ $r   Create "%(new_value)s"	new_valuer   r   	create_id)create_fieldgetnumbercase_sensitive_creater(   has_add_permissionrequest_)r   r!   qcreate_optiondisplay_create_optionr$   existing_optionss   `      r   get_create_optionz"Select2ViewMixin.get_create_option!   s<    % 	2 	2{{:t44H8?a#7#7(,%- 2$J $J $J $J29-2H$J $J $J 7799 000,1)$ $ $ $")-"8$ $ $  (((,1)  	T%<%<T\%J%J 	233{A6FF!  M
 r   c                     | j         j                            dd          }|                     ||          }t	          j        |                     |          |z   d|                     |          id          S )z)Return a JSON response in Select2 format.r6   Nmore)results
pagination)r4   GETr0   r:   r   JsonResponser"   has_more)r   r!   r6   r7   s       r   render_to_responsez#Select2ViewMixin.render_to_responseA   s|    L  d++..w:: ++G44}DDMM'22   	r   N)__name__
__module____qualname____doc__r2   r"   r:   rB   r    r   r   r   r      sN        ;;!
 
 
  @    r   r   c                       e Zd ZdZdS )Select2QuerySetViewz"List options for a Select2 widget.N)rC   rD   rE   rF   r    r   r   rH   rH   P   s        ,,,,r   rH   c                        e Zd ZdZdZdZd ZdS )Select2GroupQuerySetViewa  List of grouped options for a Select2 widget.

    .. py:attribute:: group_by_related

        Name of the field for the related Model on a One to Many relation

    .. py:attribute:: related_field_name

        Name of the related Model field to run filter against.
    Nnamec                      j         st          d          t                      }|d         }|                    t	           j          d j                             }|D ]C}t          |d          }|                    |g            ||                             |           D fd|	                                D             S )zReturn the options grouped by a common related model.

        Raises ImproperlyConfigured if self.group_by_name is not configured
        zMissing group_by_related.r   __)
group_namerN   c                 :    g | ]\  }}d |fd|D             dS )Nc                     g | ]A}                     |                              |                              |          d BS r   r   r   s     r   r   zCSelect2GroupQuerySetView.get_results.<locals>.<listcomp>.<listcomp>y   se     % % %  ++F33--f55!%!?!?!G!G  % % %r   r   r   childrenr    )r   groupr=   r   s      r   r   z8Select2GroupQuerySetView.get_results.<locals>.<listcomp>v   sd     0 0 0 eW % % % % $	% % %
 
 0 0 0r   )
group_by_relatedr   r   annotater	   related_field_namegetattr
setdefaultappenditems)r   r!   groupsr   r   rN   s   `     r   r"   z$Select2GroupQuerySetView.get_resultsc   s    
 $ 	D&'BCCCm,!**D1NNT5LNNOO + Q Q " 	. 	.F 66Jj"---:%%f----0 0 0 0 !'0 0 0 	0r   )rC   rD   rE   rF   rT   rV   r"   r    r   r   rJ   rJ   T   s;        	 	 0 0 0 0 0r   rJ   c                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )Select2ListViewz9Autocomplete from a list of items rather than a QuerySet.c                     g S )z3Return the list strings from which to autocomplete.r    )r   s    r   get_listzSelect2ListView.get_list   s    	r   c                 (   |                                  }g }| j        rH|                     |          }t          | d          r#| j        t	          d          d| j        iz  ddg}t          j        d|                     |          |z   id          S )	z!Return option list json response.creater+   r,   Tr-   r=   zapplication/json)content_type)r_   r6   autocomplete_resultshasattrr5   r   r@   r=   )r   r4   argskwargsr=   r7   s         r   r0   zSelect2ListView.get   s    --//6 		//88GtX&& &677#TV;  "&" " !  t||G,,}<"
*, , , 	,r   c                     t          d |D                       r!t          |          dk    r fd|D             S t          d |D                       r!t          |          dk    r fd|D             S  fd|D             S )z9Return list of strings that match the autocomplete query.c              3   @   K   | ]}t          |t                    V  d S r'   
isinstancelistr   els     r   r)   z7Select2ListView.autocomplete_results.<locals>.<genexpr>   ,      66z"d##666666r   r   c                 x    g | ]6\  }}j                                         |                                v 2||g7S r    r6   r(   r   xyr   s      r   r   z8Select2ListView.autocomplete_results.<locals>.<listcomp>   =    PPPv1DFLLNNaggii4O4OQF4O4O4Or   c              3   @   K   | ]}t          |t                    V  d S r'   rj   tuplerl   s     r   r)   z7Select2ListView.autocomplete_results.<locals>.<genexpr>   s,      77z"e$$777777r   c                 x    g | ]6\  }}j                                         |                                v 2||g7S r    rp   rq   s      r   r   z8Select2ListView.autocomplete_results.<locals>.<listcomp>   rt   r   c                 n    g | ]1}j                                         |                                v /|2S r    rp   )r   rr   r   s     r   r   z8Select2ListView.autocomplete_results.<locals>.<listcomp>   s5    FFF!$&,,..AGGII*E*EA*E*E*Er   alllenr   r=   s   ` r   rc   z$Select2ListView.autocomplete_results   s    66g66666 	Q3w<<!;K;KPPPPPPPP77w77777 	GCLL1<L<LPPPPPPPPFFFFwFFFFr   c                     t          d |D                       rt          |          dk    rd |D             S t          d |D                       rt          |          dk    rd |D             S d |D             S )zReturn the result dictionary.c              3   @   K   | ]}t          |t                    V  d S r'   ri   rl   s     r   r)   z*Select2ListView.results.<locals>.<genexpr>   rn   r   r   c                 6    g | ]\  }}t          ||           S r   r   dictr   rr   rs   s      r   r   z+Select2ListView.results.<locals>.<listcomp>   )    ===6AqDAA&&&===r   c              3   @   K   | ]}t          |t                    V  d S r'   rv   rl   s     r   r)   z*Select2ListView.results.<locals>.<genexpr>   s,      992B&&999999r   c                 6    g | ]\  }}t          ||           S r   r   r   s      r   r   z+Select2ListView.results.<locals>.<listcomp>   r   r   c                 0    g | ]}t          ||           S r   r   r   rr   s     r   r   z+Select2ListView.results.<locals>.<listcomp>   s%    8881DAA&&&888r   rz   r}   s     r   r=   zSelect2ListView.results   s    66g66666 	93w<<!;K;K==W====9999999 	9c'llQ>N>N==W====888888r   c                 "   t          | d          st          d          |j                            dd          }|t	          j                    S |                     |          }|t	          j                    S t	          j        ||d          S )zAdd an option to the autocomplete list.

        If 'text' is not defined in POST or self.create(text) fails, raises
        bad request. Raises ImproperlyConfigured if self.create if not defined.
        ra   zMissing "create()"r   Nr   )rd   r   POSTr0   r   HttpResponseBadRequestra   r@   )r   r4   re   rf   r   s        r   postzSelect2ListView.post   s     tX&& 	=&';<<<|--<.000{{4  <.000 "
 "
   	r   N)	rC   rD   rE   rF   r_   r0   rc   r=   r   r    r   r   r]   r]      sh        CC  , , ,$G G G9 9 9    r   r]   c                       e Zd ZdZd Zd ZdS )Select2GroupListViewzView mixin for grouped options.c                    d}|}t          |t                    rt          |t                    st          |          }t	          d |D                       r|dk    r|dd         \  }}||ffS t	          d |D                       r|dk    r|dd         \  }}||ffS |dk    r|dd         \  }}n|dk    r|d         }t          |t                    rt          |t                    r|f}||ffS )zReturn the item with its group.Nc              3   @   K   | ]}t          |t                    V  d S r'   ri   rl   s     r   r)   z9Select2GroupListView.get_item_as_group.<locals>.<genexpr>   s,      88B:b$''888888r   r%   r      c              3   @   K   | ]}t          |t                    V  d S r'   ri   rl   s     r   r)   z9Select2GroupListView.get_item_as_group.<locals>.<genexpr>   s,      ::bZD))::::::r   )rj   r   strr|   r{   )r   entryrS   itementry_lengths        r   get_item_as_groupz&Select2GroupListView.get_item_as_group   s0   eX&& 	$z%/E/E 	$u::L88%88888 $\A=M=M#AaCjtt}~%::E::::: $|a?O?O#AaCjtt}~%  !##"'!*KE44!A%% 8D$)) 	Zc-B-B 	7Dt}~r   c                     i }                                  }|rt          d |D                       st          d |D                       rЈ fd|D             } j        r' j                                        fd|D             }|D ]>\  }}}	}
|                    ||fg            |||f                             |	|
g           ?t          j        dd |                    dg           D             d |	                                D             z   i          S  fd	|D             } j        r' j                                        fd
|D             }|D ]6\  }}
|                    |g            ||                             |
           7t          j        dd |                    dg           D             d |	                                D             z   i          S dS )z2Return option list with children(s) json response.c              3   @   K   | ]}t          |t                    V  d S r'   ri   rl   s     r   r)   z+Select2GroupListView.get.<locals>.<genexpr>   s,      ;;RJr4((;;;;;;r   c              3   @   K   | ]}t          |t                    V  d S r'   rv   rl   s     r   r)   z+Select2GroupListView.get.<locals>.<genexpr>   s,      ??z"e,,??????r   c           	          g | ]@}                     |          D ](\  }}|D ] }|d          |d         |d          |d         f!)AS )r   r%   r   r   r   rS   rZ   r   r   s        r   r   z,Select2GroupListView.get.<locals>.<listcomp>   s          ?D(,(>(>u(E(E   $u %     1XuQxa$q':         r   c                 R    g | ]#\  }}}}|                                 v ||||f$S r    r(   )r   ghrr   rs   r6   s        r   r   z,Select2GroupListView.get.<locals>.<listcomp>   sA     $7 $7 $7ZQ1a'(AGGII~~ &'1aL'5~~r   r=   c                     g | ]
\  }}||d S r   r    r   s      r   r   z,Select2GroupListView.get.<locals>.<listcomp>   s:           #a #$Q      r   )NNc                 L    g | ]!\  }}|d          |d         d |D             d"S )r   r%   c                     g | ]
\  }}||d S r   r    r   s      r   r   z7Select2GroupListView.get.<locals>.<listcomp>.<listcomp>  s1     ) ) )9=Aq! 4 4) ) )r   rQ   r    r   r   ls      r   r   z,Select2GroupListView.get.<locals>.<listcomp>   s_     	 	 	 !Aq #$A$$%aD) )AB) ) ) 	 	 	r   c                 X    g | ]&}                     |          D ]\  }}|D ]}||f'S r    r   r   s        r   r   z,Select2GroupListView.get.<locals>.<listcomp>  sh      3  3  3%484J4J54Q4Q 3  3$0E5,1 3  3$( "'  3  3  3  3  3r   c                 J    g | ]\  }}|                                 v ||f S r    r   )r   r   rr   r6   s      r   r   z,Select2GroupListView.get.<locals>.<listcomp>  s9     $7 $7 $7tq!'(AGGII~~ &'F'5~~r   c                     g | ]}||d S r   r    r   s     r   r   z,Select2GroupListView.get.<locals>.<listcomp>  s-          12q!,,     r   Nc                 4    g | ]\  }}||d  |D             dS )c                     g | ]}||d S r   r    r   s     r   r   z7Select2GroupListView.get.<locals>.<listcomp>.<listcomp>   s-     ) ) )9:q! 4 4) ) )r   rQ   r    r   s      r   r   z,Select2GroupListView.get.<locals>.<listcomp>  sW     	 	 	 !Aq #$$%) )>?) ) ) 	 	 	r   )
r_   r{   r6   r(   rX   rY   r   r@   poprZ   )r   r4   re   rf   results_dictr=   flat_resultsgroup_idrS   item_idr   r6   s   `          @r   r0   zSelect2GroupListView.get   s   --// >	;;7;;;;;=??w?????=       HO      6 7A$7 $7 $7 $7< $7 $7 $7L6B L L2HeWd ++Xu,=rBBB (E!23::GT?KKKK(     '3&6&6|R&H&H     	 	 %1$6$6$8$8	 	 		 *   $ 3  3  3  37  3  3  3 6 7A$7 $7 $7 $7| $7 $7 $7L#/ 5 5KE4 ++E2666 '..t4444(    6B6F6FtR6P6P     	 	 %1$6$6$8$8	 	 	 *   c>	 >	r   N)rC   rD   rE   rF   r   r0   r    r   r   r   r      s=        ))  6C C C C Cr   r   N)rF   collections.abcr   ImportErrorcollectionsr   	dal.viewsr   r   djangor   django.core.exceptionsr   django.db.modelsr	   django.utils.translationr
   r5   django.views.generic.listr   objectr   rH   rJ   r]   r   r    r   r   <module>r      s   " "%((((((( % % %$$$$$$$$% # # # # # # 1 1 1 1 1 1 1 1       7 7 7 7 7 7       1 1 1 1 1 1 * * * * * *; ; ; ; ;v ; ; ;|- - - - -*,< - - -*0 *0 *0 *0 *02 *0 *0 *0ZA A A A Ai A A AHa a a a a? a a a a as    