
    恕fc                       d dl Z d dlmZmZ 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mZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZmZmZmZmZmZmZ ddlm Z  d dl!m!Z!m"Z"m#Z# d dl$Z$d dl%Z%d dl&Z& G d de      Z'd Z(d Z)d Z*e jV                  jY                  e-      d        Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d  Z9d! Z:d" Z;d# Z<d$ Z=d% Z>d& Z?d' Z@e jV                  jY                  e-      d(        ZAd) ZBd* ZCd+ ZDd, ZEd- ZFd. ZGd/ ZHd0 ZIe jV                  jY                  e-      d1        ZJd2 ZKd3 ZLd4 ZMd5 ZNd6 ZOd7 ZPd8 ZQd9 ZRd: ZSd; ZTd< ZUd= ZVd> ZWe jV                  jY                  e-      d?        ZXd@ ZYdA ZZy)B    N)fields
validators)form)Select2FieldDateTimeField)
as_unicode)	iteritems)	ModelViewfilterstools)Babel)hybrid_property)cast)	EmailType
ChoiceTypeUUIDTypeURLTypeCurrencyType	ColorType	ArrowTypeIPAddressType   )setup)datetimetimedatec                   .     e Zd Z	 d fd	ZdddgiZ xZS )CustomModelViewc                 v    t        |      D ]  \  }}	t        | ||	        t        t        |   ||||||       y N)r	   setattrsuperr   __init__)selfmodelsessionnamecategoryendpointurlkwargskv	__class__s             `/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/tests/sqla/test_basic.pyr#   zCustomModelView.__init__   sG     f% 	 DAqD!Q	  	ot-eWdH.6	=    choice_field)choice-1One)choice-2Two)NNNN)__name__
__module____qualname__r#   form_choices__classcell__)r.   s   @r/   r   r      s"    >B= 	
Lr0   r   c                       G  fdd j                          G  fdd j                         } j                          |fS )Nc                      e Zd Z	 	 	 	 ddZ G d dej
                        ZW  j                  W  j                  d      Z	W  j                  W  j                  d            ZW  j                  W  j                  d            ZW  j                  W  j                        ZW  j                  W  j                         ZW  j                  W  j$                        ZW  j                  W  j(                        ZW  j                  W  j,                        ZW  j                  W  j0                        ZW  j                  e      ZW  j                  W  j                  d	d
      d      ZW  j                  W  j                  d      ZW  j                   eddg            ZW  j                   eeW  j                                     Z W  j                  e! e"jF                               Z$W  j                   e%d      e&jN                        Z(W  j                  e)      Z*W  j                  e+      Z,W  j                  e-      Z.W  j                  e/      Z0d Z1d Z2y)create_models.<locals>.Model1NFc                     || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        y r    )test1test2test3test4
bool_field
date_field
time_fielddatetime_fieldemail_fieldr1   
enum_field)r$   r?   r@   rA   rB   rC   rD   rE   rF   rG   r1   rH   s               r/   r#   z&create_models.<locals>.Model1.__init__*   sT     DJDJDJDJ(DO(DO(DO"0D*D ,D(DOr0   c                       e Zd ZdZdZy))create_models.<locals>.Model1.EnumChoicesr      Nr6   r7   r8   firstsecond r0   r/   EnumChoicesrJ   :   s    EFr0   rP   Tprimary_key   	model1_v1	model1_v2nullabler2   zFirst choicer4   zSecond choiceimpl)default)binaryc                     | j                   S r    r?   r$   s    r/   __unicode__z)create_models.<locals>.Model1.__unicode__V       ::r0   c                     | j                   S r    r_   r`   s    r/   __str__z%create_models.<locals>.Model1.__str__Y   rb   r0   )NNNNFNNNNNN)3r6   r7   r8   r#   enumEnumrP   ColumnIntegeridStringr?   Unicoder@   TextrA   UnicodeTextrB   BooleanrC   DaterD   TimerE   DateTimerF   r   rG   rH   r1   r   sqla_utils_choicesqla_utils_enumr   arrowutcnowsqla_utils_arrowr   uuiduuid4sqla_utils_uuidr   sqla_utils_urlr   sqla_utils_ip_addressr   sqla_utils_currencyr   sqla_utils_colorra   rd   dbs   r/   Model1r=   )   s   EICG6:37	) 	$)) 	 YYrzztY4		"))B-(		"**R.)		"''"		"..)YYrzz*
YYrww'
YYrww'
2;;/ii	*YYrww{K@4YP
yyTy:IIj)*2
 '  ))J{$NO99Y9G))HE$:DJJ)O7+ "		- 8 ii599Y/		r0   r   c                      e Zd Z	 	 	 ddZW j	                  W j
                  d      ZW j	                  W j                        ZW j	                  W j                  dd      Z
W j	                  W j                  dd      ZW j	                  W j
                        ZW j	                  W j                        ZW j	                  W j                  dd	      d
      ZW j	                  W j"                        ZW j	                  W j
                  W j'                  W  j                              ZW j+                   fdd      Zy)create_models.<locals>.Model2Nc                 f    || _         || _        || _        || _        || _        || _        || _        y r    )string_field	int_fieldrC   model1float_fieldstring_field_defaultstring_field_empty_default)r$   r   r   rC   r   r   r   r   s           r/   r#   z&create_models.<locals>.Model2.__init__]   s9     !-D&DN(DO DK*D(<D%.HD+r0   TrQ   F )rW   r\   	model2_v1	model2_v2rV   c                       S r    rO   )r   s   r/   <lambda>z&create_models.<locals>.Model2.<lambda>u   s     r0   model2backref)NNNNNNN)r6   r7   r8   r#   rg   rh   ri   rj   r   rl   r   r   r   rn   rC   rf   rH   Floatr   
ForeignKey	model1_idrelationshipr   r   r   s   r/   Model2r   \   s   IMIM04		I YYrzztY4yy+!yy513  )  5%'YYrww79 &/ &;"IIbjj)	YYrzz*
YYrww{K@4YP
ii) IIbjj"--		*BC	Br0   r   )Model
create_all)r   r   r   s   ` @r/   create_modelsr   (   s;    1 1fC C6 MMO6>r0   c                     |ddd      } |ddd      } |dd	      } |d
ddd      } |d|d       } |d|d       } |d	dd      }	 |ddd      }
 |dd      } |dt        ddd            } |dt        ddd             } |d!t        ddd"      #      } |d$t        dd"d%      #      } |d&t        dd'd(d)d"d*      +      } |d,t        dd(d-d*d%d*      +      } |d.d/0      } |d1d20      } |d34      }| j                  j	                  |||||||	|
||||||||||g       | j                  j                          y )5Ntest1_val_1test2_val_1T)rC   test1_val_2test2_val_2Ftest1_val_3test2_val_3test1_val_4test2_val_4test@test.comr2   )rG   r1   )r   r     gfffff9@)r   r   (#  g     R@test2_val_5l     3, )r   	date_obj1i        )rD   	date_obj2i  
      timeonly_obj1	   )rE   timeonly_obj2   datetime_obj1      r   r   )rF   datetime_obj2rK   	enum_obj1rT   )rH   	enum_obj2rU   	empty_obj)r@   )r   r   r   r&   add_allcommit)r   r   r   model1_obj1model1_obj2model1_obj3model1_obj4model2_obj1model2_obj2model2_obj3model2_obj4model2_obj5r   r   r   r   r   r   r   r   r   s                        r/   fill_dbr   |   s   $GK%HK6K?aklK{MK{MK$DIK$DIK2EFK{tD"b/ABI{tD"b/ABI?tBAGM?tB1~FM?8D!QPQSTVW;XYM?8D!QPQSTVW;XYM{{;I{{;I[)IJJ[+{[+{K=-=-9i  JJr0   c                     t               \  } }}| j                         5  t        |      \  }}t        ||j                        }|j                  |       |j                  |k(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ d|j                  v sJ d|j                  v sJ d|j                  v sJ d|j                  v sJ |j                  J |j                  J |j                  rJ |j                  J |j                  j                  j                   t"        j$                  k(  sJ |j                  j&                  j                   t"        j$                  k(  sJ |j                  j(                  j                   t"        j*                  k(  sJ |j                  j,                  j                   t"        j*                  k(  sJ |j                  j.                  j                   t"        j$                  k(  sJ |j                  j0                  j                   t2        k(  sJ |j                  j4                  j                   t2        k(  sJ |j                  j6                  j                   t2        k(  sJ |j                  j8                  j                   t2        k(  sJ |j                  j:                  j                   t<        k(  sJ |j                  j>                  j                   t"        j$                  k(  sJ |j                  j@                  j                   t"        j$                  k(  sJ |j                  jB                  j                   t"        j$                  k(  sJ |j                  jD                  j                   t"        j$                  k(  sJ |j                  jF                  j                   t"        j$                  k(  sJ | jI                         }|jK                  d      }|jL                  d	k(  sJ |jK                  d
      }|jL                  d	k(  sJ tO        jP                         }|jS                  d
tU        ddtW        ddd      ddddddtY        |      dddd            }|jL                  dk(  sJ |j                  j[                  |      j]                         }	|	j                  dk(  sJ |	j&                  dk(  sJ |	j(                  dk(  sJ |	j,                  dk(  sJ |	j.                  dk(  sJ |	j0                  dk(  sJ |	j4                  dk(  sJ |	j6                  dk(  sJ |	j8                  j^                  dk(  sJ |	j:                  ta        jJ                  d      k(  sJ |	j>                  |k(  sJ |	j@                  dk(  sJ tY        |	jB                        dk(  sJ tY        |	jD                        dk(  sJ |	jF                  jb                  dk(  sJ |jK                  d      }|jL                  d	k(  sJ d|jd                  jg                  d      v sJ d|	jh                  z  }
|jK                  |
      }|jL                  d	k(  sJ d|jd                  jg                  d      v sJ tO        jP                         }|jS                  |
tU        ddd d!d!d!d!dtY        |      dddd"            }|jL                  dk(  sJ |j                  j[                  |      j]                         }	|	j                  dk(  sJ |	j&                  dk(  sJ |	j(                  dk(  sJ |	j,                  dk(  sJ |	j.                  d#k(  sJ |	j0                  J |	j4                  J |	j6                  J |	j8                  J |	j:                  J |	j>                  |k(  sJ |	j@                  J |	jB                  J |	jD                  J |	jF                  J d$|	jh                  z  }
|jS                  |
      }|jL                  dk(  sJ |j                  j[                  |      jk                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)%Nr   r   ri   r?   r@   rA   rB   /admin/model1/   /admin/model1/new/
test1larger   zTest@TEST.comr2   rT   r   z2018-10-27 14:17:00zhttp://www.example.comz	127.0.0.1USDz#f0f0f0)r?   r@   rE   rG   r1   rH   rr   rs   rv   ry   rz   r{   r|   r}   data.  r   r   utf-8/admin/model1/edit/?id=%sz00:00:00
test1small
test2largezTest2@TEST.com__None)r?   r@   rG   r1   rH   rr   rs   rv   ry   rz   r{   r|   r}   ztest2@test.com/admin/model1/delete/?id=%s)6r   app_contextr   r   r&   add_viewr%   r'   r)   _primary_key_sortable_columns_create_form_class_edit_form_class_search_supported_filtersr?   field_classr   StringFieldr@   rA   TextAreaFieldrB   rG   r1   r   rH   rr   rs   rv   r   ry   rz   r{   r|   r}   test_clientgetstatus_coderw   rx   postdictr   strqueryrM   valuert   hexr   decoderi   count)appr   adminr   r   viewclientrvuuid_objr%   r*   new_uuid_objs               r/   
test_modelr      s   WNCU		 R5&r*vrzz2tzzV###yyH$$$}}(((  D((($00000$00000$00000$00000&&222$$000))))}}$$$ &&,,88F<N<NNNN&&,,88F<N<NNNN&&,,88F<P<PPPP&&,,88F<P<PPPP&&22>>&BTBTTTT&&33??<OOO&&11==MMM&&88DDTTT&&66BBlRRR&&77CC}TTT&&66BBfFXFXXXX&&55AAVEWEWWWW&&<<HHFL^L^^^^&&::FF&J\J\\\\&&77CCvGYGYYYY " ZZ()~~$$$ ZZ,-~~$$$ ::<[[ "1a=+'&", !!6 #H7&1$)!*  
& ~~$$$ 

  (..0{{m+++{{h&&&{{c!!!{{c!!!  $4444!![000<///&&+555$$**a///%%3H)IIII$$000##'????5../;>>>5,,-666%%))Y666 ZZ()~~$$$w 7777 *EHH4ZZ_~~$$$ bggnnW5555 zz|[[")5/?08.65=3;4636|3D249;7946%  & ~~$$$ 

  (..0{{l***{{l***{{b   {{b     $5555!!)))'''&&...$$,,,%%---$$444##+++**222((000%%--- ,ehh6[[~~$$$zz'--/1444eR5 R5 R5s   `)aa)raisesc                      t               \  } } G fddj                        }t        |      }|j                  |       y )Nc                   H    e Zd ZW  j                  W  j                        Zy)test_no_pk.<locals>.ModelN)r6   r7   r8   rg   rh   testr~   s   r/   r   r   :  s    yy$r0   r   )r   r   r   r   )r   r   r   r   r   s       @r/   
