
    恕f                         d dl mZmZ d dlmZ d dlmZ d dlmZ ddl	m
Z
 d dlmZ  G d d	e      Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$y")#    )fields
validators)form)
as_unicode)	ModelView   )setup)datetimec                   "     e Zd Z	 d fd	Z xZS )CustomModelViewc                 ~    |j                         D ]  \  }}t        | ||        t        t        |   |||||       y N)itemssetattrsuperr   __init__)
selfmodelnamecategoryendpointurlkwargskv	__class__s
            g/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/flask_admin/tests/mongoengine/test_basic.pyr   zCustomModelView.__init__   sG     LLN 	 DAqD!Q	  	ot-e.2H.6	=    )NNNN)__name__
__module____qualname__r   __classcell__)r   s   @r   r   r      s    >B= =r   r   c                       G  fdd j                          G  fdd j                         }j                  j                          |j                  j                          |fS )Nc                       e Zd ZW  j                  d      ZW  j                  d      ZW  j                         ZW  j                         ZW  j                         Z	d Z
y)create_models.<locals>.Model1   
max_lengthc                     | j                   S r   test1r   s    r   __str__z%create_models.<locals>.Model1.__str__    s    ::r   N)r   r    r!   StringFieldr+   test2test3test4DateTimeFielddatetime_fieldr-   dbs   r   Model1r%      sN    "-"-  ))+	r   r6   c                       e Zd ZW j                         ZW j                         ZW j                         ZW j                         Z
W j                  W        Zy)create_models.<locals>.Model2N)r   r    r!   r.   string_fieldIntField	int_field
FloatFieldfloat_fieldBooleanField
bool_fieldReferenceFieldmodel1)r6   r5   s   r   Model2r8   #   sA    ~~'KKM	mmo__&
""6*r   rB   )Documentobjectsdelete)r5   rB   r6   s   ` @r   create_modelsrF      sO     + + NN
NN6>r   c                     | dd      j                           | dd      j                           | dd      j                           | dd	      j                           | d d
      j                           |dd d d      j                           |dd d d      j                           |ddd      j                           |ddd      j                           |dd      j                           | dt        dddddd       !      j                           | d"t        d#dd$d d%d       !      j                          y )&Ntest1_val_1test2_val_1r+   r/   test1_val_2test2_val_2test1_val_3test2_val_3test1_val_4test2_val_4	empty_objstring_field_val_1T)r9   r;   r=   r?   string_field_val_2Fstring_field_val_3i  gfffff9@)r9   r;   r=   string_field_val_4i(#  g     R@string_field_val_5l     3, )r9   r;   datetime_obj1i        r   	   r   )r+   r3   datetime_obj2i        )saver
   )r6   rB   s     r   fill_dbr_   1   s   
m499;
m499;
m499;
m499;
[)..0
,..2df
,//3tv
,!TV
,!TV
,(**.$&
"4Aq!Q799=
"4Aq!Q799=r   c                     t               \  } }}t        |      \  }}t        |      }|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-                  d      }|j.                  d	k(  sJ |j-                  d
      }|j.                  d	k(  sJ |j1                  d
t3        dd            }|j.                  dk(  sJ |j4                  j7                         }|j                  dk(  sJ |j"                  dk(  sJ |j$                  dk(  sJ |j(                  dk(  sJ |j-                  d      }|j.                  d	k(  sJ d|j8                  v sJ d|j:                  z  }	|j-                  |	      }|j.                  d	k(  sJ |j1                  |	t3        dd            }|j.                  dk(  sJ |j4                  j7                         }|j                  dk(  sJ |j"                  dk(  sJ |j$                  dk(  sJ |j(                  dk(  sJ d|j:                  z  }	|j1                  |	      }|j.                  dk(  sJ |j4                  j=                         dk(  sJ y )Nr6   rA   idr+   r/   r0   r1   /admin/model1/   /admin/model1/new/
test1largerJ   data.   s
   test1largez/admin/model1/edit/?id=%s
test1small
test2largez/admin/model1/delete/?id=%sr   )r	   rF   r   add_viewr   r   r   _primary_key_sortable_columns_create_form_class_edit_form_class_search_supported_filtersr+   field_classr   r.   r/   r0   TextAreaFieldr1   test_clientgetstatus_codepostdictrD   firstrg   ra   count)
appr5   adminr6   rB   viewclientrvr   r   s
             r   
test_modelr   I   s   WNCU"2&NFF6"D	NN4::99   ==H$$$$$$d,,,,,d,,,,,d,,,,,d,,,,,""...  ,,,%%%%==   ""((448J8JJJJ""((448J8JJJJ""((448L8LLLL""((448L8LLLL __F	$	%B>>S   	(	)B>>S   	)\A 
 
CB>>S   NN  "E;;,&&&;;'!!!;;";;"	$	%B>>S   BGG###
%
0C	CB>>S   	S\F 
 
HB>>S   NN  "E;;,&&&;;,&&&;;";;"
'%((
2C	S	B>>S   >>!Q&&&r   c                  ~   t               \  } }}t        |      \  }}t        |ddg      }|j                  |       t	        ||       | j                         }|j                  d      }|j                  j                  d      }d|v sJ |j                  j                  d      }	|j                  d	t        |	j                        d
d      }|j                  j                  d      }d|k(  sJ |j                  d      }|j                  j                  d      }d
|v sJ |j                  j                  d      }
|j                  d	t        |
j                        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 t        |dg      }|j                  |       |j                  j                  d      }|j                  dt        |j                        t        |	j                        d      }|j                  j                  d      }d|k(  sJ |j                  d      }|j                  j                  d      }d|v sJ y )Nr+   r3   )column_editable_listrb   utf-8zdata-role="x-editable"rM   r*   z/admin/model1/ajax/update/zchange-success-1)list_form_pkr+   rf   zRecord was successfully saved.rW   zproblematic-input)r   r3   i  10001)r   r/   rA   rR   )r9   z/admin/model2/ajax/update/)r   rA   /admin/model2/rH   )r	   rF   r   rl   r_   ru   rv   rg   decoderD   rx   strra   rw   )r|   r5   r}   r6   rB   r~   r   r   rg   obj1obj2obj3s               r   test_column_editable_listr      s   WNCU"2&NFF618:J0KMD	NN4FF__F 
$	%B77>>'"D#t+++ >>M2D	1DGG#9 
B 77>>'"D+t333 
$	%B77>>'"D%%% >>O4D	1DGG-9 
B >>S    
1$9 
B 77>>'"D>>S    
1$9 
B 77>>'"Dd*** 6
CD	NN4>>+?@D	1DGGdgg,9 
B 77>>'"D+t333 
$	%B77>>'"DD   r   c                     t               \  } }}t        |      \  }}t        |      }|j                  |       t        |d      }|j                  |       t        |ddgd      }|j                  |       t	        ||       | j                         }|j                  j                         j                  }	|j                  j                         j                  }
|j                  d      }|j                  j                  d      }d|vsJ |j                  d	      }|j                  j                  d      }d
|v sJ dt        |	      z   }|j                  |      }|j                  dk(  sJ dt        |
      z   }|j                  |      }|j                  j                  d      }d|v sJ d|v sJ d|v sJ dt        |
      z   }|j                  |      }|j                  j                  d      }d|v sJ d|v sJ d|vsJ y )NT)can_view_detailsr9   sf_view)r   column_details_listr   rb   r   z/admin/model1/details/r   z/admin/model2/details/z3/admin/model1/details/?url=%2Fadmin%2Fmodel1%2F&id=rh   z3/admin/model2/details/?url=%2Fadmin%2Fmodel2%2F&id=zString FieldrR   	Int Fieldz5/admin/sf_view/details/?url=%2Fadmin%2Fsf_view%2F&id=)r	   rF   r   rl   r_   ru   rD   rz   ra   rv   rg   r   r   rw   )r|   r5   r}   r6   rB   view_no_detailsview_w_detailsstring_field_viewr   m1_idm2_idr   rg   r   s                 r   test_details_viewr      s   WNCU"2&NFF%f-O	NN?# %VdCN	NN>" (=K<L1:< 
NN$%FF__FNN  "%%ENN  "%%E 
$	%B77>>'"D#4/// 
$	%B77>>'"D#t+++ @#e*
LC	CB>>S    @#e*
LC	CB77>>'"DT!!!4'''$ BCJ
NC	CB77>>'"DT!!!4'''d"""r   c                     t               \  } }}t        |      \  }}t        ||       t        |dg      }|j	                  |       t        |j                        dk(  sJ |j                  d   D cg c]  }|d   |d   f c}g dk(  sJ | 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 d|	vsJ |j                  d      }|j                  d	k(  sJ |j                  j                  d
      }	d|	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 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 d|	v sJ d|	v sJ t        |dg      }|j	                  |       |j                  d   D cg c]  }|d   |d   f c}g d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 |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 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 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 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 |j                  d-      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	v sJ d(|	v sJ d|	vsJ d|	vsJ t        |d.gd/0      }|j	                  |       |j                  d1   D cg c]  }|d   |d   f c}d2d3gk(  sJ |j                  d4      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	v sJ d(|	vsJ |j                  d5      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	vsJ d(|	v sJ |j                  d6      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	vsJ d(|	v sJ |j                  d7      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	v sJ d(|	vsJ t        |d8gd90      }|j	                  |       |j                  d:   D cg c]  }|d   |d   f c}g d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 |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 d|	vsJ d|	vsJ |j                  dA      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	vsJ d(|	vsJ d|	v sJ d|	v sJ |j                  dB      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	vsJ d(|	vsJ d|	v sJ d|	v sJ |j                  dC      }|j                  d	k(  sJ |j                  j                  d
      }	d"|	v sJ |j                  dD      }|j                  d	k(  sJ |j                  j                  d
      }	d'|	v sJ d(|	v sJ d|	vsJ d|	vsJ t        |dEgdF0      }|j	                  |       |j                  dG   D cg c]  }|d   |d   f c}g dHk(  sJ |j                  dI      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	v sJ dK|	vsJ |j                  dL      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	vsJ dK|	v sJ |j                  dM      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	v sJ dK|	vsJ |j                  dN      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	vsJ dK|	v sJ |j                  dO      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	v sJ dK|	vsJ |j                  dP      }|j                  d	k(  sJ |j                  j                  d
      }	dJ|	vsJ dK|	v sJ |j                  dQ      }|j                  d	k(  sJ |j                  j                  d
      }	d|	v sJ dJ|	vsJ dK|	vsJ |j                  dR      }|j                  d	k(  sJ |j                  j                  d
      }	d|	vsJ dJ|	v sJ dK|	v sJ y c c}w c c}w c c}w c c}w c c}w )SNr+   )column_filters   Test1index	operation))r   contains)r   znot contains)r\   equals)rY   	not equalrX   empty   zin list   znot in listz!/admin/model1/?flt0_0=test1_val_1rc   r   rI   rK   z!/admin/model1/?flt0_1=test1_val_1z!/admin/model1/?flt0_2=test1_val_1z!/admin/model1/?flt0_3=test1_val_1z/admin/model1/?flt0_4=1rQ   rH   z/admin/model1/?flt0_4=0z//admin/model1/?flt0_5=test1_val_1%2Ctest1_val_2rL   rM   rO   z//admin/model1/?flt0_6=test1_val_1%2Ctest1_val_2r;   r   )r   r   r   r   r\   zgreater thanrY   zsmaller thanr   r   r   z/admin/model2/?flt0_0=5000rT   rU   z)/admin/model2/?flt0_0=6169453081680413441rV   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=1rR   rS   z/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?   _bools)r   r   z
Bool Fieldr   r   z/admin/_bools/?flt0_0=1z/admin/_bools/?flt0_0=0z/admin/_bools/?flt0_1=1z/admin/_bools/?flt0_1=0r=   _floatz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.5r3   	_datetimezDatetime Field)r   r   r   r   )rX   between)r   znot between)r   r   z0/admin/_datetime/?flt0_0=2014-04-03+01%3A09%3A00rW   r[   z0/admin/_datetime/?flt0_1=2014-04-03+01%3A09%3A00z0/admin/_datetime/?flt0_2=2014-04-03+01%3A08%3A00z0/admin/_datetime/?flt0_3=2014-04-03+01%3A08%3A00zK/admin/_datetime/?flt0_4=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59zK/admin/_datetime/?flt0_5=2014-04-02+00%3A00%3A00+to+2014-11-20+23%3A59%3A59z/admin/_datetime/?flt0_6=1z/admin/_datetime/?flt0_6=0)r	   rF   r_   r   rl   lenrr   _filter_groupsru   rv   rw   rg   r   )
r|   r5   r}   r6   rB   r~   fr   r   rg   s
             r   test_column_filtersr     s   WNCU"2&NFF FF 67)<D	NN4t}}""" 04/B/B8/LM!!G*an	%M	
		


		
 __F 
7	8B>>S   77>>'"DD   $$$ 
7	8B>>S   77>>'"D$$$D    
7	8B>>S   77>>'"DD   $$$ 
7	8B>>S   77>>'"D$$$D    
-	.B>>S   77>>'"D$$$$$$$ 
-	.B>>S   77>>'"Dd"""D   D    
E	FB>>S   77>>'"DD   D   $$$$$$ 
E	FB>>S   77>>'"D$$$$$$D   D    6;-@D	NN4 04/B/B</PQ!!G*an	%Q	
		


		
 
0	1B>>S   77>>'"D4'''t+++ 
?	@B>>S   77>>'"D4'''t+++ 
2	3B>>S   77>>'"D!T))) 
0	1B>>S   77>>'"Dt+++4''' 
0	1B>>S   77>>'"Dt+++4''' 
0	1B>>S   77>>'"D4'''t+++ 
-	.B>>S   77>>'"D4'''4'''t+++t+++ 
-	.B>>S   77>>'"Dt+++t+++4'''4''' 
7	8B>>S   77>>'"Dt+++t+++4'''4''' 
?	@B>>S   77>>'"Dt+++4''' 
9	:B>>S   77>>'"D!T))) 
7	8B>>S   77>>'"D4'''4'''t+++t+++ 6<.$,.D	NN4 04/B/B=/QR!!G*an	%R	
	

	
 
-	.B>>S   77>>'"D4'''t+++ 
-	.B>>S   77>>'"Dt+++4''' 
-	.B>>S   77>>'"Dt+++4''' 
-	.B>>S   77>>'"D4'''t+++ 6=/$,.D	NN4 04/B/B>/RS!!G*an	%S	
		


		
 
0	1B>>S   77>>'"D4'''t+++ 
2	3B>>S   77>>'"D!T))) 
0	1B>>S   77>>'"Dt+++4''' 
0	1B>>S   77>>'"Dt+++4''' 
0	1B>>S   77>>'"D4'''t+++ 
-	.B>>S   77>>'"D4'''4'''t+++t+++ 
-	.B>>S   77>>'"Dt+++t+++4'''4''' 
7	8B>>S   77>>'"Dt+++t+++4'''4''' 
9	:B>>S   77>>'"D!T))) 
7	8B>>S   77>>'"D4'''4'''t+++t+++ 6+;*<$/1D 
NN4 04/B/BCT/UV!!G*an	%V	
		


		
 
F	GB>>S   77>>'"Dd"""$&&& 
F	GB>>S   77>>'"D$&&&d""" 
F	GB>>S   77>>'"Dd"""$&&& 
F	GB>>S   77>>'"D$&&&d""" 
a	bB>>S   77>>'"Dd"""$&&& 
a	bB>>S   77>>'"D$&&&d""" 
0	1B>>S   77>>'"DD   $&&&$&&& 
0	1B>>S   77>>'"D$$$d"""d"""K 	Nb 	RV 	SP 	T| 	Ws   3y :yy
yyc                     t               \  } }}t        |      \  }} |dd      j                           |dd      j                           |dd      j                          |j                  j	                         dk(  sJ t        |d	      }|j                  |       |j                  d
d d d d       \  }}|d
   j                  dk(  sJ |d   j                  dk(  sJ |d   j                  dk(  sJ ddg}t        ||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 y )NcxrJ   bayrY   r+   )column_default_sortr   r   r\   )r/   F)r+   Fm1_2)r   r   )
r	   rF   r^   rD   r{   r   rl   get_listr+   r   )	r|   r5   r}   M1_r~   rg   orderview2s	            r   test_default_sortr     sx   WNCU"EBS!!#S!!#S!!#::"""27;D	NN4mmAtT46GAt7==C7==C7==C /0EBEFKE	NN5nnQdD$7GAtt9>>7==C7==C7==Cr   c                     t               \  } }}t        |      \  }}t        |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 y Nextra_fieldzExtra Field)form_extra_fieldsrd   rc   r   r   r	   rF   r   r   r.   rl   ru   rv   rw   rg   r   findr|   r5   r}   r6   r   r~   r   r   rg   pos1pos2s              r   test_extra_fieldsr         WNCUb!IFA6--m<
D 
NN4__F	(	)B>>S    77>>'"DD   99]#D99WD$;;r   c                     t               \  } }}t        |      \  }}t        |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 y r   r   r   s              r   test_extra_field_orderr     r   r   c                     t               \  } }} G d dt        j                        }t        |      \  }}t	        ||      }|j                  |       t        |j                  d      sJ |j                         }t        ||      sJ y )Nc                       e Zd Zy)'test_custom_form_base.<locals>.TestFormN)r   r    r!    r   r   TestFormr     s    r   r   )form_base_classr+   )
r	   r   BaseFormrF   r   rl   hasattrro   create_form
isinstance)r|   r5   r}   r   r6   r   r~   r   s           r   test_custom_form_baser      s    WNCU4==  b!IFA D 
NN44**G444""$Kk8,,,r   c                  N   t               \  } } G fddj                         G fddj                        }t        |dddii      }t	        |j
                  d      sJ |j                         }d	t        |j                  j                        v sJ d
t        |j                  j                        vsJ t        |dddii      }|j                         }d	t        |j                  j                        v sJ d
t        |j                  j                        vsJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)(test_subdocument_config.<locals>.Commentr&   Tr(   requiredr'   Nr   r    r!   r.   r   valuer4   s   r   Commentr     %    ~~d~;"-r   r   c                   Z    e Zd ZW j                  d      ZW j                  W        Zy)'test_subdocument_config.<locals>.Model1r&   r'   Nr   r    r!   r.   r+   EmbeddedDocumentFieldsubdocr   r5   s   r   r6   r     #    "-))'2r   r6   r   form_columnsr   form_subdocumentsr   r   form_excluded_columns)r   )
r	   EmbeddedDocumentrC   r   r   ro   r   dirr   r   )r|   r}   r6   view1r   r   r   r5   s         @@r   test_subdocument_configr     s   WNCU."%% .3 3
 	
E 5++X666DS))****#dkk..//// '
E DS))****#dkk..////r   c                  x   t               \  } }ddlm}  G fddj                         G fddj                        } G d d|      }t        |d	 |       i
      }|j                         }dt        |j                  j                        v sJ dt        |j                  j                        vsJ y )Nr   )EmbeddedFormc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy).test_subdocument_class_config.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r   C  r   r   r   c                   Z    e Zd ZW j                  d      ZW j                  W        Zy)-test_subdocument_class_config.<locals>.Model1r&   r'   Nr   r   s   r   r6   r   G  r   r   r6   c                       e Zd ZdZy)5test_subdocument_class_config.<locals>.EmbeddedConfigr   N)r   r    r!   r   r   r   r   EmbeddedConfigr   K  s     r   r   r   r   r   r   )
r	   flask_admin.contrib.mongoenginer   r   rC   r   r   r   r   r   )	r|   r}   r   r6   r   r   r   r   r5   s	          @@r   test_subdocument_class_configr   >  s    WNCU<."%% .3 3! ! n&
E DS))****#dkk..////r   c                     t               \  } } G fddj                         G fddj                         G fddj                        }t        |ddd	d
diiii      }|j	                         }dt        |j                  j                  j                  j                        v sJ dt        |j                  j                  j                  j                        vsJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)/test_nested_subdocument_config.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r  _  r   r   r   c                   \    e Zd ZW j                  dd      ZW j                  W        Zy).test_nested_subdocument_config.<locals>.Nestedr&   Tr   N)r   r    r!   r.   r   r   commentr   s   r   Nestedr  c  s%    ~~d~;**73r   r  c                   Z    e Zd ZW j                  d      ZW j                  W        Zy).test_nested_subdocument_config.<locals>.Model1r&   r'   Nr   r    r!   r.   r+   r   nestedr  r5   s   r   r6   r  g  #    "-))&1r   r6   r	  r   r  r   r   r   r   r   )	r	   r   rC   r   r   r   r	  r   r  r|   r}   r6   r   r   r   r  r5   s        @@@r   test_nested_subdocument_configr  [  s    WNCU."%% .4$$ 42 2 #&	 &
E DS))11667777#dkk..66;;<<<<r   c                  N   t               \  } } G fddj                         G fddj                        }t        |ddd ddiiii	      }|j	                         }|j
                  j                  j                  d
   }dt        |      v sJ dt        |      vsJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)-test_nested_list_subdocument.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r    r   r   r   c                   z    e Zd ZW j                  d      ZW j                  W j                  W              Zy),test_nested_list_subdocument.<locals>.Model1r&   r'   Nr   r    r!   r.   r+   	ListFieldr   r   r   s   r   r6   r    ,    "-b66w?@r   r6   r   r   r   r   r   r\   r   r   	r	   r   rC   r   r   r   unbound_fieldargsr   r|   r}   r6   r   r   inline_formr   r5   s         @@r   test_nested_list_subdocumentr  }  s    WNCU."%% .A A
 #&	&	
E D++++003KS%%%%#k****r   c                  N   t               \  } } G fddj                         G fddj                        }t        |ddd ddiiii	      }|j	                         }|j
                  j                  j                  d
   }dt        |      v sJ dt        |      vsJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)3test_nested_sortedlist_subdocument.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r    r   r   r   c                   z    e Zd ZW j                  d      ZW j                  W j                  W              Zy)2test_nested_sortedlist_subdocument.<locals>.Model1r&   r'   Nr   r    r!   r.   r+   SortedListFieldr   r   r   s   r   r6   r     .    "-##B$<$<W$EFr   r6   r   r   r   r   r   r\   r   r   r  r  s         @@r   "test_nested_sortedlist_subdocumentr$    s    WNCU."%% .G G
 #&	&
E D++++003KS%%%%#k****r   c                     t               \  } } G fddj                         G fddj                        }t        |      }|j	                  |       | j                         }|j                  ddddd	
      }|j                  dk(  sJ |j                  ddddd	
      }|j                  dk(  sJ d|j                  v sJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)7test_sortedlist_subdocument_validation.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r'    r   r   r   c                   z    e Zd ZW j                  d      ZW j                  W j                  W              Zy)6test_sortedlist_subdocument_validation.<locals>.Model1r&   r'   Nr!  r   s   r   r6   r)    r#  r   r6   rd   re   r  testr+   zsubdoc-0-namezsubdoc-0-valuerf   rh   ri   rc      This field is required	r	   r   rC   r   rl   ru   rx   rw   rg   r|   r}   r6   r~   r   r   r   r5   s         @@r   &test_sortedlist_subdocument_validationr/    s    WNCU."%% .G G 6"D	NN4__F	)$09`fg 
 
