
    Dvg
e                        d dl 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mZ d dlmZmZmZmZmZ d d	lmZmZmZmZmZ d d
lmZmZmZ d dlmZ d dl m!Z!m"Z"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. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 dZ5dZ6dZ7dZ8dZ9e5e6e8eeefZ: G d dej;                  Z< G d d          Z=dS )    N)datetime	timedelta)forms)settings)messages)FieldListFilter)DisallowedModelAdminLookupDisallowedModelAdminToField)IS_FACETS_VARIS_POPUP_VARTO_FIELD_VARIncorrectLookupParameters
ShowFacets)%build_q_object_from_lookup_parametersget_fields_from_pathlookup_spawns_duplicatesprepare_lookup_valuequote)FieldDoesNotExistImproperlyConfiguredSuspiciousOperation)InvalidPage)FFieldManyToOneRelOrderBy)
LOOKUP_SEP)
Combinable)reverse)RemovedInDjango60Warning)	urlencode)func_supports_parameter)
make_aware)gettextallopqec                        e Zd Z fdZ xZS )ChangeListSearchFormc                 ~     t                      j        |i | t          t          j        dd          i| _        d S )NF)requiredstrip)super__init__
SEARCH_VARr   	CharFieldfields)selfargskwargs	__class__s      \/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/contrib/admin/views/main.pyr0   zChangeListSearchForm.__init__<   sB    $)&))) eDDD
    )__name__
__module____qualname__r0   __classcell__)r7   s   @r8   r+   r+   ;   s8        
 
 
 
 
 
 
 
 
r9   r+   c                   r    e Zd ZeZd Zd ZddZd ZddZ	d Z
d Zd	 Zd
 Zd Zd ZddZd Zd Zd ZdS )
ChangeListc                    || _         |j        | _        | j        | _        |                    |          | _        || _        || _        || _        d | _	        d | _
        d | _        || _        || _        || _        |	| _        |
| _        || _        |                    |          | _        || _        || _        |                     |j                  }|                                sD|j                                        D ]*}t7          j        |d                    |                     +|j                            t@                    pd| _!        	 tE          |j                            tF          d                    | _$        n# tJ          $ r
 d| _$        Y nw xY wtL          |j        v | _'        tP          |j        v | _)        |j*        tV          j,        u p |j*        tV          j-        u ot\          |j        v | _/        |j*        tV          j-        u | _0        |j                            tb                    }|r(|2                    ||          stg          d|z            || _4        tk          |j        6                                          | _7        tk          |j        8                                          | _9        tF          | j7        v r| j7        tF          = | j9        tF          = tt          | j7        v r| j7        tt          = | j9        tt          = | ;                    t\          g          | _<        | ;                    t\          di          | _=        | j)        rd| _>        n|| _>        |                     |          | _?        | @                    |           | j)        rt          d          }n9| j        B                    |          rt          d	          }nt          d
          }|| j        jC        z  | _D        | j        jE        jF        | _G        d S )Nz,     z"The field %s cannot be referenced.)removeT z	Select %szSelect %s to changezSelect %s to view)Hmodel_metaoptslookup_optsget_querysetroot_querysetlist_displaylist_display_linkslist_filterhas_filtershas_active_filtersclear_all_filters_qsdate_hierarchysearch_fieldslist_select_relatedlist_per_pagelist_max_show_allmodel_adminget_preserved_filterspreserved_filterssortable_bysearch_help_textsearch_form_classGETis_validerrorsvaluesr   errorjoincleaned_datagetr1   queryintPAGE_VARpage_num
ValueErrorALL_VARshow_allr   is_popupshow_facetsr   ALWAYSALLOWr   
add_facetsis_facets_optionalr   to_field_allowedr
   to_fielddictitemsparamslistsfilter_params