test_no_pkr   6  s8    WNCU% % 5!D	NN4r0   c            
      >   t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddgt        d            }|j                  |       t        ||j                  d|j                  |j                  gt        d            }|j                  |       t        |j                        dk(  sJ |j                  d	d
gk(  sJ | j                         }|j                  d      }|j                  j                  d      }	d|	v sJ d|	vsJ t        |j                        dk(  sJ |j                  d	d
gk(  sJ |j                  d      }|j                  j                  d      }	d|	v sJ d|	vsJ 	 d d d        y # 1 sw Y   y xY w)Nr?   rA   Column1r_   )column_listcolumn_labelsmodel1_2)r)   r   r   rK   )r?   r   rA   Test3r   r   Test2z/admin/model1_2/)r   r   r   r   r&   r   r   r?   rA   len_list_columnsr   r   r   r   )
r   r   r   r   r   r   view2r   r   r   s
             r/   test_list_columnsr  A  s   WNCU		 #&r* vrzz,3W+=-1	-BD 	t  

Z-3\\6<<,H.2.CE 	u4%%&!+++!!&:<N%OOOO"ZZ()ww~~g&D   d"""5&&'1,,,""';=O&PPPPZZ*+ww~~g&D   d"""?# # #s   E*FFc                  B   t               \  } }}| j                         5  t        |      \  }} |d      }|j                  j	                  |       |j                  j	                   |d|             |j                  j                          t        ||j                  dg      }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ |j                  j                  d      }	d|	v sJ 	 d d d        y # 1 sw Y   y xY w)	Nmodel1_val1model2_val1r   model1.test1)r   /admin/model2/r   r   )r   r   r   r&   addr   r   r   r   r   r   r   r   )
r   r   r   M1M2m1r   r   r   r   s
             r/   test_complex_list_columnsr  f  s    WNCU		 %r"B


r


r-34


 r2::,:+;=t"ZZ()~~$$$ww~~g&$$$'% % %s   C,DDc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  g d      }|j                  |       |j                  g dk(  sJ | j                         }|j                  d      }|j                  j                  d      }d|v sJ d|vsJ 	 d d d        y # 1 sw Y   y xY w)N)r@   rB   rH   rD   rE   rF   rr   rs   rv   ry   rz   r{   r|   r}   )column_exclude_list))r?   Test1r   )rC   
Bool Field)rG   zEmail Field)r1   zChoice Fieldr   r   r  r   )r   r   r   r   r&   r   r  r   r   r   r   	r   r   r   r   r   r   r   r   r   s	            r/   test_exclude_columnsr    s    WNCU		 #&r*BJJ!w
 	t OO	OO "ZZ()ww~~g&$d"""+# # #s   BB>>Cc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddg      }|j                  |       |j                  sJ t        |j                        dk(  sJ t        |j                  d   d   |j                        sJ t        |j                  d   d   |j                        sJ |j                  d   d   j                  dk(  sJ |j                  d   d   j                  dk(  sJ |j                  j                   |dd             |j                  j                   |d	d
             |j                  j                          | j                         }|j                  d      }|j                   j#                  d      }d|v sJ d	|vsJ |j                  d      }|j                   j#                  d      }d|vsJ d	|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r   column_searchable_listrK   r   r   model1-testr   model2-testr   z/admin/model2/?search=model1r   z/admin/model2/?search=9000)r   r   r   r   r&   r   r   r   _search_fields
isinstancerg   r'   r
  r   r   r   r   r   r  s	            r/   test_column_searchable_listr    s   WNCU		 %&r*vrzz7E{6SUt%%%%4&&'1,,,$--a03RYY???$--a03RYY???""1%a(--???""1%a(--<<<


vmT23


vmT23


"ZZ67ww~~g&$$$D(((ZZ45ww~~g&D((($$$;% % %s   GG;;Hc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  dg      }|j                  |       |j                  j                   |d             |j                  j                          | j                         }|j                  d      }|j                  j                  d      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr?   r  r  z$/admin/model1/?search=model1&foo=barr   ,<input type="hidden" name="foo" value="bar">r   r   r   r   r&   r   r
  r   r   r   r   r   )	r   r   r   r   r   view1r   r   r   s	            r/   test_extra_args_searchr!    s    WNCU		 F&r*

8?{D 	u


vm./


" ZZ>?ww~~g&=EEE!F F Fs   B6CC(c                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  dg      }|j                  |       |j                  j                   |dd             |j                  j                          | j                         }|j                  d      }|j                  j                  d      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr   column_filtersr  r   z"/admin/model2/?flt1_0=5000&foo=barr   r  r  )	r   r   r   r   r   r  r   r   r   s	            r/   test_extra_args_filterr%    s    WNCU		 F&r*

0;@u


vmT23


" ZZ<=ww~~g&=EEEF F F   B7C  C)c                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  dg      }|j                  |       t        ||j                  |j                  g      }|j                  |        |d      } |d      }|j                  j                  |       |j                  j                  |       |j                  j                   |d|             |j                  j                   |d|             |j                  j                          | j                         }	|	j                  d      }
|
j                  j                  d	      }d|v sJ d|vsJ |	j                  d
      }
|
j                  j                  d	      }d|v sJ d|vsJ 	 d d d        y # 1 sw Y   y xY w)Nr  r  zmodel1-test1-valzmodel1-test2-valzmodel2-test1-valr  zmodel2-test2-valz"/admin/model2/?search=model1-test1r   z"/admin/model1/?search=model2-test1)r   r   r   r   r&   r   r   r
  r   r   r   r   r   )r   r   r   r   r   r   r  r  m2r   r   r   s               r/   test_complex_searchable_listr)    s   WNCU		 .&r*vrzz7E6FHt

8>8K8K7LNu&'&'


r


r


v0<=


v0<=


" ZZ<=ww~~g&!T)))!--- ZZ<=ww~~g&!T)))!---=. . .s   FF<<Gc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddg      }|j                  |       |j                  j                   |d             |j                  j                          | j                         }|j                  d      }|j                  j                  d      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr?   zmodel2.string_fieldr  zmagic stringz/admin/model1/?search=magicr   r  r  s	            r/   -test_complex_searchable_list_missing_childrenr+    s    WNCU		 &&r*vrzz#*,A7CD 	t


vn-.