iB>>S   	)$02Y_` 
 
bB>>S   $///r   c                     t               \  } } G fddj                         G fddj                        }t        |      }|j	                  |       | j                         }|j                  ddddd	
      }|j                  dk(  sJ |j                  ddddd	
      }|j                  dk(  sJ d|j                  v sJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)1test_list_subdocument_validation.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   r2    r   r   r   c                   z    e Zd ZW j                  d      ZW j                  W j                  W              Zy)0test_list_subdocument_validation.<locals>.Model1r&   r'   Nr  r   s   r   r6   r4    r  r   r6   rd   re   r  r*  r+  rf   rh   ri   rc   r,  r-  r.  s         @@r    test_list_subdocument_validationr5    s    WNCU."%% .A A 6"D	NN4__F	)$09`fg 
 
iB>>S   	)$02Y_` 
 
bB>>S   $///r   c                  <   t               \  } }}t        |      \  }}t        |ddddii      }|j                  |       d|j                  v sJ  |d      }|j                           |dd	      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t#        |j                        z   |j                         v s+dt#        |j                        z   |j                         v sJ dt#        |j                        z   |j                         v sJ 	 d d d        | j%                         }|j'                  d      }|j                   j)                  d      d|j                  z  k(  sJ |j+                  ddt#        |j                        i       |j,                  j/                         }	|	J |	j                  J |	j                  j                  |j                  k(  sJ |	j                  j                  dk(  sJ y # 1 sw Y   xY w)Nr~   rA   r   rJ   )r   form_ajax_refsrz   r*   foobarfirr   r   AjaxSelectFieldz/admin/view/zvalue=""z/data-json="[&quot;%s&quot;, &quot;first&quot;]"z+data-json="[&#34;%s&#34;, &#34;first&#34;]"z
value="%s"z./admin/view/ajax/lookup/?name=model1&query=foor   z[["%s", "foo"]]z/admin/view/new/rf   )r	   rF   r   rl   _form_ajax_refsr^   get_onera   r+   r   r   r   rA   r   r   test_request_contextrg   r   ru   rv   r   rx   rD   rz   )r|   r5   r}   r6   rB   r~   r   model2loadermdlr   r   r   reqs                 r   test_ajax_fkrC    s   WNCU"2&NFF,
D 
NN4,,,,,"E	JJL&/446F !!),F
..
"C99###OOF#Eu:??8;;%(("""OOF#Eu:??8>>V### D;;  ))-????		!	!.	1 E+$++-/// BZPUPXPXEYY]h]a]h]h]jj>EHHAUUYdY]YdYdYff	h gz%((33{t{{}DDDE __F
**F
GC88??7#'9FII'EEEE KK")Z5I)JKK
..


 C??::!!!::==EHH$$$::x'''+E Es    B&LLc                     t               \  } } G fddj                         G fddj                         G fddj                        }t        |ddd	d
dgiiii      }|j	                         }t        |j                  j                  j                        j                  dk(  sJ d|j                  v sJ y )Nc                   \    e Zd ZW  j                  dd      ZW  j                  d      Zy)&test_nested_ajax_refs.<locals>.Commentr&   Tr   r'   Nr   r4   s   r   r   rF  3  r   r   r   c                   \    e Zd ZW j                  dd      ZW j                  W        Zy)%test_nested_ajax_refs.<locals>.Nestedr&   Tr   N)r   r    r!   r.   r   r@   r  r   s   r   r  rH  7  s%    ~~d~;##G,r   r  c                   Z    e Zd ZW j                  d      ZW j                  W        Zy)%test_nested_ajax_refs.<locals>.Model1r&   r'   Nr  r
  s   r   r6   rJ  ;  r  r   r6   r	  r7  r  r   r   r   r;  znested-comment)r	   rC   r   r   r   typer	  r   r  r   r<  r  s        @@@r   test_nested_ajax_refsrL  /  s    WNCU."++ .-$$ -2 2   6( #
E D  (()226GGGGu44444r   c                      t               \  } } G fddj                        }t        |      }|j                  |       |j	                         }|j
                  j                  g dk(  sJ y )Nc                   6    e Zd ZW  j                  dd      Zy)%test_form_flat_choices.<locals>.Modelr&   )r   r   r   )r(   choicesN)r   r    r!   r.   r   r4   s   r   ModelrO  T  s    ~~_~Er   rQ  ))r   r   )r   r   )r   r   )r	   rC   r   rl   r   r   rP  )r|   r}   rQ  r~   r   r5   s        @r   test_form_flat_choicesrR  Q  sa    WNCUF F 5!D	NN4D99 DDDDr   c                     t               \  } } G fddj                        }ddt        j                  d      gii}t	        ||      }|j                  |       |j                         }t        |j                  j                        dk(  sJ |j                         }t        |j                  j                        dk(  sJ y )Nc                   4    e Zd ZW  j                  d      Zy)test_form_args.<locals>.ModelT)r   N)r   r    r!   r.   r*  r4   s   r   rQ  rU  a  s    ~~t~,r   rQ  r*  r   	form_argsr\   )
r	   rC   r   Regexpr   rl   r   r   r*  	edit_form)r|   r}   rQ  shared_form_argsr~   r   rY  r5   s          @r   test_form_argsr[  ^  s    WNCU- - 
0A0A&0I/J KL5,<=D	NN4 ""$K{**+q000 Iy~~(()Q...r   c                  |   t               \  } } G fddj                        } G fddj                        }t        |ddiddid	      }|j	                  |       |j                         }|j                  j                  j                  dk(  sJ |j                  j                  j                  dk(  sJ y )
Nc                   R    e Zd ZW  j                         ZW  j                         Zy)(test_form_args_embeddeddoc.<locals>.InfoN)r   r    r!   r.   r   ager4   s   r   Infor^  t  s    ~~nnr   r`  c                   T    e Zd ZW  j                  d      ZW  j                         Zy))test_form_args_embeddeddoc.<locals>.Modelr`  N)r   r    r!   r   infor2   	timestampr4   s   r   rQ  rb  x  s!    ''/$$&	r   rQ  labelInformationzLast Updated Time)rc  rd  rV  )
r	   r   rC   r   rl   r   rd  re  textrc  )r|   r}   r`  rQ  r~   r   r5   s         @r   test_form_args_embeddeddocrh  q  s    WNCUr"" ' ' m,!#67
D 
NN4D>>$$(;;;;99??=000r   c                      t               \  } }}t        |      \  }} G d dt              } ||      }|j                  |       |j	                  dd d d d       \  }}|J y )Nc                       e Zd ZdZd Zy)-test_simple_list_pager.<locals>.TestModelViewTc                     J r   r   r,   s    r   get_count_queryz=test_simple_list_pager.<locals>.TestModelView.get_count_query  s    5r   N)r   r    r!   simple_list_pagerrm  r   r   r   TestModelViewrk    s     	r   ro  r   )r	   rF   r   rl   r   )	r|   r5   r}   r6   r   ro  r~   r{   rg   s	            r   test_simple_list_pagerrp    se    WNCUb!IFA   D	NN4--4tT:KE4==r   c                  \   t               \  } }}t        |      \  }}t        |dddgdd      }|j                  |       t	        d      D ]  }t        ||        | j                         }|j                  d      }|j                  j                  d	      }	|j                  d
k(  sJ d|	k(  sJ t        |dddgd      }|j                  |       |j                  d      }|j                  j                  d	      }	|j                  d
k(  sJ t        |	j                               dkD  sJ y )NTr+   r/   r\   row_limit_2)
can_exportcolumn_listexport_max_rowsr   r   z/admin/row_limit_2/export/csv/r   rc   z?Test1,Test2
test1_val_1,test2_val_1
test1_val_2,test2_val_2
no_row_limit)rs  rt  r   z/admin/no_row_limit/export/csv/   )r	   rF   r   rl   ranger_   ru   rv   rg   r   rw   r   
splitlines)
r|   r5   r}   r6   rB   r~   r   r   r   rg   s
             r   test_export_csvrz    s5   WNCU"2&NFF6d(/'91$13D 
NN41X    __F 
4	5B77>>'"D>>S   &)-. . . 6d(/'9$24D 
NN4 
5	6B77>>'"D>>S   t !B&&&r   N)%wtformsr   r   flask_adminr   flask_admin._compatr   r   r   ri   r	   r
   r   rF   r_   r   r   r   r   r   r   r   r   r   r   r  r  r$  r/  r5  rC  rL  rR  r[  rh  rp  rz  r   r   r   <module>r~     s    &  * 5  	=i 	=2@0F'RG!T6#rT#n @44-('0T0:=D+B+@0202<(~5D
E/&12"'r   