ERROR_FLAGget_query_stringremove_facet_linkadd_facet_linklist_editablequerysetget_resultsr$   has_change_permissionverbose_nametitlepkattname
pk_attname)r4   requestrE   rK   rL   rM   rQ   rR   rS   rT   rU   r|   rV   rY   rZ   _search_formr`   rr   r   s                      r8   r0   zChangeList.__init__G   s   " 
K	9(55g>>("4&"&$(!,*#6 *!2&!,!B!B7!K!K& 0 --gk::$$&& 	:%,3355 : :w		%(8(89999!.22:>>D"
	! < <==DMM 	 	 	DMMM	7;.$3%1Z5FF 
#z'77XMW[<X 	 #."9Z=M"M;??<00 	K88(KK 	-4x?   !7;,,..//!'+"3"3"5"566t{""H%"8,$$J'":.!%!6!6}o!6!N!N"33]D4IJJ= 	/!#D!.D))'22!!!= 	1K((EE33G<< 	1122EE/00ETY33
*-5s   2F FFc                 `    d| j         j        d| j        j        d| j        j         j        dS )N<z: model=z model_admin=>)r7   r<   rE   rV   )r4   s    r8   __repr__zChangeList.__repr__   s<     N'''J###&333
 	
r9   Nc                 b    |p| j         }|                                }t          D ]	}||v r||= 
|S )z:
        Return all params except IGNORED_PARAMS.
        )rw   copyIGNORED_PARAMS)r4   ru   lookup_paramsignoreds       r8   get_filters_paramszChangeList.get_filters_params   sI     -4- & 	+ 	+G-''!'*r9   c           	         |                                  }d}d}t          | j        j        d          }|s-t	          j        d| j        j        j         dt                     |	                                D ]7\  }}|D ]/}|r|||fn||f}	 | j        j        |	 st          d| d          08g }
| j        D ]$}t          |          }t          |          r |||| j        | j                  }nd }t          |t           t"          f          r|\  }}n|t$          j        }}t          |t(                    s|}t+          | j        |          d         } ||||| j        | j        |          }|t          |          k    r|t-          | j        |          z  }|r>|                                r*|
                    |           |t          |          k    rd	}&| j        r|                    d
| j        z  d           }|e|                    d| j        z  d           }|                    d| j        z  d           }	 t9          t;          |d                   t;          ||d         nd          t;          ||d         nd                    }n"# t<          $ r}t?          |          |d }~ww xY w|r|tA          d          z   }nH|r(|tA          d          z   !                    d          }n|!                    |j"        dz             }tF          j$        rtK          |          }tK          |          }|&                    d| j        z  |gd| j        z  |gi           	 |	                                D ]0\  }}tO          ||          ||<   |t-          | j        |          z  }1|
tQ          |
          |||fS # tR          $ r}t?          |          |d }~ww xY w)NFr   z,`request` must be added to the signature of z.lookup_allowed().zFiltering by z not allowed)
field_pathTz%s__yearz	%s__monthz%s__dayrB   )days    )day)yearz%s__gtez%s__lt)*r   r"   rV   lookup_allowedwarningswarnr7   r<   r    rt   r	   rM   lencallablerE   
isinstancetuplelistr   creater   r   r   rH   
has_outputappendrQ   popr   re   rh   r   r   replacer   r   USE_TZr#   updater   boolr   )r4   r   r   may_have_duplicatesrO   supports_requestkey
value_listvalueru   filter_specsrM   lookup_params_countspecr   fieldfield_list_filter_classr   monthr   	from_dater)   to_dates                          r8   get_filterszChangeList.get_filters   s   //11#"2+Y
 
   	MO#-:O O O(  
  -2244 	X 	XOC# X X2BT#ug..e6t'6? X45VS5V5V5VWWWXX
 + &	. &	.K"%m"4"4$$  "{7M4:tGWXX!
kE4=99 Y5@2E22
 6A/BX2E!%// M!&J0ZHHLE..!J$)   ']););;;'+C(", , '  .)) .##D)))&]););;;)-& 	 !$$Z$2E%EtLLD%))+8K*KTRR#''	D4G(GNN> (DH):E"IIBBsCGGA>>! !II
 " > > >3A66A=> I')*;*;*;;GG I  )9"+=+=+==FF1FMMGG'//Y^a5G/HHG? 2 *9 5 5I(11G$$!D$77) 4#66	  	6+1133 W W
U%9#u%E%Ec"#'?@PRU'V'VV##\""#"  ! 	6 	6 	6+A..A5	6s2   AJ 
J5 J00J5,AO 
O$OO$c                 Z   |i }|g }| j                                         }|D ],}t          |          D ]}|                    |          r||= -|                                D ]\  }}|||v r||= |||<   dt          t          |                                          d          z  S )Nz?%sT)doseq)rw   r   r   
startswithrt   r!   sorted)r4   
new_paramsrC   r'   rkvs          r8   ry   zChangeList.get_query_string"  s    J>F##%% 	 	A!WW  <<?? ! $$&& 	 	DAqy66!!y		!2!2$?????r9   c                 @   | j                             || j        | j                  }|j        }| j         j        r| j                                        }nd }|| j        k    }|| j        k    }| j        r|s|s| j        	                                }n6	 |
                    | j                  j        }n# t          $ r t          w xY w|| _        | j         j        | _        | j         pt!          |          | _        || _        || _        || _        || _        || _        d S N)rV   get_paginatorr}   rT   countshow_full_result_countrJ   rU   rj   _clonepagerg   object_listr   r   result_countr   show_admin_actionsfull_result_countresult_listcan_show_all
multi_page	paginator)r4   r   r   r   r   r   r   r   s           r8   r~   zChangeList.get_results4  sN   $22T]D$6
 
	 ! 2 	% $ 2 8 8 : : $#t'==!D$66
 M 	0l 	0: 	0-..00KK0'nnT];;G 0 0 0//0 )&*&6&M# '+&A"A #
TF
 F
 "3&($"s   B2 2Cc                 l    g }| j         j        r| j         j        }n| j        j        r| j        j        }|S r   )rV   orderingrH   )r4   r   s     r8   _get_default_orderingz ChangeList._get_default_ordering\  s@    $ 	1'0HH& 	1'0Hr9   c                    	 | j                             |          }|j        S # t          $ r t	          |          r|}n`t          | j        |          rt          | j        |          }n5	 t          | j        |          }n# t          $ r t          |v r|cY cY S  w xY wt          |t                    rt          |d          r|j        }t          |dd          cY S w xY w)a  
        Return the proper model field name corresponding to the given
        field_name to use for ordering. field_name may either be the name of a
        proper model field, possibly across relations, or the name of a method
        (on the admin or model) or a callable with the 'admin_order_field'
        attribute. Return None if no proper model field name can be matched.
        fgetadmin_order_fieldN)rH   	get_fieldnamer   r   hasattrrV   getattrrE   AttributeErrorr   r   propertyr   )r4   
field_namer   attrs       r8   get_ordering_fieldzChangeList.get_ordering_fieldd  s   	<$..z::E:  	< 	< 	< 
## 
!):66 t/<<"4:z::DD%   !Z//)))))) $)) !gdF.C.C !y4!4d;;;;;!	<s5    # AC+B CBCBA CCc                 *   | j         }t          | j                            |          p|                                           }t
          |v rg }|t
                                       d          }|D ]n}	 |                    d          \  }}}	| j        t          |	                   }
| 
                    |
          }|sOt          |t                    rD|dk    r(|                                }|                                 |                    |           nt!          |d          rB|                    |dk    r|                                n|                                           n\|dk    r>|                    |          r)|                    |                    |                     n|                    ||z              X# t*          t,          f$ r Y lw xY w|                    |j        j                   |                     |          S )a  
        Return the list of ordering fields for the change list.
        First check the get_ordering() method in model admin, then check
        the object's default ordering. Then, any manually-specified ordering
        from the query string overrides anything. Finally, a deterministic
        order is guaranteed by calling _get_deterministic_ordering() with the
        constructed ordering.
        .-resolve_expression)ru   r   rV   get_orderingr   	ORDER_VARsplit
rpartitionrK   re   r   r   r   r   reverse_orderingr   r   descascr   removeprefix
IndexErrorrh   extendrd   order_by_get_deterministic_ordering)r4   r   r}   ru   r   order_paramsr'   nonepfxidxr   order_fields               r8   r   zChangeList.get_ordering  s    ))'22Rd6P6P6R6R
 
 H!),22377L!  %&\\#%6%6ND#s!%!23s88!<J"&"9"9*"E"EK& ! !+w77 ;#::*5*:*:*<*<K'88::: 4444 .BCC 	; 25**K,,...+//BSBS    (>(>s(C(C (@(@(E(EFFFF k(9:::"J/   H 	/000//999s   5A
G	 DG		GGc                 f    t          |          }t                      }dhd  j        j        D             z  }|D ]}d}t	          |t
                    r|                    d          }nXt	          |t                    r|j        }n;t	          |t                    r&t	          |j
        t                    r|j
        j        }|rd	  j                            |          }n# t          $ r Y w xY w|j        r||j        k    r|j        |v r n|                    |j                   g  j        j        d  j        j        D             R }|D ]K} fd|D             }	t%          d |	D                       r*|                    d |	D                       r nL|                    d	           |S )
a  
        Ensure a deterministic order across all database backends. Search for a
        single field or unique together set of fields providing a total
        ordering. If these are missing, augment the ordering with a descendant
        primary key.
        r   c                 8    h | ]}|j         	|j        |j        S rD   )uniquenullr   .0r   s     r8   	<setcomp>z9ChangeList._get_deterministic_ordering.<locals>.<setcomp>  s>     *
 *
 *
|*
 %*J*
M*
 *
 *
r9   Nr   c              3   $   K   | ]}|j         V  d S r   )r3   )r   
constraints     r8   	<genexpr>z9ChangeList._get_deterministic_ordering.<locals>.<genexpr>  s9        " %     r9   c                 D    g | ]}j                             |          S rD   )rH   r   )r   r   r4   s     r8   
<listcomp>z:ChangeList._get_deterministic_ordering.<locals>.<listcomp>  s7       ?ID$..z::  r9   c              3   $   K   | ]}|j         V  d S r   )r   r   s     r8   r   z9ChangeList._get_deterministic_ordering.<locals>.<genexpr>  s$      66euz666666r9   c              3   $   K   | ]}|j         V  d S r   )r   r   s     r8   r   z9ChangeList._get_deterministic_ordering.<locals>.<genexpr>  s$      -P-Pem-P-P-P-P-P-Pr9   z-pk)r   setrH   r3   r   strlstripr   r   r   
expressionr   r   remote_fieldr   addunique_togethertotal_unique_constraintsany
issupersetr   )
r4   r   ordering_fieldstotal_ordering_fieldspartr   r   constraint_field_namesfield_namesr3   s
   `         r8   r   z&ChangeList._get_deterministic_ordering  sA    >>%%!% *
 *
)0*
 *
 *
 !

  0	' 0	'DJ$$$ 2![[--

D!$$ 2!Y

D'** 2z$/1/M/M 2!_1
 3 ,66zBBEE(    H % *
*B*B=$999E##EM222&!1& &*&6&O  & &"  6 ' '   MX  
 66v66666 "---P-P-P-P-PPP E
 &&&s   C  
C-,C-c                    |                                  }i }t          | j        vr|D ]}t          |t          t
          f          r\t          |t
                    s|                                }t          |j        t                    r|j	        rdnd}|j        j
        }n0z|                    d          r|                    d          }d}nd}t          | j                  D ]%\  }}|                     |          |k    r|||<    n&no| j        t                                       d          D ]I}|                    d          \  }}	}
	 t%          |
          }
n# t&          $ r Y 8w xY w|	dk    rdnd||
<   J|S )zT
        Return a dictionary of ordering field column numbers and asc/desc.
        r   r   r   r   )r   r   ru   r   r   r   r   r  r   
descendingr   r   r   	enumeraterK   r   r   r   re   rh   )r4   r   r	  r   
order_typeindexr   r'   r   r   r   s              r8   get_ordering_field_columnsz%ChangeList.get_ordering_field_columns  s    --//DK'' "  ej'%:;; '%eW55 , %		!%"2A66 !/4/?%JVVU
 % 0 5 %%c** '!..s33E!'JJ!&J#,T->#?#?  KE4..t44==1;. >& [+11#66 G G!"c!2!2c3c((CC!   H14vv$$s   E
E*)E*c                    |                      |          \  | _        | _        }}| _        | j        }| j        D ]6}||                                |k    r|                    ||          }||}7	 t          |          }|                    |          }n2# t          t          f$ r  t          $ r}	t          |	          d }	~	ww xY w|j        j        s|                     |          }|                     ||          }
 |j        |
 }| j                            ||| j                  \  }}|                     ||                                           | _        ||z  r|                                S |S )N)r   rC   )r   r   rN   rO   rJ   expected_parametersr}   r   filterr   r   	Exceptionr   rd   select_relatedapply_select_relatedr   r   rV   get_search_resultsry   r   rP   distinct)r4   r   exclude_parametersremaining_lookup_paramsfilters_may_have_duplicatesqsfilter_specnew_qsq_objectr)   r   search_may_have_duplicatess               r8   rI   zChangeList.get_queryset  s    W%%	
#'# , 	  	 K"*22448JJJ$--gr::%B	/ ==TUUH8$$BB#%9: 	 	 	  	/ 	/ 	/ ,A...	/ x& 	/**2..B $$Wb11R[(# *.)9)L)LJ*
 *
&& %)$9$9.**,, %: %
 %
!
 ')CC 	;;== Is   1$B C1C  Cc                     | j         du r|                                S | j         du r(|                                 r|                                S | j         r |j        | j          S |S NTF)rS   r  !has_related_field_in_list_display)r4   r  s     r8   r  zChangeList.apply_select_relatedX  sz    #t++$$&&&#u,,5577 +((***# 	@$2$d&>??	r9   c                     | j         D ]U}	 | j                            |          }t          |j        t
                    r||j        k    r dS F# t          $ r Y Rw xY wdS r%  )rK   rH   r   r   r  r   r   r   )r4   r   r   s      r8   r&  z,ChangeList.has_related_field_in_list_displayd  s    + 		$ 		$J$(22:>> e0,?? $!U]22#tt %    us   A
AAc                     t          || j                  }t          d| j        j        d| j        j        dt          |          f| j        j        j	                  S )Nzadmin:__change)r5   current_app)
r   r   r   rG   	app_label
model_namer   rV   
admin_siter   )r4   resultr   s      r8   url_for_resultzChangeList.url_for_resultq  sa    VT_--w$(I$7$7$79M9M9MN))(38
 
 
 	
r9   r   )NN)r:   r;   r<   r+   r[   r0   r   r   r   ry   r~   r   r   r   r   r  rI   r  r&  r0  rD   r9   r8   r?   r?   D   s       ,S6 S6 S6j
 
 
   p6 p6 p6d@ @ @ @$&# &# &#P  < < <:-: -: -:^? ? ?B& & &P= = = =~
 
 
  
 
 
 
 
r9   r?   )>r   r   r   djangor   django.confr   django.contribr   django.contrib.adminr   django.contrib.admin.exceptionsr	   r
   django.contrib.admin.optionsr   r   r   r   r   django.contrib.admin.utilsr   r   r   r   r   django.core.exceptionsr   r   r   django.core.paginatorr   django.db.modelsr   r   r   r   django.db.models.constantsr   django.db.models.expressionsr   django.urlsr   django.utils.deprecationr    django.utils.httpr!   django.utils.inspectr"   django.utils.timezoner#   django.utils.translationr$   ri   r   rf   r1   rx   r   Formr+   r?   rD   r9   r8   <module>rD     s    ( ( ( ( ( ( ( (                   # # # # # # 0 0 0 0 0 0                                          
 . - - - - - < < < < < < < < < < < < 1 1 1 1 1 1 3 3 3 3 3 3       = = = = = = ' ' ' ' ' ' 8 8 8 8 8 8 , , , , , , , , , , , , 	

 
 
 
 
 
5: 
 
 
s
 s
 s
 s
 s
 s
 s
 s
 s
 s
r9   