"ZZ56ww~~g&%%%& & &r&  c                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddg      }|j                  |       t        ||j                  dg      }|j                  |       t        |||       | j                         }|j                  d      }|j                  j                  d      }d|v sJ |j                  dd	d
d      }|j                  j                  d      }d|k(  sJ |j                  d      }|j                  j                  d      }d
|v sJ |j                  dd	dd      }|j                  dk(  sJ |j                  dddd      }|j                  j                  d      }|j                  dk(  sJ |j                  dd	dd      }|j                  j                  d      }d|vsJ |j                  dd	dd      }|j                  j                  d      }d|k(  sJ |j                  d      }|j                  j                  d      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nr?   rH   column_editable_listr   r   r   zdata-role="x-editable"/admin/model1/ajax/update/1change-success-1)list_form_pkr?   r   Record was successfully saved.zproblematic-input)r2  rH   i  1000)r2  r@   z/admin/model2/ajax/update/3)r2  r   r	  r   )r   r   r   r   r&   r   r   r   r   r   r   r   r   r  s	            r/   test_column_editable_listr6  !  sq   WNCU		 A%&r*vrzz5<l4KMtvrzz
StFF#" ZZ()ww~~g&'4/// [[5'=
[  ww~~g&/4777 ZZ()ww~~g&!T))) [[5-=
[  ~~$$$ [[5"(=
[  ww~~g&~~$$$ [[5(=
[  ww~~g&"$...[[5=
[  ww~~g&/4777 ZZ()ww~~g&$$$CA% A% A%s   H'IIc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                        }|j                  |       t        ||j                  d      }|j                  |       t        ||j                  ddgd      }|j                  |       t        |||       | j                         }|j                  d      }	|	j                  j                  d      }
d|
vsJ |j                  d	      }	|	j                  j                  d      }
d
|
v sJ |j                  d      }	|	j                  dk(  sJ |j                  d      }	|	j                  j                  d      }
d|
v sJ d|
v sJ d|
v sJ |j                  d      }	|	j                  j                  d      }
d|
v sJ d|
v sJ d|
vsJ 	 d d d        y # 1 sw Y   y xY w)NT)can_view_detailsr   sf_view)r8  column_details_listr)   r   r   z/admin/model1/details/r	  z/admin/model2/details/z4/admin/model1/details/?url=%2Fadmin%2Fmodel1%2F&id=1r   z4/admin/model2/details/?url=%2Fadmin%2Fmodel2%2F&id=1zString Fieldr   r   z6/admin/sf_view/details/?url=%2Fadmin%2Fsf_view%2F&id=1)r   r   r   r   r&   r   r   r   r   r   r   r   )r   r   r   r   r   view_no_detailsview_w_detailsstring_field_viewr   r   r   s              r/   test_details_viewr>  h  s   WNCU		 /)&r*)&"**=' )dS~& ,FBJJ=AAO@P5>@ 	()FF#" ZZ()ww~~g&'t333 ZZ()ww~~g&'4/// ZZNO~~$$$ ZZNOww~~g&%%%$$$$$$ ZZPQww~~g&%%%$$$D(((_/) /) /)s   F*GGc                     t               \  } }| j                         5   G fddj                        }j                          t	        |j
                  dg      }|j                  |       j
                  j                   |dd             j
                  j                   |dd             j
                  j                          | j                         }|j                  d	dd
d      }|j                  j                  d      }d|k(  sJ |j                  d      }|j                  j                  d      }d
|v sJ 	 ddd       y# 1 sw Y   yxY w)zF Tests editable list view + a primary key with special characters
    c                       e Zd ZddZW  j	                  W  j                  d      d      ZW  j	                  W  j                  d            Zy).test_editable_list_special_pks.<locals>.Model1Nc                      || _         || _        y r    )ri   val1)r$   ri   rC  s      r/   r#   z7test_editable_list_special_pks.<locals>.Model1.__init__  s     	r0   rS   TrQ   )NN)r6   r7   r8   r#   rg   rj   ri   rC  r~   s   r/   r   rA    s:    ! 299R=d;B99RYYr]+Dr0   r   rC  r-  z1-1r?   z1-5r@   r/  r1  )r2  rC  r   r   r3  r   N)r   r   r   r   r   r&   r   r
  r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s          @r/   test_editable_list_special_pksrD    s)    WNCU		 *	,RXX 	, 	vrzzQt


veW-.


veW-.


" [[5!&=
[  ww~~g&/4777 ZZ()ww~~g&!T)))?* * *s   D*EEc            	      6   t               \  } }}| j                         5  t        |      \  }}t        ||j                  dg      }|j                  |       | j                         }t        |j                        dk(  sJ t        ||j                  dg      }t        ||j                  dgd      }|j                  |       t        ||j                  dg      }	|j                  |	       t        ||j                  dgd	      }
|j                  |
       t        ||j                  d
gd      }|j                  |       t        ||j                  ddgg d      }|j                  |       t        ||j                  dgdd      }|j                  |       t        ||j                  g dd      }|j                  |       t        ||j                  dgd      }|j                  |       t        ||j                  t        j                  |j                  d      gd      }|j                  |       |j                  d   D cg c]  }|d   |d   f c}g dk(  sJ |j                  d   D cg c]  }|d   |d   f c}g dk(  sJ |j                  d   D cg c]  }|d   |d   f c}g dk(  sJ |j                  d   D cg c]  }|d   |d   f c}g d k(  sJ |j                  d!   D cg c]  }|d   |d   f c}g d"k(  sJ |j                  d#   D cg c]  }|d   |d   f c}d$d%gk(  sJ |j                  d&   D cg c]  }|d   |d   f c}g d'k(  sJ |j                  d(   D cg c]  }|d   |d   f c}g d)k(  sJ |j                  d*   D cg c]  }|d   |d   f c}g d+k(  sJ |j                  d,   D cg c]  }|d   |d   f c}g d-k(  sJ |j                  d.   D cg c]  }|d   |d   f c}g d/k(  sJ |j                  d0   D cg c]  }|d   |d   f c}g d1k(  sJ |j                  d2   D cg c]  }|d   |d   f c}g d3k(  sJ |j                  d4   D cg c]  }|d   |d   f c}g d5k(  sJ t        ||j                  dg      }|j                  d6   D cg c]  }|d   |d   f c}d7d8gk(  sJ t        ||j                  dd9gd:d;d<=      }t        |j                  j                               d:d;gk(  sJ t        |||       |j!                  d>      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dB|vsJ |j!                  dC      }|j"                  d?k(  sJ |j$                  j'                  d@      }dB|v sJ dA|vsJ |j                  d   D cg c]  }|d   |d   f c}g dk(  sJ |j!                  dD      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dB|vsJ |j!                  dE      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dB|v sJ |j!                  dF      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dB|vsJ |j!                  dG      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dB|v sJ |j!                  dH      }|j"                  d?k(  sJ |j$                  j'                  d@      }dI|v sJ dJ|vsJ dB|vsJ |j!                  dK      }|j"                  d?k(  sJ |j$                  j'                  d@      }dI|vsJ dJ|v sJ dB|v sJ |j!                  dL      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|v sJ dN|vsJ dO|vsJ |j!                  dP      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|vsJ dN|v sJ dO|v sJ |	j                  dQ   D cg c]  }|d   |d   f c}g dRk(  sJ |j!                  dS      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|v sJ dU|vsJ |j!                  dV      }|j"                  d?k(  sJ |j$                  j'                  d@      }dW|v sJ dU|vsJ |j!                  dX      }|j"                  d?k(  sJ |j$                  j'                  d@      }dY|v sJ |j!                  dZ      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|vsJ dU|v sJ |j!                  d[      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|vsJ dU|v sJ |j!                  d\      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|v sJ dU|vsJ |j!                  d]      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|v sJ dT|vsJ dU|vsJ |j!                  d^      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|vsJ dT|v sJ dU|v sJ |j!                  d_      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|vsJ dT|v sJ dU|v sJ |j!                  d`      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dW|v sJ |j!                  da      }|j"                  d?k(  sJ |j$                  j'                  d@      }dY|v sJ |j!                  db      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|v sJ dT|vsJ dU|vsJ |
j                  dc   D cg c]  }|d   |d   f c}d7d8gk(  sJ |j!                  dd      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|vsJ dT|vsJ |j!                  de      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|v sJ dT|v sJ |j!                  df      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|v sJ dT|v sJ |j!                  dg      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|vsJ dT|vsJ |j                  dh   D cg c]  }|d   |d   f c}g dRk(  sJ |j!                  di      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|v sJ dU|vsJ |j!                  dj      }|j"                  d?k(  sJ |j$                  j'                  d@      }dY|v sJ |j!                  dk      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|vsJ dU|v sJ |j!                  dl      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|vsJ dU|v sJ |j!                  dm      }|j"                  d?k(  sJ |j$                  j'                  d@      }dT|v sJ dU|vsJ |j!                  dn      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|v sJ dT|vsJ dU|vsJ |j!                  do      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|vsJ dT|v sJ dU|v sJ |j!                  dp      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|vsJ dM|vsJ dT|v sJ dU|v sJ |j!                  dq      }|j"                  d?k(  sJ |j$                  j'                  d@      }dY|v sJ |j!                  dr      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|v sJ dT|vsJ dU|vsJ |j!                  ds      }|j"                  d?k(  sJ |j$                  j'                  d@      }dA|v sJ dM|vsJ dT|vsJ dU|vsJ |j!                  dt      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ dB|vsJ |j                  du   D cg c]  }|d   |d   f c}g dvk(  sJ |j                  dw   D cg c]  }|d   |d   f c}g dxk(  sJ |j                  dy   D cg c]  }|d   |d   f c}g dzk(  sJ |j!                  d{      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||v sJ d}|vsJ |j!                  d~      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||vsJ d}|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||v sJ d}|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||vsJ d}|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||v sJ d}|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d||vsJ d}|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ d||vsJ d}|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|vsJ d||v sJ d}|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ d|vsJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|vsJ d|v sJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ d|vsJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|vsJ d|v sJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|v sJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }d|vsJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ d|vsJ d|vsJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|vsJ d|v sJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|vsJ d|v sJ d|v sJ |j!                  d      }|j"                  d?k(  sJ |j$                  j'                  d@      }dJ|v sJ d|vsJ d|vsJ |j!                  d      }|j$                  j'                  d@      }dJ|v sJ dB|vsJ 	 d d d        y c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w c c}w # 1 sw Y   y xY w)Nr?   r#     r   _strings)r$  r)   r   rC   _boolsr   _float_model2model1.bool_field)r   	model1.idrK  )r)   r$  r   _model3T)r$  r)   named_filter_urls)rD   rF   rE   	_datetimerH   
_enumfieldr  _relation_testindex	operation))r   contains)r   not contains)rK   equals)r   	not equalr   empty   in list   not in listzModel1 / Test1zModel1 / Test2))rF  rT  )r   rU  )r   rV  )r   rW  )r   rY  )   r\  )   r_  zModel1 / Test3))   rT  )   rU  )r   rV  )r   rW  )   rY  )   r\  )rS   r_  zModel1 / Test4))   rT  )   rU  )   rV  )   rW  )   rY  )   r\  )   r_  zModel1 / Bool Field)   rV  )   rW  zModel1 / Date Field))   rV  )   rW  )    greater than)!   smaller than)"   between)#   not between)$   rY  zModel1 / Time Field))%   rV  )&   rW  )'   rr  )(   rt  ))   rv  )*   rx  )+   rY  zModel1 / Datetime Field)),   rV  )-   rW  ).   rr  )/   rt  )0   rv  )1   rx  )2   rY  zModel1 / Email Field))3   rT  )4   rU  )5   rV  )6   rW  )7   rY  )8   r\  )9   r_  zModel1 / Enum Field)):   rV  );   rW  )<   rY  )=   r\  )>   r_  zModel1 / Choice Field))?   rT  )@   rU  )A   rV  )B   rW  )C   rY  )D   r\  )E   r_  zModel1 / Sqla Utils Choice))F   rV  )G   rW  )H   rT  )I   rU  )J   rY  zModel1 / Sqla Utils Enum))K   rV  )L   rW  )M   rT  )N   rU  )O   rY  zmodel1 / Model1 / Bool Fieldr   rV  r   rW  r   zTest Filter #1zTest Filter #2)rK  r   )r$  r   z!/admin/model1/?flt0_0=test1_val_1r   r   r   r   z!/admin/model1/?flt0_6=test1_val_1z#/admin/_strings/?flt0_0=test1_val_1z#/admin/_strings/?flt0_1=test1_val_1z#/admin/_strings/?flt0_2=test1_val_1z#/admin/_strings/?flt0_3=test1_val_1z/admin/_strings/?flt0_4=1r   r   z/admin/_strings/?flt0_4=0z1/admin/_strings/?flt0_5=test1_val_1%2Ctest1_val_2r   r   r   z1/admin/_strings/?flt0_6=test1_val_1%2Ctest1_val_2z	Int Field)r  r  rK   rr  r   rt  rX  rZ  r]  z/admin/model2/?flt0_0=5000r   r   z)/admin/model2/?flt0_0=6169453081680413441r   z/admin/model2/?flt0_0=badvalzInvalid Filter Valuez/admin/model2/?flt0_1=5000z/admin/model2/?flt0_2=6000z/admin/model2/?flt0_3=6000z/admin/model2/?flt0_4=1z/admin/model2/?flt0_4=0z!/admin/model2/?flt0_5=5000%2C9000z)/admin/model2/?flt0_5=6169453081680413441z#/admin/model2/?flt0_5=5000%2Cbadvalz!/admin/model2/?flt0_6=5000%2C9000r  z/admin/_bools/?flt0_0=1z/admin/_bools/?flt0_0=0z/admin/_bools/?flt0_1=1z/admin/_bools/?flt0_1=0zFloat Fieldz/admin/_float/?flt0_0=25.9z/admin/_float/?flt0_0=badvalz/admin/_float/?flt0_1=25.9z/admin/_float/?flt0_2=60.5z/admin/_float/?flt0_3=60.5z/admin/_float/?flt0_4=1z/admin/_float/?flt0_4=0z!/admin/_float/?flt0_5=25.9%2C75.5z#/admin/_float/?flt0_5=25.9%2Cbadvalz!/admin/_float/?flt0_6=25.9%2C75.5z/admin/_model2/?flt1_0=1z-/admin/_model3/?flt1_test1_equals=test1_val_1z
Date Field)r  r  r  r  )r   rv  )r[  rx  )r^  rY  zDatetime Field))rF  rV  )r   rW  )r   rr  )r   rt  )r   rv  )r`  rx  )ra  rY  z
Time Field))rb  rV  )rc  rW  )r   rr  )r   rt  )rd  rv  )re  rx  )rS   rY  z#/admin/_datetime/?flt0_0=2014-11-17r   r   z#/admin/_datetime/?flt0_1=2014-11-17z#/admin/_datetime/?flt0_2=2014-11-16z#/admin/_datetime/?flt0_3=2014-11-16z1/admin/_datetime/?flt0_4=2014-11-13+to+2014-11-20z1/admin/_datetime/?flt0_5=2014-11-13+to+2014-11-20z/admin/_datetime/?flt0_6=1z/admin/_datetime/?flt0_6=0z0/admin/_datetime/?flt0_7=2014-04-03+01%3A09%3A00r   r   z0/admin/_datetime/?flt0_8=2014-04-03+01%3A09%3A00z0/admin/_datetime/?flt0_9=2014-04-03+01%3A08%3A00z1/admin/_datetime/?flt0_10=2014-04-03+01%3A08%3A00zL/admin/_datetime/?flt0_11=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59zL/admin/_datetime/?flt0_12=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59z/admin/_datetime/?flt0_13=1z/admin/_datetime/?flt0_13=0z&/admin/_datetime/?flt0_14=11%3A10%3A09r   r   z&/admin/_datetime/?flt0_15=11%3A10%3A09z&/admin/_datetime/?flt0_16=11%3A09%3A09z&/admin/_datetime/?flt0_17=11%3A09%3A09z6/admin/_datetime/?flt0_18=10%3A40%3A00+to+11%3A50%3A59z6/admin/_datetime/?flt0_19=10%3A40%3A00+to+11%3A50%3A59z/admin/_datetime/?flt0_20=1z/admin/_datetime/?flt0_20=0z#/admin/_enumfield/?flt0_0=model1_v1r   r   z#/admin/_enumfield/?flt0_1=model1_v1z/admin/_enumfield/?flt0_2=1z/admin/_enumfield/?flt0_2=0z//admin/_enumfield/?flt0_3=model1_v1%2Cmodel1_v2z//admin/_enumfield/?flt0_4=model1_v1%2Cmodel1_v2z)/admin/_relation_test/?flt1_0=test1_val_1)r   r   r   r   r&   r   r   r   r   r   FilterEqualr?   _filter_groupslistkeysr   r   r   r   r   )r   r   r   r   r   r   r   r  view5view6view7view8view9view10view11view12view13fview3view4r   r   s                         r/   test_column_filtersr    s    WNCU		 W)&r*BJJ#9
 	u"5>>"a'''  

08z;  

07y:Ou

0;}>u

L>)13u

M?)13uBJJ/0		
 	u BJJ#9"	
 	v 0^*57 	v 1=*68 	v %,%8%8w%O1#-=? 	v 493G3G3QRaaj!K.)R	
		 493G3GHY3Z[aaj!K.)[	
		 493G3GHY3Z[aaj!K.)[	
		 493G3GHY3Z[aaj!K.)[	
		 493G3GHY3Z[aaj!K.)[	
		 493G3GH^3_`aaj!K.)`"	 493G3GH^3_`aaj!K.)`	
		 493G3GH^3_`aaj!K.)`	
		 493G3GHb3cdaaj!K.)d	
		 493G3GH_3`aaaj!K.)a	
		 493G3GH^3_`aaj!K.)`	 493G3GH`3abaaj!K.)b	
		 493G3GHe3fgaaj!K.)g	 493G3GHc3deaaj!K.)e	  

0C/DF 493G3GHg3hiaaj!K.)i 	  

0C^/T9I4D/"# E((--/05FHY4ZZZZFF# ZZ;<~~$$$ww~~g& $$$D((( ZZ;<~~$$$ww~~g&$$$D((( 493G3G3QRaaj!K.)R	
		 ZZ=>~~$$$ww~~g&$$$D((( ZZ=>~~$$$ww~~g&D((($$$ ZZ=>~~$$$ww~~g&$$$D((( ZZ=>~~$$$ww~~g&D((($$$ ZZ34~~$$$ww~~g&d"""D(((D((( ZZ34~~$$$ww~~g&$&&&$$$$$$ ZZKL~~$$$ww~~g&$$$$$$D(((D((( ZZKL~~$$$ww~~g&D(((D((($$$$$$ 493G3G3UVaaj!K.)V	
		 ZZ45~~$$$ww~~g&$$$D((( ZZCD~~$$$ww~~g&$$$D((( ZZ67~~$$$ww~~g&%--- ZZ45~~$$$ww~~g&D((($$$ ZZ45~~$$$ww~~g&D((($$$ ZZ45~~$$$ww~~g&$$$D((( ZZ12~~$$$ww~~g&$$$$$$D(((D((( ZZ12~~$$$ww~~g&D(((D((($$$$$$ ZZ;<~~$$$ww~~g&D(((D((($$$$$$ ZZCD~~$$$ww~~g&D((($$$ ZZ=>~~$$$ww~~g&%--- ZZ;<~~$$$ww~~g&$$$$$$D(((D((( 493G3G3VWaaj!K.)W 	 ZZ12~~$$$ww~~g&$$$D(((D((( ZZ12~~$$$ww~~g&D((($$$$$$ ZZ12~~$$$ww~~g&D((($$$$$$ ZZ12~~$$$ww~~g&$$$D(((D((( 493G3G3WXaaj!K.)X	
		 ZZ45~~$$$ww~~g&$$$D((( ZZ67~~$$$ww~~g&%--- ZZ45~~$$$ww~~g&D((($$$ ZZ45~~$$$ww~~g&D((($$$ ZZ45~~$$$ww~~g&$$$D((( ZZ12~~$$$ww~~g&$$$$$$D(((D((( ZZ12~~$$$ww~~g&D(((D((($$$$$$ ZZ;<~~$$$ww~~g&D(((D((($$$$$$ ZZ=>~~$$$ww~~g&%--- ZZ;<~~$$$ww~~g&$$$$$$D(((D((( ZZ23~~$$$ww~~g&$$$D(((D(((D((( ZZGH~~$$$ww~~g&$$$D((( 4:3H3H3WXaaj!K.)X	
		 4:3H3HIZ3[\aaj!K.)\	
		 4:3H3H3WXaaj!K.)X	
		 ZZ=>~~$$$ww~~g&d"""$&&& ZZ=>~~$$$ww~~g&$&&&d""" ZZ=>~~$$$ww~~g&d"""$&&& ZZ=>~~$$$ww~~g&$&&&d""" ZZKL~~$$$ww~~g&d"""$&&& ZZKL~~$$$ww~~g&$&&&d""" ZZ45~~$$$ww~~g&$$$$&&&$&&& ZZ45~~$$$ww~~g&D(((d"""d""" ZZJK~~$$$ww~~g&$&&&d*** ZZJK~~$$$ww~~g&d***$&&& ZZJK~~$$$ww~~g&$&&&d*** ZZKL~~$$$ww~~g&d***$&&& ZZfg~~$$$ww~~g&$&&&d*** ZZfg~~$$$ww~~g&d***$&&& ZZ56~~$$$ww~~g&$$$d***d*** ZZ56~~$$$ww~~g&D((($&&&$&&& ZZ@A~~$$$ww~~g&$&&&d*** ZZ@A~~$$$ww~~g&d***$&&& ZZ@A~~$$$ww~~g&$&&&d*** ZZ@A~~$$$ww~~g&d***$&&& ZZPQ~~$$$ww~~g&$&&&d*** ZZPQ~~$$$ww~~g&d***$&&& ZZ56~~$$$ww~~g&$$$d***d*** ZZ56~~$$$ww~~g&D((($&&&$&&& ZZ=>~~$$$ww~~g&d"""$&&& ZZ=>~~$$$ww~~g&$&&&d""" ZZ56~~$$$ww~~g&$$$$&&&$&&& ZZ56~~$$$ww~~g&D(((d"""d""" ZZIJ~~$$$ww~~g&D(((d"""d""" ZZIJ~~$$$ww~~g&$$$$&&&$&&& ZZCDww~~g&$$$D(((oW) W)N S \ \ \ \ a a a e b a c h f jL SV WN XP YR Y ] YUW) W)sX  H2AmAk("Am=Ak-Am)Ak2:AmAk7&AmAk<Am-Al>AmAl*AmAlAm1AlAmAl.Am	AlAm5AlAm!Al$2AmAl)4AmAl.#DAm%Al36JAm=Al8N+Am9Al=
EAm!Am2N7AmE)AmE:AmFAmF&AmGAmGdAmk(A.AmmAmc                  $   t               \  } }}| j                         5  t        |      \  }}t        ||j                  |j
                  g      }|j                  |       t        |j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr#  rF  )	r   r   r   r   r&   r?   r   r   r   )r   r   r   r   r   r   s         r/   test_column_filters_sqla_objr  !  s}    WNCU		 	'&r*BJJ"LL>
 	t4==!Q&&&	' 	' 	's   ABBc            
         t               \  } }| j                         5   G fddj                        }j                          t	        j
                  |d      sJ t	        j
                  |d      sJ t	        j
                  |d      rJ t	        j
                  |d      rJ j                  j                   |ddd	d	
             j                  j                   |dddd
             j                  j                          | j                         }t        |j                  dt        j                  |j                  d      gdg      }|j                  |       |j                  d      }|j                   dk(  sJ |j"                  j%                  d      }d|v sJ d|vsJ |j                  d      }|j                   dk(  sJ |j'                  dd d d d       \  }}t)        |      dk(  sJ |d   j*                  dk(  sJ |d   j*                  dk(  sJ |j                  d      }|j                   dk(  sJ |j"                  j%                  d      }d|v sJ d|vsJ 	 d d d        y # 1 sw Y   y xY w)Nc                   B   e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        ZW  j                  W  j                        ZW  j                  W  j                        Z	e
d        Ze
d        Zej                   fd       Zy)$test_hybrid_property.<locals>.Model1TrQ   c                 4    | j                   | j                  z  S r    )widthheightr`   s    r/   number_of_pixelsz5test_hybrid_property.<locals>.Model1.number_of_pixels:  s    zzDKK//r0   c                 4    t        | j                               S r    )r   r  r`   s    r/   number_of_pixels_strz9test_hybrid_property.<locals>.Model1.number_of_pixels_str>  s    400233r0   c                 ^    t        | j                  | j                  z  j                        S r    )r   r  r  rj   )clsr   s    r/   r  z9test_hybrid_property.<locals>.Model1.number_of_pixels_strB  s!    CII

2BII>>r0   N)r6   r7   r8   rg   rh   ri   rj   r'   r  r  r   r  r  
expressionr~   s   r/   r   r  4  s    2::48B99RYY'DIIbjj)EYYrzz*F0 0 4 4 ",,? -?r0   r   r  r  r  r  r   
test_row_1rj  )ri   r'   r  r  rK   
test_row_2r   zNumber of Pixels)column_default_sortr$  r  z/admin/model1/?flt0_0=600r   r   z/admin/model1/?sort=0r   z/admin/model1/?search=100)r   r   r   r   r   is_hybrid_propertyr&   r
  r   r   r   r   IntGreaterFilterr  r   r   r   r   r   get_listr   r'   )	r   r   r   r   r   r   r   _r   s	           @r/   test_hybrid_propertyr  0  s\   WNCU		 ?(	?RXX 	?$ 	''0BCCC''0FGGG++FH===++FG<<<


vRKL


vRKL


"BJJ 2#44V5L5L5GI J$:#=
 	t ZZ34~~$$$ww~~g&t###4''' ZZ/0~~$$$--4tT:44yA~~Aw|||+++Aw|||+++ ZZ34~~$$$ww~~g&t###4'''?( ?( ?(s   II55I>c                     t               \  } }| j                         5   G fddj                        } G fddj                        }j                          t	        j
                  |d      sJ t	        j
                  |d      rJ j                  j                   |ddd	
             j                  j                   |ddd
             j                  j                   |ddd             j                  j                   |ddd             j                  j                   |ddd             j                  j                          | j                         }t        |j                  dd      }|j                  |       |j                  d      }|j                  dk(  sJ |j                  j                  d      }d|v sJ d|v sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        ZW  j                  W  j                        Ze	d        Z
y)+test_hybrid_property_nested.<locals>.Model1TrQ   c                 N    dj                  | j                  | j                        S )Nz{} {})format	firstnamelastnamer`   s    r/   fullnamez4test_hybrid_property_nested.<locals>.Model1.fullname  s    ~~dnndmmDDr0   N)r6   r7   r8   rg   rh   ri   rj   r  r  r   r  r~   s   r/   r   r  z  sQ    2::48B		")),Iyy+HE Er0   r   c                   0   e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        ZW  j                  W  j                  W  j                  dd            Z	W  j                  dW  j                  d      d	      Zy
)+test_hybrid_property_nested.<locals>.Model2TrQ   rL  CASCADE)ondeleter   tilesF)r   uselistN)r6   r7   r8   rg   rh   ri   rj   r'   r   owner_idr   r   ownerr~   s   r/   r   r    sk    2::48B99RYY'DyyR]];QZ]-[\HOOHbjj6ISXOYEr0   r   owner.fullnamezowner.firstnamer   JohnDow)ri   r  r  rK   JimSmithpencil)ri   r'   r  keyr   map)ri   r'   r  ri   )r   r  r	  r   r   zJohn Dowz	Jim Smith)r   r   r   r   r   r  r&   r
  r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   s	           @r/   test_hybrid_property_nestedr  u  s   WNCU		 *#	ERXX 	E	ZRXX 	Z 	''0@AAA++F4EFFF


vfuEF


vegFG


vA>?


v;<


v;<


"BJJ8 $

 	tZZ()~~$$$ww~~g&T!!!d"""U*# *# *#s   G G**G3c                  6   t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddgdg      }|j                  |       |j                  j                   |d             |j                  j                   |d             |j                  j                   |d             |j                  j                   |d             |j                  j                          | j                         }|j                  d      }|j                  j                  d	      }d|v sJ d|vsJ |j                  d
      }|j                  j                  d	      }d|vsJ d|v sJ |j                  d      }|j                  j                  d	      }d|vsJ d|v sJ d|v sJ |j                  d      }|j                  j                  d	      }d|v sJ d|vsJ |j                  d      }|j                  j                  d	      }d|vsJ |j                  d      }|j                  j                  d	      }d|v sJ |j                  d      }|j                  j                  d	      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)NrK   r?   )	page_sizer  r$  data1data2data3data4r   r   z/admin/model1/?page=1z/admin/model1/?sort=0&desc=1z/admin/model1/?search=data1z/admin/model1/?search=^data1z!/admin/model1/?flt0=0&flt0v=data1z!/admin/model1/?flt0=1&flt0v=data1r  r  s	            r/   test_url_argsr    sa   WNCU		 5&r*vrzz)*7>i/6i9 	t


vg'


vg'


vg'


vg'


"ZZ()ww~~g&$d""" ZZ/0ww~~g&d"""$ ZZ67ww~~g&d"""$$ ZZ56ww~~g&$d"""ZZ67ww~~g&d""" ZZ;<ww~~g&$ ZZ;<ww~~g&$k5 5 5s   I&JJc                     t               \  } }| j                         5   G fddj                        }j                          t	        |j
                  ddg      }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ |j                  dt        d	d
            }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ |j                  j                  d      }d	|v sJ |j                  d      }|j                  dk(  sJ |j                  j                  d      }d
|v sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        Zy)test_non_int_pk.<locals>.ModelTrQ   Nr6   r7   r8   rg   rj   ri   r   r~   s   r/   r   r    +    299$7B99RYY'Dr0   r   ri   r   form_columnsz/admin/model/r   z/admin/model/new/r?   r@   )ri   r   r   r   r   z/admin/model/edit/?id=test1)r   r   r   r   r   r&   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s          @r/   test_non_int_pkr    sG   WNCU		 	(BHH 	( 	ubjjf~Nt"ZZ(~~$$$[[,"gG<  >~~$$$ZZ(~~$$$ww~~g&$ZZ56~~$$$ww~~g&$9  s   D:E$$E-c                  R   t               \  } }| j                         5   G fddj                         G fddj                        }j                          t	        j
                  dd      }t	        j
                  dd	
      }t	        |j
                  d      }|j                         }|j                         }|j                         }d|j                  v sJ d|j                  v sJ d|j                  vsJ d|j                  vsJ t        |j                        j                  dk(  sJ t        |j                        j                  dk(  sJ t        |j                        j                  dk(  sJ t        |j                        j                  dk(  sJ t        |j                        j                  dk(  sJ t	        j
                  dj                  g      }	|	j                         }
d|
j                  v sJ 	 d d d        y # 1 sw Y   y xY w)Nc                   4   e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        ZW  j                  W  j                        Z	W  j                  W  j                        ZW  j                  W  j                        Zy) test_form_columns.<locals>.ModelTrQ   N)r6   r7   r8   rg   rj   ri   rh   r   rq   rF   rm   
text_fieldexcluded_columnr~   s   r/   r   r    sa    299$7B		"**-IYYr{{3N2>>2J ii		2Or0   r   c                       e Zd Z G d dej                        ZW j                  W j                  d      ZW j                  W j                  W j                  W  j                              ZW j                  W  d      ZW j                  W j	                  dd      d	      ZW j                  W j                  d	      ZW j                   ed
dg            ZW j                   eeW j                                     Zy)%test_form_columns.<locals>.ChildModelc                       e Zd ZdZdZy)1test_form_columns.<locals>.ChildModel.EnumChoicesr   rK   NrL   rO   r0   r/   rP   r     s    r0   rP   TrQ   r   r   rT   rU   rV   rX   rY   rZ   N)r6   r7   r8   re   rf   rP   rg   rj   ri   rh   r   model_idr   r%   rH   r1   r   rr   rs   )r   r   s   r/   
ChildModelr    s    dii  299$7ByyR]]588-DEHOOE9O=E277;#DtTJ99RYY9>L "		*-.6 + ! !ii
;RZZ\(RSOr0   r  r   )r   r  )r)   r  r  )r  )r)   form_excluded_columnsr  r)   r   r  rF   r  QuerySelectFieldr   )r   r   r   r   r   r&   create_form_fieldstyper%   r6   r1   rH   rr   rs   r   )r   r   r  r   r  r  form1form2form3r  form4r   r   s              @@r/   test_form_columnsr    s   WNCU		 ;,	3BHH 	3	T 	T  	rzzG-HJrzzG6JL
BJJI!!#!!#!!#emm+++u}},,,u}}444 555 EKK ))-???? E&&'00NBBB E$$%...@@@ E++,55GGGE))*33~EEE  rzzG.3oo->@!!#emm+++w;, ;, ;,s   G2HH&c                      t               \  } }}| j                         5  t        |      \  }}t        ||j                  dg      }|j                          d d d        y # 1 sw Y   y xY w)Nr  r  )r   r   r   r   r&   r  )r   r   r   r  r  r   s         r/   test_complex_form_columnsr  C  s_    WNCU		 r"B r2::^<LM  s   8A  A)c                     t               \  } }| j                         5   G fddj                        }j                          ddt	        j
                  d      gii}t        |j                  |      }|j                  |       |j                         }t        |j                  j                        dk(  sJ |j                         }t        |j                  j                        dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                  d      Zy)test_form_args.<locals>.ModelTrQ   FrV   Nr  r~   s   r/   r   r  S  s/    299$7B99RYY97Dr0   r   r   r   )	form_argsrK   )r   r   r   r   r   Regexpr   r&   r   r  r   r   	edit_form)r   r   r   shared_form_argsr   r  r  r   s          @r/   test_form_argsr  O  s    WNCU		 3	8BHH 	8 	"\J4E4Ef4M3N$OPubjj<LMt&&(;##../1444 NN$	9>>,,-222#3 3 3s   CC==Dc            	      ^   t               \  } }| j                         5   G fddj                        }j                          t	        |j
                  d      }t	        |j
                  dt        t        j                              }|j                  |       |j                  |       |j                  j                  j                  t        j                  k(  sJ |j                  j                  j                  t        j                  k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        Zy)!test_form_override.<locals>.ModelTrQ   Nr  r~   s   r/   r   r  j  r  r0   r   r   r  r  r   )r)   form_overrides)r   r   r   r   r   r&   r   r   	FileFieldr   r   r   r   r   )r   r   r   r   r  r   s        @r/   test_form_overrider  f  s    WNCU		 M	(BHH 	( 	rzzGDrzzGTX^d^n^nTopuu'',,88F<N<NNNN'',,88F<L<LLLLM M Ms   C9D##D,c                  r   t               \  } }| j                         5   G fddj                         G fddj                        }j                          t	        j
                  d      }t	        |j
                  d      }|j                  |       |j                  |        d	      } ||
      }j
                  j                  |       j
                  j                  |       j
                  j                          |j                  |k(  sJ |j                  |k(  sJ |j                  j                  j                  j                  j                  rJ |j                  j                  j                  j                  j                  rJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                        Zy)"test_form_onetoone.<locals>.Model1TrQ   N)r6   r7   r8   rg   rh   ri   rj   r   r~   s   r/   r   r!  }  s+    2::48B99RYY'Dr0   r   c                      e Zd ZW j                  W j                  d      ZW j                  W j                  W j                  W  j
                              ZW j                  W  W j                  dd            Z
y)"test_form_onetoone.<locals>.Model2TrQ   r   F)r  r   N)r6   r7   r8   rg   rh   ri   r   r   r   r   r   r   s   r/   r   r#    sZ    2::48B		"**bmmFII.FGI__VRZZRWZ5X_YFr0   r   r   r  r  r   r  r  )r   r   r   r   r   r&   r   r
  r   r   r   r   r   widgetmultiple)	r   r   r   r   r  r   r   r   r   s	          @@r/   test_form_onetooner&  y  sU   WNCU		 O	(RXX 	(	ZRXX 	Z 	

WE

WEuuV$v&


v


v


}}&&&}}&&&++22>>EENNNN++22>>EENNNNN9O O Os   FF--F6c                       y r    rO   rO   r0   r/   test_relationsr(    s    r0   c                     t               \  } }}| j                         5  t        |      \  }} G d dt              } |||j                        }|j                  |       | j                         }|j                  dt        dd             |j                  j                  |      j                         }|j                  dk(  sJ d	|j                  z  }	|j                  |	t        d
d             |j                  j                  |      j                         }|j                  dk(  sJ d|j                  z  }	|j                  |	       |j                  sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy).test_on_model_change_delete.<locals>.ModelViewc                 B    |j                   j                         |_         y r    )r?   upper)r$   r   r%   
is_createds       r/   on_model_changez>test_on_model_change_delete.<locals>.ModelView.on_model_change  s    #kk//1r0   c                     d| _         y )NT)deleted)r$   r%   s     r/   on_model_deletez>test_on_model_change_delete.<locals>.ModelView.on_model_delete  s	    #r0   N)r6   r7   r8   r/  r2  rO   r0   r/   r
   r+    s    2$r0   r
   r   r   r@   r?   r@   r   
TEST1LARGEr   r   r   
TEST1SMALLr   )r   r   r   r   r&   r   r   r   r   r   rM   r?   ri   r1  )
r   r   r   r   r  r
   r   r   r%   r*   s
             r/   test_on_model_change_deleter6    s<   WNCU		 !"%		$ 	$ ,t"(L@ 	 	B 

  (..0{{l***)EHH4Cd\JK

  (..0{{l***+ehh6C|||;     D?E((E1c            	      h   t               \  } }}| j                         5  t        |      \  }}|j                  j	                   |d       |d       |d      g       |j                  j                          |j                  j                         dk(  sJ t        ||j                        }|j                  |       | j                         }|j                  dt        dg d      	      }|j                  d
k(  sJ |j                  j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nabcr   z/admin/model1/action/delete)r   rK   r   )actionrowidr   r   r   )r   r   r   r&   r   r   r   r   r
   r   r   r   r   r   )r   r   r   r  r  r   r   r   s           r/   test_multiple_deleter?    s    WNCU		 %b!A


BsGRWbg67


xx~~1$$$RZZ(t"[[0t8S\7][^~~$$$xx~~1$$$% % %s   C?D((D1c            	         t               \  } }}| j                         5  t        |      \  }}|j                  j	                   |dd       |dd       |dd      g       |j                  j                          |j                  j                         dk(  sJ t        ||j                  d      }|j                  |       |j                  d	d d d d       \  }}t        |      dk(  sJ |d	   j                  dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ t        ||j                  dddid      }|j                  |       |j                  d	d d d d       \  }}t        |      dk(  sJ |d	   j                  dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ t        ||j                  dddiddg      }|j                  |       |j                  d	d d d d       \  }}t        |      dk(  sJ |d	   j                  dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ ddg}	t        ||j                  |	d      }
|j                  |
       |
j                  d	d d d d       \  }}t        |      dk(  sJ |d	   j                  dk(  sJ |d
   j                  dk(  sJ |d   j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr;  xr:  r9  yr   r?   r  r   r   rK   blahm1_2)r  r   r)   m1_3)r  r   r)   r   )r@   F)r?   Fm1_4)r  r)   )r   r   r   r&   r   r   r   r   r   r   r  r   r?   )r   r   r   r  r  r   r   r  r  orderr  s              r/   test_default_sortrI    s   WNCU		 4$b!A


BsCL"S#,3EF


xx~~1$$$r2::7Kt--4tT:44yA~~Aw}}###Aw}}###Aw}}###  BJJG/6.?&Ru..D$d;44yA~~Aw}}###Aw}}###Aw}}###  BJJG/6.?&-4I7 	u..D$d;44yA~~Aw}}###Aw}}###Aw}}### "#34BJJETZ[u..D$d;44yA~~Aw}}###Aw}}###Aw}}###i4$ 4$ 4$s   J>K''K0c                     t               \  } }}| j                         5  t        |      \  }} |dd      }|j                  j	                  |       |j                  j	                   |d|              |dd      }|j                  j	                  |       |j                  j	                   |d|              |dd      }|j                  j	                  |       |j                  j	                   |d|             |j                  j                          t        ||j                  dd	gd	g
      }|j                  |       t        ||j                  ddgdgd      }	|j                  |	       | j                         }
|
j                  d      }|j                  dk(  sJ |j                  dd	dd d       \  }}|d   j                  j                  dk(  sJ |d   j                  j                  dk(  sJ |d   j                  j                  dk(  sJ |
j                  d      }|j                  dk(  sJ |	j                  dddd d       \  }}|d   j                  j                  dk(  sJ |d   j                  j                  dk(  sJ |d   j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr;  rA  r3  r  r:  r9  rB  r   r  )r   column_sortable_listr   )r   )zmodel1.test2r  rE  )r   rK  r)   z/admin/model2/?sort=0r   r   Fr   rK   z/admin/m1_2/?sort=0)r   r   r   r&   r
  r   r   r   r   r   r   r  r   r?   )r   r   r   r  r  r  r(  m3r   r  r   r   r  r   s                 r/   test_complex_sortrM    su   WNCU		 .+r"Bc%


r


r#b)*c%


r


r#b)*c%


r


r#b)*


 r2::,:N+K5C4DF 	tBJJ-;X,F6b5cntv 	u"ZZ/0~~$$$-->5$E4Aw~~##s***Aw~~##s***Aw~~##s*** ZZ-.~~$$$..HeT4@4Aw~~##s***Aw~~##s***Aw~~##s***].+ .+ .+s   JJ==Kc                     t               \  } }}| j                         5  t        |      \  }}t        ||j                  d|j
                  g      }|j                  |       |j                  d      d   }|j                  d|dd d       \  }}t        |      dk(  sJ |d   j                  j
                  dk(  sJ |d   j                  j
                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nmodel2_3)r)   rK  r   FrK   r9  r   r:  )r   r   r   r   r&   r?   r   _get_column_by_idxr  r   r   )	r   r   r   r  r  r   sort_columnr  r   s	            r/   test_complex_sort_exceptionrR  E  s    WNCU		 +r"B r2::
57XXJ@t--a03--;tTB44yA~~Aw~~##s***Aw~~##s***+ + +s   B<C%%C.c                  "   t               \  } }}| j                         5  t        |      \  }} |d      }|j                  j	                  |       |j                  j	                   |d|              |d      }|j                  j	                  |       |j                  j	                   |d|             |j                  j                          t        ||j                  d      }|j                  |       |j                  dd d d d       \  }}	t        |	      dk(  sJ |	d   j                  j                  dk(  sJ |	d	   j                  j                  dk(  sJ t        ||j                  d
|j                  df      }
|j                  |
       |
j                  dd d d d       \  }}	t        |	      dk(  sJ |	d   j                  j                  dk(  sJ |	d	   j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr:  r;  r  r9  r  rC  r   rK   r   model2_2F)r)   r  )r   r   r   r&   r
  r   r   r   r  r   r   r?   )r   r   r   r  r  r  r(  r   r  r   r  s              r/   test_default_complex_sortrU  Y  s   WNCU		 +r"BW


r


r#b)*W


r


r#b)*


r2::>Rt--4tT:44yA~~Aw~~##s***Aw~~##s***  BJJ57XXu4EGu..D$d;44yA~~Aw~~##s***Aw~~##s***?+ + +s   GHHc            	         t               \  } }}| j                         5  t        |      \  }}t        ||j                  dt        j                  d      i      }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ |j                  j                  d      }d|v sJ |j                  d      }	|j                  d      }
|
|	k  sJ 	 d d d        y # 1 sw Y   y xY w)Nextra_fieldExtra Field)form_extra_fieldsr   r   r   r  r   r   r   r   r&   r   r   r   r   r   r   r   r   findr   r   r   r   r  r   r   r   r   pos1pos2s              r/   test_extra_fieldsr_  ~  s    WNCU		 !"%	BJJv11-@
 	t"ZZ,-~~$$$ ww~~g&$$$yy'yy!d{{+  s   C	C22C;c            
         t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddt        j                  d      i      }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ |j                  j                  d      }|j                  d      }	|j                  d      }
|
|	kD  sJ 	 d d d        y # 1 sw Y   y xY w)	N)rW  r?   rW  rX  )r  rY  r   r   r   r  rZ  r\  s              r/   test_extra_field_orderra    s    WNCU		 !"%	BJJ1v11-@
 	t"ZZ,-~~$$$ ww~~g&yy'yy!d{{+  s   CC--C6c                  0    d } g d}|D ]
  } | |        y )Nc                    	 t               \  }}}| |j                  d<   t        |       |j                         5  t	        |      \  }}t        ||j                  g d      }|j                  |       |j                         }|j                  d      }|j                  dk(  sJ |j                  d      }|j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w#  t        d|         xY w)NBABEL_DEFAULT_LOCALE)r?   rC   rD   rF   rE   r#  r   r   r   zError on the following locale:)r   configr   r   r   r   r&   r   r   r   r   print)	localer   r   r   r   r  r   r   r   s	            r/   test_localez0test_modelview_localization.<locals>.test_locale  s    	"WNCU17CJJ-.#J" -)"-	&BJJ#h
 t$*ZZ 01~~,,,ZZ 45~~,,,!- - -"	2F;s)   8C BC	C CC C C-)
encsdeesfafrptruzh_CNzh_TWrO   )rh  localesrg  s      r/   test_modelview_localizationrt    s&    8 QG Fr0   c                     t               \  } }}d| j                  d<   t        |        | j                         5  t	        |      \  }}t        ||j                  ddg      }|j                         }|d   }| j                         5  |j                  d|      }d d d        dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrk  rd  Tr?   )rN  r$  rK   test1_equals)
r   re  r   r   r   r   r&   get_filterstest_request_contextget_filter_arg)	r   r   r   r   r  r   r   fltflt_names	            r/   (test_modelview_named_filter_localizationr|    s    WNCU)-CJJ%&	#J		 *!"%	BJJ"#9
 ""$aj%%' 	3**1c2H	3)))* *	3 	3* *s$   AB?B3B?3B<	8B??Cc                  x   t               \  } }}| j                         5   G d dt        j                        }t	        |      \  }}t        ||j                  |      }|j                  |       t        |j                  d      sJ |j                         }t        ||      sJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)'test_custom_form_base.<locals>.TestFormNr6   r7   r8   rO   r0   r/   TestFormr        r0   r  )form_base_classr?   )r   r   r   BaseFormr   r   r&   r   hasattrr   r  r  )r   r   r   r  r   r  r   r  s           r/   test_custom_form_baser    s    WNCU		 1	t}} 	 ""%	BJJ$
 	tt..888&&(+x0001 1 1s   BB00B9c            	         t               \  } }}| j                         5  t        |      \  }}t        ||j                  ddddii      }|j                  |       d|j                  v sJ  |d      } |dd      }|j                  j                  ||g       |j                  j                          |j                  d   }|j                  |j                        }	|	j                  |j                  k(  sJ |j                  d	      }
t        |
      d
k(  sJ |
d   j                  |j                  k(  sJ |j                  d      }
t        |
      d
k(  sJ |
d   j                  dk(  sJ |j                         }|j                  j                   j"                  dk(  sJ | j%                  d      5  d |j                         vsJ ||j                  _        d|j                  z   |j                         v s"d|j                  z   |j                         v sJ d |j                         v sJ 	 d d d        | j)                         }|j+                  d      }|j&                  j-                  d      d|j                  z  k(  sJ |j/                  ddt1        |j                        i      }|j                  j3                  |      j5                         }	|	J |	j                  J |	j                  j                  |j                  k(  sJ |	j                  j                  dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r   r3  r*   form_ajax_refsrM   foobarfirr   r   AjaxSelectField/admin/view/zvalue=""z#data-json="[%s, &quot;first&quot;]"z!data-json="[%s, &#34;first&#34;]"z	value="1"z./admin/view/ajax/lookup/?name=model1&query=foor   z[[%s, "foo"]]/admin/view/new/r   )r   r   r   r   r&   r   _form_ajax_refsr   r   get_oneri   r?   r  r   r  r   r.   r6   rx  r   r   r   r   r   r   r   rM   )r   r   r   r   r   r   r%   r   loadermdlitemsr   r   reqs                 r/   test_ajax_fkr   	  s   WNCU		 ;,&r*BJJ0
 	tD00000x '


E6?+


 %%i0nnUXX&yyEKK''''5zQQx{{ehh&&&'5zQQx~~''' !{{$$--1CCCC%%n5 	1kdkkm333$DKK:UXXEV8588C{t{{}TV U;4;;=000	1 "jjJKxxw'+;fii+GGGG kk,Iz%((?S3TkUjjv&,,.zz%%%zz}}(((zz8+++w;, ;,L	1 	1M;, ;,s&   FM3A>L52C9M5L?	:MMc                  d  	
 t               \  } 	}| j                         5   G 	fdd	j                        	j                  d	j                  j                  	j                  d	j                  	j                  d            	j                  d	j                  	j                  d                  
 G 	
fdd		j                        }	j                          t        |	j                  d
dddgii      }|j                  |       d|j                  v sJ  d      }	j                  j                  | d      g       	j                  j                          |j                         }|j                   j"                  j$                  dk(  sJ | j'                  d      5  d |j                          v sJ |g|j                   _        d |j                          v sd |j                          v sJ d d d        | j+                         }|j-                  ddt/        |j0                        i       	j                  j3                  |      j5                         }|J |j                   J t7        |j                         dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       e Zd ZdZW  j	                  W  j
                  d      ZW  j	                  W  j                  d            Zd Z	y)"test_ajax_fk_multi.<locals>.Model1r   TrQ   rS   c                     | j                   S r    r'   r`   s    r/   rd   z*test_ajax_fk_multi.<locals>.Model1.__str__K	  s    yy r0   N)
r6   r7   r8   __tablename__rg   rh   ri   rj   r'   rd   r~   s   r/   r   r  E	  s9    $M2::48B99RYYr]+D!r0   r   m2mr   rL  	model2_idz	model2.idc                   <   e Zd ZdZW j	                  W j
                  d      ZW j	                  W j                  d            ZW j	                  W j                         W j                  W  j                              Z
W j                  W  dW       Zy)"test_ajax_fk_multi.<locals>.Model2r   TrQ   rS   models2)r   	secondaryN)r6   r7   r8   r  rg   rh   ri   rj   r'   r   r   r   r   )r   r   tables   r/   r   r  S	  sk    $M2::48B99RYYr]+D		"**,fii0HII__VY%_PFr0   r   r   r   r   r'   r  rM   r  r  AjaxSelectMultipleFieldr  zdata-json="[]"z$data-json="[[1, &quot;first&quot;]]"z"data-json="[[1, &#34;first&#34;]]"r  r   r   )r   r   r   Tablemetadatarg   rh   r   r   r   r&   r   r  r   r   r  r   r.   r6   rx  r   r   r   r   ri   r   rM   r   )r   r   r   r   r%   r   r   r  r   r   r  s           @@@r/   test_ajax_fk_multir  A	  sd   WNCU		 =$	!RXX 	!  1 1;

BMM+<VW;

BMM+<VW
	Q 	QRXX 	Q 	BJJvh
 	tD00000H%


E6v#678


 !{{$$--1KKKK%%n5 	L$555 %wDKK;{t{{}L9[T[[]JL K		L "&iEHH9M-NOjjv&,,.zz%%%3::!###{=$ =$^	L 	L_=$ =$s&   F	J&+AJ;BJ&J#	J&&J/c            	         t               \  } }}| j                         5  t        |      \  }}t        ||j                        }|j                  |       | j                         }|j                  dt        ddd            }|j                  dk(  sJ d}t        |d	      r|j                  rd
|z   }|j                  j                  |      sJ d|j                  v sJ d|j                  v sJ |j                  dt        ddd            }|j                  dk(  sJ |j                  j                  |      sJ d|j                  v sJ d|j                  v sJ 	 d d d        y # 1 sw Y   y xY w)Nz9/admin/model1/new/?url=http://localhost/admin/model2view/r   r@   zSave and Continue Editing)r?   r@   _continue_editingr   r   z/admin/model1/edit/autocorrect_location_headerzhttp://localhostz2url=http%3A%2F%2Flocalhost%2Fadmin%2Fmodel2view%2Fzid=1z./admin/model1/new/?url=http://google.com/evil/zurl=%2Fadmin%2Fmodel1%2Fzid=2)r   r   r   r   r&   r   r   r   r   r   r  r  location
startswith)	r   r   r   r   r  r   r   r   expecteds	            r/   test_safe_redirectr  	  sy   WNCU		  %!"%	vrzz2t"[[T"W5PR  S ~~$$$ ) r89R=[=[)H4H{{%%h///Cr{{RRR$$$[[I"W5PR  S ~~$$${{%%h///)R[[888$$$A %  %  %r7  c                  &   t               \  } }}| j                         5  t        |      \  }} G d dt              } |||j                        }|j                  |       |j                  dd d d d       \  }}|J 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZdZd Zy)-test_simple_list_pager.<locals>.TestModelViewTc                     J r    rO   r`   s    r/   get_count_queryz=test_simple_list_pager.<locals>.TestModelView.get_count_query	  s    ur0   N)r6   r7   r8   simple_list_pagerr  rO   r0   r/   TestModelViewr  	  s     $r0   r  r   )r   r   r   r   r&   r   r  )	r   r   r   r   r  r  r   r   r   s	            r/   test_simple_list_pagerr  	  s    WNCU		 !"%		O 	 VRZZ0tmmAtT4>t}}  s   ABBc                     t               \  } }}| j                         5  t        |      \  }}|j                  j	                   |d       |d       |d       |d       |d       |d       |d       |d       |d	       |d
       |d       |d       |d       |d       |d       |d       |d       |d       |d       |d       |d      g       t        ||j                        }|j                  dd d d d dd      \  }}t        |      dk(  sJ |j                  dd d d d dd      \  }}t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr0  2r5  456789101112131415161718192021r   T)executer  rf  F)r   r   r   r&   r   r   r  r   )r   r   r   r  r  r   r   s          r/   test_unlimited_page_sizer  	  sX   WNCU		 b!A


BsGRWbgr#w3CsGRWbgr$xDtHbh4"T(BtHtHbh4"T(BtHN 	O
 r2::. --4tT4*+   -44yB --4tT4*/   144yB%  s   D)EEc                     t               \  } }| j                         5   G fddj                         G fddj                         G fddj                        }t        j                        }|j                  |       t        j                        }|j                  |       t        |j                        }|j                  |       t        j                  d      \  }}|j                  k(  sJ |j                  gk(  sJ t        j                  d      \  }}|j                  k(  sJ t        |d	         t        j                        k(  sJ t        j                  |d
      \  }}|j                  k(  sJ ||j                  j                  gk(  sJ |j                         }i }	|j                  ||	|      \  }
}	}d|j                  f|	v sJ dj                  f|	v sJ |J t        j                  d      \  }}|j                  ||	|      \  }}	}t        |	      dk(  sJ t!        |d      r!|j"                  D ]  }||
j"                  v rJ  |J t        j                  j$                        \  }}|j$                  k(  sJ |j&                  gk(  sJ |j                  |j                         |	|      \  }}	}t        |	      dk(  sJ |J 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                  d            ZW  j                  W  j                  d            Zy)#test_advanced_joins.<locals>.Model1TrQ   rS   N	r6   r7   r8   rg   rh   ri   rj   rC  r   r~   s   r/   r   r  	  E    2::48B99RYYr]+D99RYYr]+Dr0   r   c                   ,   e Zd ZW j                  W j                  d      ZW j                  W j                  d            ZW j                  W j                  W j                  W  j
                              Z	W j                  W  d      Zy)#test_advanced_joins.<locals>.Model2TrQ   rS   r   r   N)r6   r7   r8   rg   rh   ri   rj   val2r   r   r   r   r   s   r/   r   r  	  b    2::48B99RYYr]+D		"**bmmFII.FGI__VX_>Fr0   r   c                   ,   e Zd ZW j                  W j                  d      ZW j                  W j                  d            ZW j                  W j                  W j                  W  j
                              Z	W j                  W  d      Zy)#test_advanced_joins.<locals>.Model3TrQ   rS   model3r   N)r6   r7   r8   rg   rh   ri   rj   r  r   r  r   r   )r   r   s   r/   Model3r  	  r  r0   r  zmodel1.val1zmodel2.val2r   zmodel2.model1.val1Tzmodel1.testrK   _join_entitiesr   )r   r   r   r   r&   r   r   get_field_with_pathrC  r   r  ri   r   	get_query_apply_path_joinsr   r  r  r   	__table__)r   r   r  r   r  r  attrpathr   joinsq1aliasq2pq3r   r   r   s                  @@@r/   test_advanced_joinsr  	  s   WNCU		 F	,RXX 	,
	?RXX 	?	?RXX 	?  

3u

3u

3u ..v}E
dv{{"""&&&..v}E
dv{{"""$q'{b////..v7KL
dv{{"""v}}5555 ! 225%FE5fmm$---fmm$---    ..v}E
d 225%FE55zQ2'(&& .B-----.     ..vv{{C
dv{{"""(()))) 225??3DeTRE55zQ}}MF F Fs   I
K=-BK==Lc                     t               \  } }| j                         5   G fddj                         G fddj                        }j                          t	        |j
                  dg      }|j                  |       | j                         }|j                  d      }|j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                  d            ZW  j                  W  j                  d            Zy)$test_multipath_joins.<locals>.Model1TrQ   rS   Nr  r~   s   r/   r   r  !
  r  r0   r   c                      e Zd ZW j                  W j                  d      ZW j                  W j                  d            ZW j                  W j                  W j                  W  j
                              Z	W j                  W  de	g      ZW j                  W j                  W j                  W  j
                              ZW j                  W  deg      Zy)$test_multipath_joins.<locals>.Model2TrQ   rS   rM   )r   foreign_keysrN   N)r6   r7   r8   rg   rh   ri   rj   r  r   first_idr   rM   	second_idrN   r   s   r/   r   r  &
  s    2::48B99RYYr]+DyyR]]699-EFHOOFG8*OUE		"**bmmFII.FGI__VXYK_XFr0   r   z
first.test)r   r	  r   )
r   r   r   r   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   s         @@r/   test_multipath_joinsr  
  s    WNCU		 %	,RXX 	,
	YRXX 	Y 	vrzzL>Jt"ZZ()~~$$$1% % %s   BCCc                     t               \  } }ddi| j                  d<   | j                         5   G fddj                         G fddj                        }j	                          t        |j                        }|j                  |       | j                         }|j                  d      }|j                  d	k(  sJ 	 d d d        y # 1 sw Y   y xY w)
Notherz
sqlite:///SQLALCHEMY_BINDSc                       e Zd ZW  j                  W  j                  d      ZW  j                  W  j                  d            Zy))test_different_bind_joins.<locals>.Model1TrQ   rS   N)r6   r7   r8   rg   rh   ri   rj   rC  r~   s   r/   r   r  D
  s/    2::48B99RYYr]+Dr0   r   c                   ,   e Zd ZdZW j	                  W j
                  d      ZW j	                  W j                  d            ZW j	                  W j
                  W j                  W  j                              Z
W j                  W        Zy))test_different_bind_joins.<locals>.Model2r  TrQ   rS   N)r6   r7   r8   __bind_key__rg   rh   ri   rj   rC  r   r  r   rM   r   s   r/   r   r  H
  sc    "L2::48B99RYYr]+DyyR]]699-EFHOOF+Er0   r   r	  r   )r   re  r   r   r   r   r&   r   r   r   r   r  s         @@r/   test_different_bind_joinsr  <
  s    WNCU&CJJ!" 
	 %	,RXX 	,	,RXX 	, 	vrzz2t"ZZ()~~$$$)% % %s   BCCc                  d   t               \  } }}| j                         5  t        |      \  }} G d dt              } |||j                        }|j                  |       | j                         }|j                  dt                     }d|j                  vsJ 	 d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)%test_model_default.<locals>.ModelViewNr  rO   r0   r/   r
   r  _
  r  r0   r
   z/admin/model2/new/r   s   This field is required)
r   r   r   r   r&   r   r   r   r   r   )	r   r   r   r  r   r
   r   r   r   s	            r/   test_model_defaultr  Z
  s    WNCU		 8!"%	6	 	 ,t"[[-DF[;(7778 8 8s   A=B&&B/c            	         t               \  } }}| j                         5  t        |      \  }}t        d      D ]  }t	        |||        t        ||j                  dddgdd      }|j                  |       t        ||j                  dddgd	      }|j                  |       | j                         }|j                  d
      }	|	j                  j                  d      }
|	j                  dk(  sJ d|
k(  sJ |j                  d      }	|	j                  j                  d      }
|	j                  dk(  sJ t        |
j                               dkD  sJ 	 d d d        y # 1 sw Y   y xY w)Nr[  Tr?   r@   rK   row_limit_2)
can_exportr   export_max_rowsr)   no_row_limit)r  r   r)   z/admin/row_limit_2/export/csv/r   r   z?Test1,Test2
test1_val_1,test2_val_1
test1_val_2,test2_val_2
z/admin/no_row_limit/export/csv/rf  )r   r   r   ranger   r   r&   r   r   r   r   r   r   r   
splitlines)r   r   r   r   r   rA  r   r  r   r   r   s              r/   test_export_csvr  j
  sa   WNCU		 +&r*q 	(AB'	(  

t-4g,>PQ)68 	u

t-4g,>)79 	u" ZZ89ww~~g&~~$$$*-12 	2 2
 ZZ9:ww~~g&~~$$$4??$%***;+ + +s   D6EE()[pytestwtformsr   r   flask_adminr   flask_admin.form.fieldsr   r   flask_admin._compatr   r	   flask_admin.contrib.sqlar
   r   r   flask_babelexr   sqlalchemy.ext.hybridr   
sqlalchemyr   sqlalchemy_utilsr   r   r   r   r   r   r   r   r   r   r   r   r   rw   re   rt   r   r   r   r   markxfail	Exceptionr   r  r  r  r  r!  r%  r)  r+  r6  r>  rD  r  r  r  r  r  r  r  r  r  r  r&  r(  r6  r?  rI  rM  rR  rU  r_  ra  rt  r|  r  r  r  r  r  r  r  r  r  r  r  rO   r0   r/   <module>r     s    &  ? * ) > >  1  x x x  ) )   i "QhDU5p )$ %"#J%2#6 %FF,F*!.H&*D%N2)j$*NZ)z'B(J-#`8vD>,B )$ %3.M&OD	
 F%(7$t1+h )$+ %+&"+J46D*,1*>,B@$F#%L$.HV%< )$% %%:8  +r0   