From 6107dc6cd6a57b1b1f0cf654272767c7cbbf8cc3 Mon Sep 17 00:00:00 2001 From: dpgaspar Date: Sun, 1 Feb 2015 19:22:50 +0000 Subject: [PATCH] docs --- docs/_build/doctrees/advanced.doctree | Bin 27281 -> 27276 bytes docs/_build/doctrees/api.doctree | Bin 434400 -> 435161 bytes docs/_build/doctrees/environment.pickle | Bin 127756 -> 125669 bytes docs/_build/doctrees/quickcharts.doctree | Bin 46205 -> 46210 bytes docs/_build/doctrees/quickfiles.doctree | Bin 12246 -> 16481 bytes docs/_build/doctrees/security.doctree | Bin 44568 -> 44573 bytes docs/_build/doctrees/versionmigration.doctree | Bin 44519 -> 43293 bytes docs/_build/doctrees/versions.doctree | Bin 140489 -> 140592 bytes docs/_build/html/_images/login_db.png | Bin 16169 -> 20244 bytes docs/_build/html/_sources/quickfiles.txt | 50 +++++++++++++----- .../_build/html/_sources/versionmigration.txt | 22 +++----- docs/_build/html/_sources/versions.txt | 4 +- docs/_build/html/api.html | 4 +- docs/_build/html/objects.inv | Bin 1765 -> 1802 bytes docs/_build/html/py-modindex.html | 4 +- docs/_build/html/quickfiles.html | 45 ++++++++++++---- docs/_build/html/quickhowto.html | 6 +-- docs/_build/html/searchindex.js | 2 +- docs/_build/html/versionmigration.html | 19 +++---- docs/_build/html/versions.html | 4 +- docs/quickfiles.rst | 46 +++++++++++----- docs/versions.rst | 1 + examples/mongoengine/config.py | 5 -- examples/mongoimages/app/models.py | 5 +- examples/mongoimages/app/views.py | 13 ++++- examples/quickimages/app/models.py | 19 ++++--- examples/quickimages/app/views.py | 13 ++--- flask_appbuilder/console.py | 13 +++-- flask_appbuilder/filemanager.py | 7 ++- 29 files changed, 177 insertions(+), 105 deletions(-) diff --git a/docs/_build/doctrees/advanced.doctree b/docs/_build/doctrees/advanced.doctree index 69bcc77ee6038c469a5dc5c65f1b18addb9bb148..b7cd6bced740d5de869e53cd075fc225f5d4e64c 100644 GIT binary patch delta 141 zcmbPum9gh4~4|MTzC{sdIjJc{+(033#!%jr(%gdh;?$Co z%)IpCBA&_TGUbGML2?YC%$X_0MSMVZZ4v+E|Cy%30${cvkj#+D(9DplEfSjSo~5NA b3>1ki5&@E-Y(=SQAZ?;xrD8y`G)WHt#;7JM delta 167 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 diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index e637207a7764ceda294b0cac9b0bd0aa9c0e983e..d4f6976f29ae6db9a020d1de3961c9ae57af572b 100644 GIT binary patch literal 125669 zcmb?kWq=&T)(sNdcnA_CEDW;9ZZ?huh!6-N36M+(kY$i_>3mR2x zOLMZNy=;6(V^hOUz8}&nwWe2g)2md(yEin=ZEQ+r(yJO^M|)#a*(Chdl4wrGTN=|7 z8|&N4(p@(@EZwcXwzdww+8bMHYs)f8{M^0fs6Ep?>f);;+S<}Rr^WlIq)H|lY79?d__uuA?39R(I2DRK$BU zbhI(`OnS|lc=!6IL?(msS~c+=b&2}f13T&x@$T)3 zc?^`^DBe}pD7|qJ9y_CUbrC0mlJvA(t;(Vp-q ztdbOly6Ng{3d8&q4);+w!cXDIEOnziGDquN#~{~12)45hRz4BI%4djRne)h zk}5qOX-sg_6PZS6hnz|^g_-me1mDd~Pi64@wrPmFb1rUAKvl9Sq4$mH5_NYsy+=0co}p1^AZkBAr(zFk z!Ukg;%tYk4o1VqUVeNY%`tG^tWJcCH)w-~~wYIsnWnOD~wj{B)o8Bjz#J-_P%s~=s zWRs9pFK=xrpGq$i$ERzM%YJUUmbrA&ZGWV+cP^zKaF}RVkih2OkWNS{b#A&on@U4y zDoHPuaUQaKLTk(1#(5n|h)vH$D)ZcQ%A{iH)`(Qnnk>=1u zT962L#PNwtGB1f%B+=%k(@etBMInLtxdgazv?rU}pf1L@jO5VnraQ7ZEC|hEA#xye zW)`{#p%=U90~k8kav&nM=OPXOtRs_DwJJHUG1KnRcaTJO-SolP$cOlckVAb#$YK5= z*6eAaJHL1$E}P?t$xBN<=ormxFpe7!&88+;kx=+F2jFXNlD8Q-Ea{ueUlo;B5rB1fh= z?1`E5tw{McH+?%(wsg4zIbZ9~IsI>JS=owzAKyb-Ju%agIv~TE;2&v z!Lecw9%0INXpjf>rtdd^khH!F(mT1n|^|c6f{1G&=2K8bA0x;{7m{O3H!90ekL3C+0d}hAuN&J z_MAySkB~38=@%I?(C`w%J)H~3bcFuq#+JtBL{s`@3Hgefel;8NwTjdYHK`kGQa9D4 zZmvmr8^h}eIT&co`BV)r$0kEeO~>Jr1Y+v zelMHS`=Km+fRr{sO8#wPVPku$oaf@1@9j zeJ<6mTGO9OcAvTF|I23gd1!WDWH$}K8am_zIQ=CO`N~ay%|!I3;cNT`F+a=2W7yv^ThF6)Be`T3TD05_QR@jH_0a zpL#U6Hpm&S>WX^2SKH!B^Gm$Tl6ViCzU$_0Xm+^Z&)qV~gsM-e?yP$i{N54oX1w=6 zONA5S(_Ha2wbmz^l4Z5NVSIPhx@d8k>IrCGuja+`lI`uh7*b^n*&EwyM^mzVGSAIb zFZ{IRFx4BzVY9;@j#7R2bKTLBw3oR<-_j@ERb%_I(_yNg`Q70UN2&h&8Cb5MEaF{! z*j_Va^~-n1o}mV?>tSjjdrEZvaFkk&Ki3`I5%2DeO==K+nbIZRy|vCs*0*QW>ZrS5 zT(!Q4ZMmvB(ZY4E;wg&R zOs9Ik@hq*O4qH#MiP6hC(^l&VGTsfopt2ewnB8ocNXhB5$E4CpN`C8y z+EgfwtrX%qpp*h)}YHd&( zNtkiAFgy{_8w&NDuxEUtY$l0@hFWeawb-UqqIPa$vZ*1XHrC#GvYy*+Hjw~Z*#ejp zs~VE^tvDxbRhg=`q-t)=@I1AacPG@Q+Aqhqxg9Ms#;Xc(JE^GK&NfF8L9QGc>eOaB zh>x1hCBzt8h)$@fZ*A&mZpo-E=yQ4AjAuvbI$<&TDK*G-Ugi=pVSuzZJ$XY0mM zl#3A!YDAddk>a<~mNBKP%H4RWs;$MDR(ox&8l|22HiFUOX(O8_y>G~Yf)c4Q+5yjG z9o4Rni=> zygg@JnAh>*m1oqUM;+>h^f_0cK zE+cL#S;m`i7t3s{yN6}Ehq#SAym8xKz|m>Xf&^!Xr|oSd2L|AsRclAv_{9^l$D@Yi zT#lQ3LZW7ddUv zWq3(W<)n_M7q!}>Z;0Ao+*!|CJc<$-s5UX#o@kT<87>F-Lv2Ij0&damDU}FIwN89b zwWXR*Tj<4w|NOnRu|YQY`mkUP63j}rWeXCzbjWVhu%QYSiA;S0q%I7Lut*|U zPiehPy}5A_?)J)_I+aDWSo_M+dVu&Tw`J%kH_gdgbuw(p<3~ zq;m?6o37-wQ;AXX81w}>I4sB^5@e_?h-JLUbTq3&wY$J*ahQ0sN$GRyE;-k%xQd-II~_l1{KR4U-ivHa}Km5EX||EbF3JF z`f2*K>;a zD0N>+ESRTG)hPw`mD9wVb@z_MC+{4YbBxnJv^_w-(!8|L^tactejZ0UM~ft-7tALjQ0 z@w;M*>g$bKxnR6d2l4G47fFN(wyijloU#v!|BDO!Un2e^3YopA$>0qb??%j}+GTJf zyzGCFH51kskC%sqxI#i~U?awV7*kh@18)qjwn6krliOJJrB*F33e{CQ1)nfiOZ@-p z3KO^5lDIUvroiX5;)%>m`D94~w!nsT;K8+@bbHacVsT1&-Ss z53)z?DrxdIq?^L>y;)pauOyAi`dFKH^HJTBpXk5DTSU!r8v=(1+^puQ{;gq2-X?BW z>>3i=gzqp}t6K4R=5`&-x6$1pkyh+x9nUFp=kn^`1wocekP6#wlHEpf&rQ^wbh6Cb z!6Ke>Wd{?z{btW{?$QYbx7)iVr()ZIcjnLc1189WkSgA|Q1^s+yjMJKYFo?TAz>B| zg!gGTx$XXbaWT^7!hYtWZwEaPmezyf(|QgZzQOC2RS)GS_^>!zvCSp8VX8-T4Bs~S zs06XzbPp1l6&szpjmB?>%YtgkZfbaICF&IDO_}g&vpj zrgoEhQm5iu&8H*}>&R(YO}U|(z5D*O_8MHlXG(FLHz?ss6$g@xdN$1QbK-ad8yEgz zSv@ZfJo>EXNuARt*SP8hor;gS7bTDBwmh=qNoP-Gd?!h@^6->*VAM+mv0j!~)?G5F z68CC6{hgb@3vl{O;}z{NDA23obH(-|UiZogP2J+!#s>9TLE^7V5bKR~kNJWDPQ9T$ zDBFP?%)m!(H(58~L-nr~&1zG=}xSVNYA<|x-ck>`4JE`7;J}(IPg#@(j zL8QrlCkl6=Y8&ysy82Rk3KH^_IEy%rWI31TN7&-k*9F;qBMu|pW6nC{-lIngF%2E5fxLGl3gF~pkH26aY@{OQ> zN~9sS{Vh96sJ{p`=ju~z{Uhz49C3M{C^zK(t@8@*O#et~*4F`p$2NJT*E^x@vNBTb zEnhn6cUo4$4@+imXiGZaNv$ks@0_O86F2$FD5;-bXVfY>k>F~rD#=*4WG|V#7h|UK zMH|&s`^#-7-NaWZTd{XWq%h9&PPpo>UHZ0&9^%t_E*wc=98XnG?K!yeW#ZiW_&&S2 z>2nP8_TGX-QzPyH;#IrsNq?^}@4dx)Nn^RZuh%EcSzmExy><+yDkB7*mGTu495GbC zFpvGkrfuYaIQX8e8V8^|UkJRxw08Snv<>JqJ0;tzB?;%X! z%4q}bGB`+VC|)B!95gSZ$HIJVB)&GY4gFyms*Say+%UU|II+Hepq^ zN*&U-O;$;~i7OP3yJJHg*H;YJ?v0`T}{?~Q%W&g0SP{SqEij9rDdB&B|*DND+ z7$0RLCC2~u3R}n|CX&r^^KIKYx>w+A&5r3r~ zC;U6Ywqa>*CvL5Sn`N)%VClUJIJO|u?ZxGaZ5(pwk()w1%i5tJ#*PxhdhB7^`4_b9 zsU*Hy7^htYwHhzpN*%i70@OTOoe<`CqWHC*T?Nih^55fBJ86%(0eX^nTR~pEmrnIg zx3do6+v#?Z7!jXRWDf>a^7UBuv~{v}8{~Lb@oe4D!mkL--Dkf0IHe%j-Nfbi6&qAR z2)8pewZQ!}alc~sHXAdwjku<+ZIchW)bxTNyGxKkmUU2j5HQxePP1-E1)DooDwD*l zBD|bXdlm$pAweUmoIOL5L$&^>h%c7R)NX?+$HlYt)dASjkcOle%1wm>hi1pe(z(SDYd3;~Cwr+7o?XSHCw}FH>w(jZr$d`A%9C#76 zF3fAac#U@Ner98H?m@b0(C%`ACB>EXB{lD{nR%Uju7>yEE^5AWna(59*GN;oF?%OOR3zZ*uBj&di(WH2=)JS^P%c@OiwH zG+Qt~3?Fs06lB^e9*--| zP@4rI-KX|~ygJ08bpQ%(KE9iN`jPzt?Ju~~E$rN-8Fc&~bfyxS+C+UlZXl~g zbeZ>l-(vB&VwWtw5C`b2eVgTh5}?z~M=KM=}`L3-;)j#zbkfX$EN{!JnubvJ6xylqx%SnVIA*- zTXFE9Z=MRMBemBc~Qdq2$84L3;pc`frz|0q?;D-ulWiC^_F`ZwRrR@&i zuBu2a^J;vdJlD2fpvKoYa&3I=F<0Yhc13Ee=Y>y!ay};ndL9_4@y(i?mpT4gM{WuT z2f3drxv!2MZnj|+m1%d?X<;q(ZEdbPy|ASt-e+D@Yh7)7D;{eklNoge`e53`qxMv1 zq7?7eD6_t(v-mS+VN_?+$LzJRaa0Y}Z9_Bi#Tt1ZUe(qzPo1M(sB>wTVbVo)9!fIl zTYlH`(Xd2az~+H|mvXWw&Mu^r?ltNn+DUYFF?(~w$aT5|KP^$0vSDq%8ySM}U@6!0 zGP;4g%W1{k6+{gHs<88wXj-DKVu#iJZnL{E*Y;|9g2!uUe`SK#63`ofK)>to>k@T6 z+XC!KZn*K&oE#=Ad;|T!-;K1A;Z4N!gTMT)H=|*Rx`oZ_`}5Ps2mNsmKE7?OpD&*O zMUU`&EA6+;^fp4*0MvrG9qmih9qd&Yz8q-?Mu|% z>^0cG2KqUhPq%yM60Yy16;|#eh?AWa^t~S~OVk5ww=k`@(+BAbJ|ChLpAQogWLkH9 z1Px2nqikN&pQk>?lRY8eF?xc>$7z?7;U@^`3rJqiC-M6d^%PqJEAAIUTs}=#aQO_a zaQZAkT=9aw&!J_BdYi?ovGO9atrLEo3rvP8YY_P|ci z)Qb5eY8&b#%U9_L4qu}chp!XBogmQf4g9)9y~(z6v}K17y(;>|8M8FtK}=HozD0lV z`!=nt{X4``0~_RBbXcO^W4D0%da%lI@IGC_^#`=?P^%A#q5AnoNWR;3_`Id*XxXuW)0n1(%R~&Es=4EsgiAZ{$ao{KESS{NU#1D*6)DDVt+zCsog+ zzCv|2Uzja9DfKm=@otEW$uHG6sFRX8xm2VmZ+#+JFQwaB4ER!9AT)*AIEmKE`?I?i7?x4ubZ)!+DeHeWc&U!n4e zo;T4?{lk7dnoUf!;4Sa+S&0M6cTQlNQL4)-*xu+TUOv4gSer4 zO&tyRlogW%B^9=;RRF0`t6~}NrngYlm2MqwWAU!lRU@iKs%~uViBn_XFx#B!E}$M* zRyZO-f6>af$va%-8r2hB9Ij$w%1Z63jD`5XoY1x2%v!1!T3po|%ZhlJP+p4>s#W#D zFH7US=3&mejyj&*&sTl%Q+#kk+dScKXg>3*AKE+Oea*#8hO3%V{qbv!8bEAW_P$|8 z4a5(Lct6gUy2!T$tR}q&VOimb^n>!lQ~@CCC~JqgurS3_qN!c2E)M(4DteztOZ+v& zD$johjbk*UDwuKWq-)1b);)wohQDX(HrWz_|=W~Y{eL&8nMx+ z_2h@{-Ug$Fpc*=val8yy8_5>FQkGHcqgRb8$1*<9Occ)9$~xLxu}`QC(16*h@itHr zJF(gjRY$gm-g2jyXZU!TMaA&@G4ZarzQa^k8=*3-qb}Y96I~@_&by8Ai>o%lvLe;r zP4#wDRc>mmo0{aNrn{-xZYtrX95YHHGyuBqv;vtbicx}}^ctE4hhdZZ3QeHqH9PU)FC5AD}XSt+%AO83-*`2DFV zJEdL*{vG`ODeSlS{nsfyI^qKmwGPv8<8?(d!f%eKI5govvIR={T(& zaDr7;jbCIcMBgN;Y8bmMPd%7=O3nlPQ)Q~*YyZ5XR3_D)Iw%E=Q^%%G zO`VoHFLi$En$)#O=}si|Q0l4F)2WwJuON+gQ=g_jOMRRAF7+#>QjGU*NVah*pO$*c zI!3~7C1IEI@V_;S4$pWTp6|uWtEz^|pu~@@y=nJ`<}SN2Vr~P3!*edK*S4r2Cpg-U zj^dk#!OfM!(A;-FRd6(xj(B+$A?Wt#%Xm95-XzA`k?|Z}UpPGVbuQ$B7evlISg`Ln z_I-za$D`!%6p1HB6Zms){ydQ`;<2!l^-ad1a-PdvcS6_jo^lzJ8OjSr%mTMqO=8bd zXxN#6Az?|FTkY_=3p-VXbuyXi57~yAX~CGvWP*wdx+}Y_6Xu(`)6o?6*eI-r7u~y; zkFLA1>xN-neRCtw=TvswG^}HGb20an(0dwtuN&4oOZ;?nq3pZEV)KW-d!SU|@S4Nn zskg&RMu(Sm?6xPn{mO1LP;z+T%dKN3Djo6u-dKdQcRB87R2;v%Y8F9bYt&w_72Z7h zn5R|ozcR?U;GZm5?ag0#bIUtV+=q4EIG3E&zN`kPJyvu08?Rhsfbq>1uWH!R%e3gN zPVEGnsMcUy zWzQ8{(r2f>uAD*0yM+pLKs&q5+|O=#Zt-l7;_jL|IR`k zz;<)(f%~lbKYi4D*PeXFjY-qnQf2BubVP`QU|i)A<^7)wb+A+lLogeLI0QC7cl_%Q z{hu?+)S+mGc_k24)!#oz{FHy|;8Fb;Y6mmK)V96Ibem~|Wz zs^P>s(R55lD&{av#y*lZ@Q*^&QTXYo!_*QOR~?Nd;-xkOh8f7r!T7%>COvgb_QwGQ zq^PCR=y-ZAL(NskVwqioetj#dNzWF_7+yKAWPO~-gI-#(}= zke`#Ojht);NB@@UZS=eleOz@BmRUV7mP$UOSg%XaV1&F>aF_XUmxtnF4nvTZE7)$7 zyb={xT_q4timRoPA2;SO6!F)<8YQnq*;UsG!h>JWN>!VR<`|M^DU zhz6*36O5~F#*(`e{^5T&mDEERO~By8`}-hw+sFbKmOkqJVS9c zmb2XueJ3iex=SD)Q+G?HFg`;Oe-Er7`d*Y>b)O(S`2DN|h+aLWuh4Pb=etVJ?lwi( zXNC;>0ImLCKH@HKT5I(n+9AS2Fs^zSOYS<>x1JuMx0u8HI~V9t@%Nbarv-XkDt3aN zK)ccBNr6A*hd*tBGZI(y8CWCFvnadjIYD^*J};HR=!``83$R9>7g2WAOM>v=FSFv8 zXZ8j-zQ^ST* zJzN=#ZUrM&ZWJ@bzbP@^(lNAdZ%d_+IkRKDgLXswy8?gD4}aeRXC$uj2e5|t4^ej2 zM}qK(|Cp5k@zuqMH)nFbS1O|F!2FriC$vLmS0GfVwjm+Zr@%m^&tP2je^^qbl01CQ zs4<5u6w}b?^@T+HQb*HzeI*sUUSG4_2=YVuEF_@uSMbteMJBv_s@}Zm3LI$LeSFggC#zxawCdDGqM~7s36;2r-B287_%A zBKvD~9SxtN#_pc#Mj(c+OUa-=Ih@7~Dq2 zl8W%6DchqDQ89#=9(hQ4z#aln^O{>sfDupT-76+i+usBfQtNG!BEO18Rs;v%d zSX={T{7(r%cp|LDN`S?_!lK-~2%H8NIi52$#v4ql&!$M!)a(@KYoh^tt^?z$b+II$ zeLOyM-PR*M<}lT$qz)06>uZ;q)N-lVN!JX4Dv6Fc z%(EDyJli?t_IvR^pwGDbfjBR0DwH=legDKFXs??59i>u8z9DZM+s(K$UhotA_=y%gLvgKlf;HMrLfKV2 z3&JCR7pWA6XC%TW!y4^&McGwT1mVGVW5ussyeuXU=}H-Mm=p`ppcrD|It^b2m)RCEK zF_ufKcl_KL#KHIxY#svRszb3fJASUqVZ_B8rWcjS!^PbZ+MOoyNU7L~JPPfG$Rz?l z+7Ca*0%s(y+)`LWoYrsJf2qH!O6!biqUSbY&j>_&S;`LPRRkM4VRP5}Yj&{TD83I4k4?oKSXC$ub z*|3J)b5M5Gxq|T6J&%<0@=<*-JKJ5k2XVnKLf+|5cr z41TiKsTkQ?PTr&GsH!k|W^@njklE`YPUso4@vrVhN62y?jH~X)lCl(sJwX34hbtSd zi#gYRP#iy`9cwinmP&{k_?@{w!gizPqo}y*F@bn=J}#9)JVO!x1gsJBNt9jnlps9# z(^4sfGZNv?z#1{1MH#o21>wP;XT>jOe2`p@8b(VLj0rO83$#OKuLi+*y*VTJFTd1_ zXogHL!MN&WEGd(%^DFcfbC`U%IE828uZrW>v|}yP>ryG?$Rc z#MS>A)-e7J%C7oW5FX>-vEpZ3ZfAEoO8MTjiK+$jW-{N?4w2W{LkB3IYxM*ALYx1< zxavnNsZF_UX!9d~Vw9M}wJoNV8E}4RQ17x*83_@5RyBaw=~ zV2v(+qwK1G1mWq@1uyahb=eH7-l;Bf34nii$PdJ$3d6*i%}NLdVR-Xr9R3wk`6TaS z>r6Q=)yj9K%kuGy%O~(3on_R@=nZLBfx*8-W~PuPBDO0d#T>43RB^gVobEb~7N>_) z?BeufyHTf1@V)%_-WEJVk&iyGMxDMWyQ-fcJaziB64+~ss-s`2(*MLXsya-Z*$kl7 z|8qQaxAFT{1JN1ctOnz%L0D28KFKT&U7c}a4p%r_8*_YLL!7Uvoohwbl1iZ>hS9-n zH@n-~f?vmvU)O?XC~~kKtPykw%C1^p5S}9CQYj42NQ7?yYXsd8Wmm-n;lVdz#V=@F z-@_MXOSueWYK*rrZSEev>^O2yZ4)#=o=ss~Re>etG57Fu-8LgW<}lT8DGHC~n~TdW zv`a0@mQpEX#gJNwc0+2Fz=!(b)fPA-aV3Yr8d8U&?5Yuh@JJoWN`TaXG5rBr-Qtpo zWqOP`igt+pY(plP^iK~m8jT=#42-L`!jk057aj#&x2B(%!?dFkyp6csR=d>%ZzmNy z!DG>G2;N@cJNV%{THuVtl^q9b2p*5Jt0oA-BX}Y!0fGm_WcdFt_+@qsxf88EU6Ntn zPwynOf!>{AT(t|9q?h+E3VKeamzcwxqq4iJc%7oXYIb*%ik;o5XgBOm6ZmvLe0K|+ zk+`aRz#4Y!P)q;4=`rST9ip_Y-)nAHKf@ z&PZJC1gv4Z4rN!>3&LZ&ft3K;gZ*sto8OWdXO;||q}5NK0t^PHs+o&kV0|8pt5R5! zbv}LS1k*^*F^B6Dm3c?}&)5Dn^G#B*GvADM!+eXtTmA4h3!IU-`e|6hyh7Pk89{i= zx3dypejPvadc-c7d*;dD9klvRQGmyZG9phf|2bDJKtHg*5C$(PV@dXTr>IlZVtU8> z$}q+F@9eVd0Ev2_j;b{|NGgSzn9DMk?M9S?1%HSif2ak|P~_z>SR=~eD7)$iL3pAZ z$%44xMb!ebD4NQR(sc?94D1RQ4Fcav)!Czo*?)W{rHnCc!nYiC&L;|PeB>4Obfyj zmOJhlWc#;|Hc0TcVT^c4_io%o33&iDx+NBodBB>OzVo1Fh?S|A# z1b(R>ewhW%NLuo;6)OQ!2gkh6L@N1>W2OGaxUvpUbfWUhEE)Q0 zT7BHuS$_b9k9XS>}`Oe0z z8zkn9I;K|RCaDyvVaBbS(QeeZMd1JP!*8{~8HtqK25Z!~9c5SDAqY>6f3xCOV>TxM zi!y9^nnjg}sWYGDv_odcii|y;cXcPaL#w-BTy-~=)G8|Y9>$6}T;Mn$)P8)aaTHuIdA5Fk{<;f_uo1dpHz_7rF5};g7K0 zDE}xbxWO(EPrApYk{>tbFck4mz#8SBL>V{O1>wP;X2q|(?{l0gtOD0XJ0F$*IS!Ly zglA~=d+Z^*4*r=G+9BR^Fs^zYONf`+7K$((QN;gk&I{QeL%z*{!C1 zR^b(?*x7g$?M95(1pc}o{)Pq4NLr@1M=FKU8HwwOzU?rf%YO%Hqjxx=7PSH@AT$I3npUb_tUPK<|$Dkk54w3KhcAtSmjW{d!oT-n{ z3UNM$an&bSa?j#7dxd?W7?alfP*x^KYl6MR|Ao${rep96ozLWF4vpCkj{Xf3wx;p= z9lja+KlE|c=U8S{{X#1FgCo}MOEwrizY^fre&9Euz?j1rn-aFCV1>VCC@5xGl>h)rnoFtj4tm~MUspS5H?`<)QL0yMT z0+T&p714p2GJF}WenvZqZnrF_-*WgZ5BOER&=I2ahH+INEV)DR8EvO9h{lx)7p?Gg zuCI9Sr@d?W`b))5{{Xfd{s#(vH9vlk1UWzacrLb4YvV`ox(*CpqQ;WE@}{(6ERqVbx!^`%nC zoLTd7wikR&>wODerZzw`hOG@@aCcgKd7Ny-O1y`e%3=z3etdfiMlfq$nV#{XwWVqC z()g;JpKfXXfY9BWbpv;$>1diW8w2DLwFxTIoV}&Isg(DTas|pbIHVdIFs;K<%odVZ zgxg;2sVOVPdwUNJI(cFor|t4!t^b*Evs4ke<=-hc~zB)zGsQEB_06wx*+LP69bCQQM$0&8d^} zwo^*P%m)o=Re4N4Rp;I65?JjA!M4!NvqS zn&!-vwVQ~_G-sZacam~S%9Buzw$?k-op=*B4)Gn?EMs>yU?)^%4_{uk>yg^s2< zjj~R=p)$>Jq&yYn(Dhq6e*~CD7ve#nC9T?YVDVZxJ(yM7gO&fqs_jWf)13LTIx|q2 z<}^uprj(nd97j2HH46s1S#&4f#EnCIq;(Cucn|x{oDS`UK)B`4aE6n;rBZlQF{hsU zpxqpf_Z9dYKfJ~QXCxjY_k%Tu<64yQR=Oa(Lr;R0z~Oi`eq_*ynXBbos6A1KSwW&6 zn3*4g*3s%q34BUGXL16hovC`X;t1UU7k}v0TsEk^GpP|G;7~GV{ z5=x||fplgOPP(CYv0x6+7)|eiQn9b*L2NfPyMjO1k3YnMXDF`3p|FPK!%)VAA%gH| zIzlRi;TehWBVi58N1^PhC4%taN3#-Oc{T58w!Y6OPe^imLJ{JbAA=r4tM>%`L`2_V z6cI9NDO$n*G8nwNj-}ZXLi!#@Pces?hbxoY9Sq0Ei{BHpU#-!JQYj?KaC{Ql4aX-7 z{1iX@R12JuxVopo8jep#*;Qu$q&nFU zVEJq`gXMEz@CrMYWSOs7hIKxVzG4oOk4p3T;`jpXSkru=RO~cggmy#o#R9*?55Lp` zXC$uhWw3_k%TadK6@u_+zLJ#y&07YZ_{rQWdKwoYTqbkLc+0lM+0nkpHqOME%~iBR zX7k^N1Rv)4=6I0}UXMEE6@1}_vz=|Gt_Bp+Tmyr5-La%J|Ba*Tm_y7V8Bt}sUV`4B zgKF7sl!{%po6v4#yIJ73_~HMuz!`}|-3n`DyA5Sm-7W}EwmVn}$Tl!$-i$3-9Hz&Z z|EAUZhIuvCFTip%Lx4MB@P0d%X5R?wd^df?9Hw53NQ2e}LUeFj#@rzQiuj)%|H&nkY_*eY+S1ovk;)=WmYnXl=Wmml+ z2#=~arBWE4kqCba)-e4x%C34x5FY$pRsu}-#%EnEi!0k(D_dJ|#_!D%R)lpX#%S-+ z>T{#1@KWC1$~l46`}i4*e*ojE53%H)!O86WojxKq<}k@{5eg5=AB)3Jv_mb&r&1~8 z!_fH|+6|rmC-Bex@GmTIM&b&732W&53T0P)EeMa!Z&(S?*(XaUX^qM!Gh?`KY4xZ0 zhALY19exL)-@~}-2P{b_KgAF9`VY~#aSjue(I3U*Puinq^k=Eq8T|$AhS6UI{+l2E zy9LfjT*W_N4Woae?5e*6;W7F*D*;Ah0Y)nqVrFGLrokiqO3WIJe{Rx_*;S+R%zT-| zKeYOl4nKqCbdJY1d|x2vTy?=zjbMKz7+0-~CE4dI9TBjrpgT0-nikWf$hbe-3`(m? z9$j@FTC;9a$=3`k+8qsMFzO+=o_<_eC@$tO1bOPkb|ZFgRB*dpAf8%%rIH^v<}eiT z{a}sQ{ZV$+06}>0fvg0?&W-!CJ0JI%3?r;YtKS&ZRzM(`yQ5EsfDk50;93jn`(oVSF9Iuj|LJXTdWR*JlWRT~MygKx}Afbf2}Wq~RD@ju=Vki%tmPb$Jcb7R0w zX!U33lLL;_rf3206)>*a3`_1c{G3174?-}}a3Km00h^1vEwno=$(B+nsRTl9d3Z>*0cdGc@X}1pRhcrDuFs2t^2HrVKxd zR!{QepUzSHE3eR2E(k`WCkP({gEzdfB;lOosdF3z;A%w`U~6%|jdrgE*j6fb0k%WC z5n!yqxA(($u)rCK4D1MN1Q>_1tHuk$6JP=>0Ri}qW=;UPVk*1_C_+E;Wblc!`W;O_ zje3;vU5)L8ejtAm45l){lH~Ip&CXDuo+}iU`d!5NWbIs2zpGU2)K5XXp?)`kPxZs6 zS>TMswVw`asNWrBSM4DPkNQ1X2~gkJRaX(lnI2=#ptWCh%|tVZj>BM9Xe>!I??{AP zb%9@IU5wu%2i}A^9PA}AIdL;$YX0|@NoNZjK*U6N-yD3_%k1W4jTq z78Trk7Kj%&A(i~NF^8duuY)zh)uZgH20?i6Br5^oatGc-=LcRU!w7R}^?`R>!vah- zj5|koOpO1^(&5eTKMy^iR0_sbjaY)UR3kKDLgAVirX9h|*BH%olT_?$+{|{vc#Gg$ z{rENuo}sutX;?$JLK!!b1>rH)E|tRYj6`?`tRZ{>%C1@{2oJu9l>p&AW99?t>>;-Z z^UR8&7SrnKHz!(t`CH9)j?Qtui$iYrUz(eTH&-89%fx}bg*`$1vo@1g$x)1 z4@J8n@GyZN?uQ>?fin`<>PT2a;87^!7PBBc0*_`TKwv-l{J9d(+cAAL{u@zL8krjd z9z(0oT=+?I`6S~=Ekz5+Tn2+%%UF_3p1B13fl?+KmD1zH-SOI;rt}1<*eN{`?S|5m z1b(s~eu@RoNL<5HVGX6Hp^X3BCkT(yGgt{w+Ls5;L`PG5Wvgnyci`r3K#>iTsWIM} zwECTE9QEj@d^-K8v(NxS&xUc;IarcVzH=Su20oc(R6frYZ|7-mn$Pp4V(0S$v>QGz z6!=Ac_{A1DBXRvMfi-+yin6ON6NJa-<*Wqw92_$f^?O&W_-C2=Up7UhmRU0N6|_U- zKatJEB>McfI_3I>^>N0fx)OcB@>MXdx*AKe%>P|xLx6CuMpVMD5y#hR$C~i#q+%!h zdbAtDZxHy6e)vrmI3sbbZ-zC5--5EM{v`;H@LO345Z*1u>9caT1Bz_8Oo?%Bqa89E zZ^3n$M7+8kKY+?RU|jWYEJ&?Tjy2a^fc!?66cV4l$!&GNHS zv9IlOY&UE_FZdVy_!ljBhT^)s1Z&8C8D&?!A_$MISEW)Io{(& zCMyB5SL54&xf8I;`N_q(U7-m7%#T6eqSgEds4u58^)_0;|2r_QdKXLX7krbsurEYm z(&3^Mo^ZS;F5lNKwLBk4rH~&(?}unN^nN7pkNxmZEO18Rntlpv==}_3%vvo7kKWH& z3DDa=){((^2H$Z7$(6oK`6AphIY#_~RzIVN(-Yrng(v<`o-fe^V!wjHEoLl9EdPgO zUPrLXT#K<b0B134&gEwa#uoc+%MJ`P3|gEv9IK+Y&Rr#6?`{8zPkm_ zP+Wx`u!iHFD7&gm5FSarq*553kqGY%YdG$Mva9+E!h`o?CBQL8oQ!_i$w@50KMGcj zZSC1pny0=wX2{D+@!BKf`+ui^z;C4e8yj6`Qx#e|EUcZg#0dFe9MCEm3@wtii zsd?R0Dt2Bg&~A9$OyHaQ;agbXjKtO464vlqiL$Gz1mW>Il$8LlePj5qO{LSy)EKXt zR$uIlYiRJXIt&e9bvO)e6=O+Od9f4hHj?<5!&IY^I!auQ)-E-vW29mybt|+RQnwcP zHh%cF7C0kuCAWh$q>e?|Roe@~BXtK>0;KkfCGj7DOJ|k2G2o80dSl%Qj(oI^Lknmf z4}+;burwQMUcZU-5ObJqR9<%ypOdst&FjumvGckM+6}Lh1-`2vKE(oOB(COeu!h&E zD7$K!AUs~Dvy#Uv|95HWyfQZi+?`hQIs=Y;yzYS(@VX}qCi%e9@S4|eCOyO)W*e2) zxcHoHl>q$%acrwo3AMO#u9;OW z>gfa1W6U;MJ?YVI+E;FdHkC#rs8%qzpNl1_=A=i3UEAp=<}mGI1Q$8GKFFK^c1YL- zI;<98p;Qj7NgY;`I=m)zL`~{Q{RQ(PG?){=#ezG)k2^3F7jqbbEF8pkqnwM1s}2^3 zNBtpE$&VXz7>f8qVU2Q!p^W!~1>wPuU?rej?(F&?t_9XbJ3li23uY$62uIRtojAWF z-p`tcvk~u6!BJ?0PD^0$uLZG$PN}7kgSm(t{?C_>$^IDf`SMa}G!iUB4fk-dghwsG zaZ<5UaXj0N6ekG&L_hu{3!b64q9?-|B~C#Z6J-d(3xAqa3d1uJ;itnICC)$@6J-d( zgP+ApK#8?teEqi$x3DYuudVSxTO(#+!kcf|J*kL7Op=k$rX3>xjh$0D&|~?yfJb!> zxD>Xm_!3hl5Xt|%9*{Dawo|1_2Tsg?N#p}H%i6M^G#?sJl`zv zTm0~US>TMs^}Q9=@O&G}c#~HU9?y5M65x4Itf?W<_FuBh1R3?;wEC&?ZWG7tp3m`e zG=t+iVel?5mgJaEl|wp%Vdfo`;k(7>J=&*c_+F{l8NLtghT;1K{(v9;pasrIT-S$S z4Z{zk?5alu;W7LuD*=Z425%fj9XOa8<2^>JFNFg40oCJZ0IN^H;Ei7_$to{}0^PtT zvn<9Zj=I5#4xSPa55{_v=GDFaEw#*y|4&QkXLM*y{ZB z*w^wywi}i|68y)0{3jMXLvbBGg*7C9hBEHj3c_RQbEy=DXC%VEfHfq4iL$G{5`+i; znw0>_A^-KQ2;0nxp}wKb`>$``;x};p9Sml{z>+%zj67MU9O?(uz&&#d=f3bB)_>3! z(?DYhZ(4<)q*6$OVex0Q8y0^N_^*EWZx%Qsan*i@H7x#tva9|SgctoURst+q|7lPW zE}0tx{!Qy$zBY1#7CxpEzWzZA80~^t3S6}kmSi;Kp9ZarCh*E^i}70I^!`+{^{*l^ zSJg2!?_H&m&pTG28yd`3-(7G${J5T>xR}EbT>mn*8^L;^g8vyP5RdUbQpt~t`7ZD~ z@qJ;9VEs^bRewQv@Byp@1j~&rr*=NJFd0S|NUKlpXC+kzr=R6h8}T2|c_OM-LnA~Q z1mmjJvE&eQF63Y?;c^&~*AUE_8ly>GODgu29n5w^_S%A9$B$pvf@dhM%6hPd>mev( zI%Pq4WR**$Fgzm>z5%S^dP9_PYgG^)d?Qu@Tn~vgYo_pQX|8H*t{hf5ymAr0$QV{R zqH7v=$MD84;j{8jX$+VGImj+Qrf;LIAck{o}=5n5ZIb zBO$icA+!kFNyRS0ShO1vwioyge)x_SI3tmSaj-^&@hIcItsp!RCbAL`Vg39)p}KNw zEkbqWus^eI&%b zI)oNsj#TU-)S%snu%Ezd{qX%Qa7H2t30NaS9m=@%D+o`723CrRFxrSPCb|ermGP6b z77<1p5yn7-x#$QH=D}dDXDqEE1YnKykLjLaqKe>1i1|8%7NJQhb`hG)f{S(|!odPR#1B8z0%s(Wa2Tu+;c%2Oy|W-Z z5sqY~m1xzH zfvGb7>9iIRyfd9@p027h&=De>3FE4>u(XO0fSpbMF^8*GOoSrWd*_);k#i)4b9D+@ zr1PY5QBCUNn$#sVsY`28m+8kj=cB<~f?OcD3;no@LUH)Fi};=FT+DW(?j@+W>QaGt z@?0jB{J1fPp@_d6)~I_0%D9&;2oHW0D*<(L*L&x2EwC=y`DOW!bC?VxTurO5_Zo+7 z)lxoFC0a7(i~DQP2+gjA!5wQXp;_u`$iZAh4*%nv>$5+GJkGg68jS=uqK1E#h$TE~ z32v5(or+u7Zlw5^;BWQgZ?oVTiYt0MtWn|)l<_{WAiVI)rBWE4kqEyN)+lio%9vVN z5FY#xl#AwcPMf{jH@2Nl6w(9Aourz zKul5ZFIiO_EkWMXng^w$;q@W$`>^(_b$LW8g~S+MA4R+2^)Z1z?uS2Nfin_U^hsF5 z>r*JZ>S;lEygtK9fY-J0xkz2IsWRQsSU>_o%2`F zZa9Bc;IH}NuUp`Z#Pxmy)^PqN%C34#5FY1mvl8IEPt4DDRGOI?!@WbRw`D)U>RtQ} zX5WLsZY31%{8f8^nu_LG?=~QQ^9@a$NgU@F6J-Os3#K@Kg53kORTb*~XrHAF{R)FGQ+evOo5!>u739w%4*v z{VG4FmK(u-Lmjg>V~O}$us@`de|m)#`V$RCu)hTNw;%UUC@$tO1o`Mvh9E|WN-Zt_;Riy|AQm4?sC4rT401EKh}c3#O08Xtw)G#lF`4*lt+wFZcm|{6Gtyp}0<~ z!5Y#Bp^UrCg7Cy%Ln?*g8Hw;UVGZePq3o)`g7DyLvl1YENDMDpRLVOSnfXaEV zIb5}H=?ZVzmP?2YbOgeSu0 ztOP_@HwM{iz56pQ-0RNp$cu|CQrpK83(%L7yn1g1pT?2#HnXx3>mI*IZ zEq%otrXH2#{l#%YJJuxENyScbJ=zV)4FXU4;d3o;M&b(3gEb_lP{!;Kg78RoSP76k z82<~btu=$0PMeeMsn!PXlcS999mgVEGfRe^PpiM9-buSG_gv}^k7i7trkce~{7=Dis%#j+S`8`T1_VrxCcEj`0 zflwEb4AUvLqmr7xHMk4$KSVQxPD7)$;L3r?!Sqacw=6$c) z)|mUB=S2u-T8woHt^O2Je}D=f>Qwv)woik>OcGdfzrbaS_l+vLfO%#X&V1oH<{9GY zOzlZ)aF$dGNiZCqjdsJ~IRZb|4?oWWXC$uI`LKq=3sA-z#)9xTyoi+mht}!QiV(@% z81Q0R{o+z^+B08!& zzt#e0B(C9gu!hp>QFhf0g77H4k(B_YYvTrIZXd2xN!%k+$>zX6u_?kX(`4+MX!VV_ z$v&U>wjk$I-Hc8k`W6_>AAu!_=8ZTj1e-C}Br4~(is#$3XU+NTQn7P>2igti{}%Xi zKm1M$oRPTRcflIY??%~G_Xxt{{9aZ9oUa#aTZ{u|3!c>Qzch`&B~x=7-p#6OY-()J z%~D!~c4o@(_tEO}#NEYh`EWUUj=;T7pIdc5`hoceU@*@FmSmpiiJhT9K3Az2`9+SS zPnmK4AqoDl4z9&{L@N2>V7(qigBjl+6Wrr|+!LX=n8OgH?1Ri8oy_oM~l$?}X; z^5e!Fh9dr1SflE5DB~ab3BrTFz)C>X+;Q}&&X1!^h7n$*)vu&_FX?5}OZW{Uy$pjF zma&9Lsh6MvQwUeVaQmuYUeg%O?dwvpuj3nRHypny__zG{w=H;v;u^dIYbbsfWmml? z2#=%prBWE4kqG|))=>N*%C7oI5FY$vRss}n6vNE`)w)2BPqOpif0AL+DgM_p>`#0{ zuR43Lp@ z&lwB%lVQTeEIcfKA%VWsfwZh&Nu`iiBg@xlH?n*q@NfO_?<{aeA|cy@d%gi`8kP?JXF_)EejxS=NMc z)mm6am4)EJj1_aZvQcGOTLP`418G^-m5N=K_0Vo)86xoY{qS-NoRLV#2Czn!4N=B> z--7UD*@%^rWf>k-7ADLrHl~d#%W$;`xq&=xw7 zmSsz+*k!3iyOE_z;6wfJY73l^NXRf)Bg=4<@g}$+JXuDvQnDnw7#O@2j%9RNhN-O?3-5-*M3rS53AC*aq-EJoDt1}MqTR@{y})jvg{0lx5TlGE=#qV%vg9;944wP zyGo!bI*^uSH>ucVnTmEJ%QS&c_rrI$z!`~z>;Y?J*%M{FDlQ05mYJ-SC<|WQk2;7k zVP+AhjV24;-&eEH9kT2NgV)Bfj4BJkdovbZ9*2o4%RUllUmZxxGDj+QS!&R3WZ6&P zwSM^i7C0l3kOZuer4D7hJT3@NmIhWzmL>Au!i1Sck~XR=)oL!fLza0kc##~-=(1F+ zM#jSHza234_GY7lfzGWvrC0 z%*d$9Fk_~1Ic;QRMye~&AIe+_S{)dIb7eU%3LFnuGNvWGS^APuFUml zH_F@~@EiT`n=EifA|*G&8f9)l8P72U;VE+~E2S$F`I4U*GmYD5BP%mP-H!fH<_;LV zHIHQp%8XFU84WXS!$ei)PKk7vj--{jTPk*C?m@dz=3ar{=ZD{Kfin^*c>vZZ^B~Hu zdPoqSG7qy-x-yZk`k67)c!V~xGQ-uQ=nrKcgK^d4SeBs7aP40RAru&NKffV zTA8P%VprxFv>Rof75H<0`12MxBaxC9V2v^_qU@@d1mP+3GApGk6Zukx88eMnXd^2# zOudT!Q06rlSG|s93CavpZ!lWS;rd2Z=1qz8mX4&Ad0Q%WW!^!%QRZENzvqX)Z-Fxs zDfs}_DDxr8cnBj1PnnNdDP5V!S2N6*X?#K(S($3}Df&a1&tUKv2FntZsaBse8lJ1?-J+_9Z1Xa zr&R2+{DpQS%ijY3#}Ds<53xd@!=MuhSqbe%mX%S)a~MH*vaHHV$+AQ~#xP-K(G_7L z%Q9SbLwCs19R|-~m||pEhO3^8h37CZQDrHUK)rMzElY2y*k$R1b|Xt)f%o&n`&;0Q zL_!9@8d(OSjOQ?d@MIapO3AWBKENjD_bg zFi~Y$TLP`418G^-m5N=K_0Vo)86xoY{qS-NoRLV#2Czn!4N=B(7(sZlY{W{*vP3?* zFkxn~F>O>?s?{dw4p}yZ!E+caqsvmQHe)P2hk=PI%jObj3mr(yvZYk)vQ(no$WkTn zp?-L^1t2sz#~N=nh%Nz~DIy zmQiIPcx%SOa~PPYvTP%Pw$*{OEZa%NF3VW78(Fp&_zr&fjutp0k&tn)Mwam?<2j5V zJXt2PQnD?iPAKYV`+oRLUK0@lb< zhcceS2*Q)4ft8YFiF_u;gqcN>HmWSc)m(IkEc0OS90tqivJ6*^jD_bgFi~Z3B+z^v zNXybB6}v3WXg9L72)xw~Z?nJ|iG-wKjVuafJckj4CrdjkCCd`|OpFOLiw@eTvJ6uT z&>gZYguzo7EThXZOf6h6IGUF z66jbRNXv4ZRP3@Gk9H%=2?9US4?oEQXCxAGGOUs16qNARD2 z5cq|D_(c{tBax7cVT~-8pp3^ag79RyjFpmQiTo^?2{Vh!X`{+AMqPpKkmX7kJbb}2 zx-4VV)r^H_FECMMxkdtAs{?6Su9J#gmg~`OWVu1$H~Qf>S>TLBLT-jNvfP3)p1lad zljT-cN|q(^gJdSmEN-KXD$8hfJGw)bJ7DnS1p7nOXSN*Cd@1zp^YlbDD^11 zLzc&2@Yn^*=(3DbPcRmqy1+!0y!|Kj()(Z-Fxs33&n5 z$nqk}cgaLhr#m}rWo;g%NV=_+mo^IyagtzEM*d?mky+5 z=`9tzEPc>!Wa%sLetvj=3!ITi$N*R)%RrRzyhRY6EQ44nS(eC`lT4UdtWFzsZ>d&m zpgUw)69&&)u#7HCwHnM=c-{gNRhG3S&^kJhmStV3*kxG{?M9X%0$<+`FSo!MiG*wb zYh>9FWjt>YgeS{JtOR5!{u1oy%3+a@`OKJUY)l*NasKG4VI$Qh=nr8wg~1aSEGbNs zmtY0G8KdEm3rtjHHkU|S=tx?bEu~^trV{N&nJR$~^~0+za7H2}!(fdv!%@Z~7eRQ+ zjAW&BWg;K;nK9ECMH^X}5o$F0Lzyu!c<6#<3CfI6TQeG-y1+zLW*dpLt&XIX*-k2U zWyYf2D6_r5cksh^w7?mOl#GKl%8W-DPhAAzDKn9kfHGSaeQ_N7%&^MpN|?we08E_O z>_j_c_LdReAIHW&Y|HZMD%jy_5^xY|XBa$&!IDCi>}4{e<9Q5BRKa$Yh*NY#E!b{S zu?sd8?MAR^0-x@O?{0xJ5-HjP)(EyI%6J|l2v4w?tONv$G{{9h_%LIp5vPs3D^;sm z=nsYVg259REKAsxs@2|%hDS0mQI*+8BJHaqX=Ua}#jZ>Z+Kn>%3B1-1-`@gfBvO)q zHOkbXj7Ktp@RVs_C7?|4ca}z1ZXNY*CKF~BN!n;<1*5CBR&&uEy3B*YBN;5IOO$t( z2ySF7Jd%NlDvKk5=IcOOmL{p#Wobsck)=i8t$ui$1vK+}u$+ASg$;^bA#Zk0TWf`NEpgUwa8U~MK zu#7It7`2qK@JI$Gsw~SS(6Ks@mgP99*kw5$?M9Xp1b(6)ev$>wNF?NBSR>0RDC3cg zAUs)4W2IzSBHv_Y!p!1y+NiROR%f6)WH}QCk7TfnF3V_jHe=zD3`|s6&XGXp>OfkS z^Q2;z<$SaoSuPOxg?{)&7C0l3kc(lBESI2+M>2x&WVwu$l4Xf}lbH!Ki_2-F$}&n_ zf$osyN*Fwn!7{omqtw-mg-0?lQDwPC0$r;EX<4q5id~lL(Qah9LEty~;Wt^}j6_0i zhBdO>f-)Y-2*Q))R#r-uCGrI)6J{2-(MFYJq`Dp5AwcqD^mbXi8K<&1?#GB8nP zxl;n&r2}bM?v{#OmV3}{WVu)1_xa)XTi}dDLLPuMvOI_~9?1y8ljUJnN|q(^)g}{W z7LU+Im1Tr_6x|`qV=#CmgJpDCMyMwk3y)-AqRR551bRvb(y}})6}v3YpxwywtiYf1 z!=Jan8Ht3v0BdA<5oJ7*5rikp%dC_vOXO=zCd@2ep^YlbaP=y>LzdTI@JI&B=&}q~ zZ!i`f$-qRF8drk>y>1zvqX)Z-Fxs3Hbol$nqh|cqAhTPnM5a zDN&YDm66ZHm@u>Wgf^NiqpHTJPthH+d#Cd@2;qKzucX!SF? zLzZ7)@JI&B=(3DfzcCgb$-qRF<#!46hYqA=`BN%(S^h%1k>ziJ|Ko>u!OW+jk7Uq^ zgsg;iBg@Jt@QnDfSO^t%2^4Wlb17lEE^%EF;xm#=;{Rn5eR>ErHhg|K6@NK#r`=RKoUqYVOW}`r@J!Uou2ODc6Sy`Bk%yj4k9AEsJI}qi71K- zsL%IU^nvhvF1Q2FHEsxs%lp1_PxY;y>6)&dY2Tl^OV#99n;5~IWP;t-}$!!p~v1Dhi( z(~w|72FvJSnQc1Bh4~mHQNwbm5FKWTY*^kYh48R+VZ9%gZZV$`G(SAVoJt$rvP2!*Yxe z9czhfSdNoIcv$9Py&sn2#r%Yz`TP)bGEtBoq<&ZyAdkryvCyzAVxj4ob%)MY4JuEZLGIC+c1xeJfoFqgiTOu2lQ=||cmgQLQhh>GBuMC=> z8e&c+3UV4!KP;<|$CQg$Xjs;;&~#X$&$s}dUi31J8Wv2rU~`1!bR?K?!7_SSFyBHh z%(ozk8kRGK=qyWQ!*aG1!ow27dOs}ZhGuUjA9HK!}`8HR4tmon3~ zzC$C-C(r4g$?4=d-LuRFSRqCmkzn!#OU9^4jLl@m91N1Ep*mmq-evi0sJ2KUJX95| z_d|7on7=z{eqo3?nJCXiNc~V3v%6+S9+9EPbmK;*(Wdxkch5Z1ydT>mFgGE=EDV+m zOqA!C#QJ8kVHyTW)X3Z-Ot)Gl8=2dr5FVM^vEGl&9b$fG(ENiT=47HIcOms7^C9Fh z4I>sBnUAp0d}JaI%FtuFaW~V*kvYPA6x$;*A47tP7%ZEJ%n{}jWW!7hlBkinN0>fo znQUb4l|p!AK85vuWbPC5`-A2WgqV|wl01mikIX~JVV~|9R%#*_Olx4D!d0GnLk$DE|{m6V%%)b>h|E~~pGEtIek@}H&4tdPSh=oSx zc@~Z3x_%Io^M`XT(1T!*NHW3+on2cGGd{T`8f;CM<((uCq1ScFENcAnZwP? z*dCF21qmi)uxuhS_%IpSFe`&3YGi&XOuw>BHZs4KLU?3;gY|x7ekv3Rh6J-RSTZhA z9`d8{U&w`786;7|@>d~x!xGuB{7nksVfj1O`(gQqnEx|qK4CXHJ<^;^6y!}-~5ii~{Cs#6$!3b}0@KnC zwl-Gm8Bz#u^x;_VYd%xVX9dk?hnSOzEt-SWmwYbr6?24GsAfk>VI(`5Xnqt@U-F}o zub5-RLd}n5p+@qKj&xyTSEl;Lc{?du#n6~vDjB&OT3me-@ zg?0gNPqZs|O?c*EYlP=`Bo%W4mh52BY!O2?vVIKt1G(3#aeZBK>}131(l7eao-Z!+ zSQl)x7f50F5fN=%h!uXA7m3~Cpxu(Xb{$z#P@<(=@5lK>6!1fJG0{MsB!%I;9a&P* z{$!+noKHc%VwQ`Any+A?CeE&Fy*Ti`OK>V?@ec51Qz$=`HDGPEL6Oh6h_jMiRR}Z^|g;9Uoq#3g_jp6Zou);qmZ56xAgLYTcwd=@|f(^cs z>;2$dg+j$#Eheh&HBuPP+mR&|?XN}Z2j@EEE9QE!Q1kb)P!k+?MtFJjGXk9U*;k!rOTZ*84Kw zD(1HZ&2JAeClecS2U1_ua8eyST2?dgPHR)`2q6)E@DTFukajy4eenRZO8npjfh&`#;h_55{RsMJ6E9M(wp)&o4 z6h_jMiRS-_)K~dQiEaEJq`s=(MZRLbCl;#e_gSb>b$V;cA%KKx1{E3CM^8Qo`;qv|r>wS5D zF6J)<&0h{NClg!x3Q}L*|3$uHejyer?=M-Xk$10JdDj&R7=nnZFC8T7ub8&=?KxcE zC4y#tjnxqNH%Kbxw^&l(kd2`*{f?^eHo^Rz#k30lUJBs~{{icLh5sn#e+rtv8e&c+ zw)M|QeT82`9>dFGp$h+ng&Ktqa0(B4`EpmXkS~^uy{?EVH2oy`UzxV`?H?3+IY8SN z20+al*a~|84N1lP9ZTvxx(#G!W1`Cb4}t!tg|@O!m`t8<+24fqzUgU^gj*hhQ?+`ytp} z%=ZYI?-^oFCMvKOQa=QHBVRH5h=oRQUlwXY&}Kv6bzx{AQO=d*mb44kVTlbH+|Nhd z`ROY8-^SFA3drfvYsZ}?ab?)1eSwc__QQq@Df&JeT1t(lc~rWC@P zIg9IknP-droS^;O5PMRw5l0~PRX!4VJd!UKD$~(Y7)ehinjeGISNT}vE9N+{Q1f{# z)Tn$=N3lFKR4^qk)s-mYLNH&-Bon+H?J8{^3LL>21cAQNf#aFlBiL#mxV@(axP1+Q z%?a2Np_z}QVtTOjk6@$QA#iM1{lKx0*t;)31PcUyp@p|0TqK2&8u}qvjP-s9mWcV% zp!ta*=47G*%aHmZI0^ZRIaw?;1gEf26M|hjOd;oW^(Ts6s(QF;AUFLY*>a|BeG{?I zuL4NBfS47ig|sV?RLrSZQrg;WAS0cND&uJawaP+S8COdoT*ft6@5|UL=4*rIr-zu6 zi7o3x>dSZr@)dKYSg4F=u}~x9q>dra3}%W&?7Qx+sDX}jjBIB!wfCZ@IusK_HH16| zNyWsmq>#K}4QvD@>0eYO&lRkM#j;BFOCemzB-Z;%ro`L}ny(8nCllK?fYetqjeNyq z#6p$KvQVSs9vwIm6b5k=NOmQ2ULs$1qmB*qqpN~k)B zq+;?|Qq{VfLR)$qRoj9f4p~I2?RioN*VbUYuWeDxOF{E;h&h?q&J9R?Z8sv12iwI$ zwcX4@jkY^O+f=56`}e3_onDdZe5UsF)}s*SU8sYSTaZ*t1xqT)6QI8Z1f*M01-w9j z-fe-bfEP+3T)>O4-WTvMd}N98S)kL9{JlZ*8$!&<#MZtKsW0-4$YXR_EL7y1Sf~+szYa_lc=?nL zGj)}Vp3b*L6`Ed>`U6bc`rZbi7yFPLZ))!aWV=j=nwzl=#J&Yd#oUS|#U9N9g0mTo z1Rs5JqTD-4hGuZZV=}lNxlQPA7y8Mu^dt;%Ge5oeEk($X^UR$n%6$5|T%x$X8wzzN zhKBmfnOw><-8}Qkv|%~tb@sKRy_iBozAJR=-U%i1K~iJ|c?L{+hK3ecy!PoyuoN+R z)E)}ZnO%=7S;E}qV2%PzJdS4%O7Zyg&i3h{*4+WJL9di9q&l;674Ji}c!^Xhp3CId zH;p%CJL}(v9o{_nN4%mplrV`>!88rJNj2)+XQM@Qzcwq9>Pn&11f*n4ff*^MUD~O5%FS({#Mg z*0$g4aM|_^p5Y~F^L}OQ9q>&3*Z@_f{1ebmlkwpzpO}~c1VkW zM6S5g7W+fpJ*VnYca=JDgeWWa!w!2Pu#?8a@MgR}SH{Bxc%X39z9McqbpKp)l0tvR zLC*)Y4&%w8d`vFCptz4X+~a|Z)3r&&6J}s+LR_W$?q?n92|(q6&3LJd@seW_p`@^% zbFd2lYjEx5nYcfWJQjHusSJ-gWXfO)IF-a1^f8IMoBI2ChuQU$TutU z;|`f;j9jAM%f*w0TzN1*4oQ}2_?~d+OMzbW5+<1*Km3*I{8t@3kIM?bu3!eoF3jzU z{WXV8VHDfWMU5T(GDZKoLq7uO+^-j|>Rr_2ZoO7z{&$DQJ&)Jx&4jSZ9N4K3Q%Aqy zpxI*xy)NVBQg~cC+Wt`w{Bi~V4+lQq2ag)OdbnFvkNJmpwU8_8nOS;yI&3zX<-N5sCwK>MeNF-x^j z2aMYeHw-dh#?I}V(E%z}@r_s&z~|8dAX zZ3*%?yYI2O|9{s(vv1`x#qsy83l;l&4x4HV_PEu4S~dB;1E<;+d|YbxDe?~-GSwF3 zajJc)Lci#ssfb+kj{8t{qJsa>f%gD>2ygSmi<$Gse)8C&ar}`3<_#wX8ZeZWN=3XS zte!mlyYAnpzdv@cjG(~cQr#=bFh+!tf)U8~DDqG0AlrMbvHHALk$>utc`G|)yzwY; zkP7@WhboZ+>iC3sMcw`RNZ|45Fi$;x$pLdm#vvLvvUc!$>{q+nEBMO}T<%uzR^zxk zNvC4J;;`jzh1lai->*^h|8?k;rAYK~AMq|x@LxFa1y%5I9q~S_yU8ydGLLxT_BfAt z`>NBwa?mFMdP5?Y!A*I=6vrLWU6kS1j-dk#b&ne|{^tf-r(!z{3xrOM$>tnn{f)!s z2=+1ziEWB<>nQ-8*&|io-#VB%fLWcvvzgu!T&^{Nb)I5vb67pVYJ4pqzH|@c4BWuR z6!>=zm@_b=3=T9xJU}D!dxyv!mWU0a-UxY6ef@(&=475AV;nT}=w27sKOe;v^p6gd z$94hbNoj1TN2>^ba;Wot)Y2%uwyvvza2=_*uR2`rQ>T{ubD89l=Ju&W6zk6pi-C$T z{%yS+MjG&Psv^JUkek_C!+{S|;MW~+q`fs9aX$_JUmPMuh`hIkBloMXe|5+_p9ylK zb50|HuT`(#aM(@sgke7WJz+>4{+k1BrYD4;{!Cr{yF;Dt%h0$d3pS6)hg&a556|;|lpE z2T2E)C-5GvS>%-xncUh4({;>PR?X$lbEV0b8m}yE&%Q$b`2D;%rYm)!&*Xb!wm{J0j_6Ria!fG1MBW zbF@vnJ1SAHN>#{&kLfhEyPu#;dpM>uYt%E|Al|=$|ToqV3w> z@i0~xDs1^#`Rht`fTN;>wNx!UD?g%q2Rc6P@Z@8lT6kuht-+e&nAU&^-*jsIwawMq zsy4@U&Pc9Sx3EiFc#va_k7O;jn)Vmk*mg(DsYwyGb(a8lDa%yH!ag7@E#6bIs^h_q ziuHvSVMYOdXDijUtm=Z1iuAx9ZgV9o6scj*2JB+9zwrf2cZNTXcw{VT&@w zcn0I)@gW(lYR##CrBc1aQSpX07xrjVq(g4toS#v}ra62*=pbju7F|}HpcK;`1=SLY zIKGgQ!mA%GqME8yosMc5sWPb+5$vqtIMflG4g%v1U~1VjvOl-*+&fe04s&!oQ3dH* zdS!Ny>i15^$2++oUu!RBl1kX+2)S<<4-b~bhwy&RM$96&rY9{?s%}SR+Xkw^%|2HP zgZD=zoZ$%Vz5>F30o`S~uN>~^dLgBMKxp{Zg}-69j@yhnuF;`wo9W1SQK*mnw(f*@ zr}E5lJiONm@WkaVh|fp2W;gk^GR}64JcYEnXWy+fa~ut$MVeGU2Fbi!3-`nWlx(ge z=?jK5bgrnn8i*$0(Z#Ca_y5}G1_}2P-nN+LUex$8C%CT{XjjeO{U#%uR zMM;l#q@5tGdntn_*}V~CuY6MnPK8bi2aGuEdW_@YR6noPxJA5RGWaxFA{X^Vq5y1X zc7`_MSO?C(lhtj62w3bM!0QxvtIc}e**CpGD}q*R#&M2`&-Nq+25>6lO9^uK$^%A& z5%3^jXLdjvFwenqTFSvDHViZkdV_)<9|l@14>k>Yp@N>^KtrX*_wG!o*v;cjV0xjE z)IlpsJ>M~L%2FO>C-7PspBjCLK8V$s{l5C%;}ALYFB`>Yhh519G33;>u*x2|+?}o1 z3mi5d+_2aUo@I%~(5DBZg^q#mJSf8`Q{&O#AJ7IYa`1f8N8$0^myiqHXy`K)eX&F5 z-G)UU^_iJy_+5&>#NktZ>E&_U2g-XV<7&YLD*sZ)AO|oWN5ByF_*OLc&sFdf9XM|< zqP!FmjbKkDSmp?NKrq^zWi;TT3V)IV=G^xpd9QB4=7rV1(qQ5;$kv%XQ{6q;q4IdR zlwyw=bg_b-;y}5N;IR$9bI)(jMA<<`_z*YGX;7%)dW_YQIOLcuR17vryi6YczX54DY+@-x`OyT($B*px1c)|vgPDt(5-t(&X;4=XeW`jGm0mILj9pNU*9^v<`|uWoIU&+pH?tWe;y9WWo1 zh&JiT@Jt&Xhm3eVgKj{ULw6DmR=c4_r=nQSUMX^7h~xy zvGf%&lO&sVpMTjW98#`Hv*GX6c^aZL#$0v2yQDIGx2)g=Eoez*ZHrk&Q@CUfT1*?Asp8J}@;sNwQzu zF8_gaH?q^#9+;ndLVBL9-RtRR(o1aikmvr8UTL$(e|O(>pUocqSL(mnrHgoeW=^JeJw0+)_z75%fFDbsUM*E-u%;fln8K!&iv8k=SQ}89OL41j% zP|EWGD&wugkv*Tpi+*^z*1NoSVmgs4#dF>UFL&||y?fxmSt^$Mn_TZf=~8Lvm>DxRZrq3;AmOWQ`R;-ln33`} z%)oZV8RmSr*t;v@ScALk#)QeEAwb5bc?Ofkp>!s{sk>at#n*i%;>a{Ogj&&KYMN-Zdw7cBi=z7AH@*Y?Zl)raRHKb>)20T#Vw1 za)0mkUVcM*yWUA=UD7rD0Bv}wP{2_p*9Gt8b`QzmL^tYW0oP>i4tS)9Rb5)gNGWR;zEW zR^P(vv$XowYV~cb&S~}S)#^J~o!06*tJNQ5byBPEs#br9)n{wW@{cKhElNwfYm)>U&rn*XmDJtM6rXOshXtt-g=dDXqT0TKxd4Gg|#%wfZ6C z%Duam3Q2sMFqto-qne`mG-@loyTviKGlc(Q#xn!?0=mh=G}|$TJ>xUT_3j+6?&Oc4 JjGesu{{Y|isptRz literal 127756 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

M0x?B>@Z?l+wFCvXa+T81@VdVE z-9Y=*yJ$=b#l#q1H$=VRbt8dq9E5LTfin_2S_Nx(9fEZ{nHGf4>t-y3cwGyhuhgX) zt26EC`UTbU5=M*vl4#U@pJ_7oP};$B2gx%%_^jNOJ}Y;``xv;H)=$M%H5!5O8W>Lv z!;*|I69W3#6D$30nDgP{d4%??IUgwnJLjWNZ#W+<@XdqpF%~!@vEO514d>&qj%V9~ z@HyX-g%Ia`VnMc}(#*^lZYx^7F9!)$TVp$z-3A7ay0J9-a{jrYvw0N;hlu@Zo+vl;k=)4KF}wEiKs9~$t1z;5X4O`iHo@m zK@O(C8pU?Rx~HZJ!l!&EDHMjq?;>J5;nQG^Vmo8qQ_}_E!)LG%QmhL*0Dm9k&jWAh z4i%gSm<%KALaSf)oQ@BW(s*Jk(_``f&RI1RwUBC87*FknC8Tmbfi_I0=tM9px3R>D zV0Nyu7hjyLP2I$4yG1FfJyTz;@#6V2xt+ zSjYSlg7D!f7Q%|C3SqP&?rD|qw_QS;FX$~iEe zN@Gdoeu8pLsz^CEx3PqB3#8I$(TEbJoxn1uMY9y_oV2jsXwoY9Oc1Xuc!pw+v#>^z zHmqZ+XF>R!E|fxXct#?85v-A9G1f81gdlwQek_C}863k49M$qJM|MF9du2;=b+Wa! z(SM^Os$fi&@%N|Im&~)BRHgjWZ9sQ8RUM0Fkl{EO z{6Zm?lz}e?E&~J+*dMD1ZkYKK#P^BXw`Tq%DcG4m8TE$wQv`l$5Pq5k&PeS0>9B_R zGqCQdGX>!@e-;ZN<|EGK(aE62Od0-c+DLPGoP(BN|6CYPorfjak2IGDyA@S{^TquI z+PxOwLMhkk! z(MFid<7%`6`PaaB>RK#GeuTL^*rBM@UnkD5*UmNdH%P%w{f($M)ZZlVn}hIMEO16* z?{9@Q)Zd16Pu(sEpZYsk2vNVRxjZ^yoar&^u7_e;Uf@4rxQ_TMszCH|V_X6PX8TxTr{hjv?+GVBhQh&EJYnK`73A6#%|Az6@lUR~# ze&=mNU@&JlIwQR3-s33&@!ms^_PqDd+nk@x<gNUbLJ;?2NgSqd#&&Y^66=kuFQee8R|Mkg@~RXHTPU?V(-A<4Qec* zn7h&nXpA2vL{XFpK7x8Lx3R?a>-$n^1o!|YJha9VPPG6ZO2JOVN31tOd@T4+g82Vh z@C?OnehO=J_zdfw`dkox_%EbT9G;N~{}R^d@D0jKMpcAq zG1j-V`h!gUO)Pw<@30Yad=G=ysIlY$geR5$XR{0wbD5bwVsc`*n)!lj&>y9tq4Otk z`m=Vb<@iMk#e5h#e?`5a^EZM29)$m4fin`j_$REP^DnG>>Tf~#bpFFah|a<}k_HI(+oI(~6b5I&`SSqM?O79Nu3kN0Yo!gD5-YLedtia3TaO~&p= zs~_e~4fw>D4SAnx6*L0T{bBH%f>@GhKFqU1z&U#omGf1_^FZxcbH17s?3}NTdc*k| z0$(!-A7p_u68pUttl@lZtb1x5LHL}n%R-3rbz`kdaI$U2e|`8HSfg-D)zpf&z3S49 z>9!?NcWP$J@Pldf73EBETRBqBxTEm=G~iaPhjw7T5(d*{U`ghAMY${#$Y+;2Bfsbb zyn%pt0@g^)j}T zrcGIIRNf2)PYo4_FH^M?3ggCHh9bTO)~GxT>z*1e2p>Lzg^OTLlJd>CXT zt$qvEe-kjPMqwLt8x4ausIi1@Zf|`GW+Gaf?Qj;*Yun43VR($d#%h>mc$^gMJ>7!! zhUqN@zf};wwFS>m?8G*(hUjgvj!85G;WM?p6pF($65-=v4bc;@?x~4_@ZpnK2ob$u z437|0%R)VB$svW`fy4A#{G~Y@Wqj9fc+uOlb}^VU6WM`Q|61zQKma+oCbZ+tKL+4* zuzcxnxSEXS&}j;cr*_1W$5)IaTjyXLX6$NdDS7P7)}lUvU(~^mnN5`#JLwo&)M-*E zX4QzYGwO{f(*-^w2;ap5XC!hl6V`~bE7tK0S`fY{vsfrol#$gV$`FM)Gm+V}(L@

Extra Columns
-class flask.ext.appbuilder.models.mixins.ImageColumn(*args, **kwargs)
-

Extends SQLAlchemy to support and mostly identify a Image Column

+class flask.ext.appbuilder.models.mixins.ImageColumn(thumbnail_size=(20, 20, True), size=(100, 100, True), **kw) +

Extends SQLAlchemy to support and mostly identify an Image Column

impl
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv index 5211683d8fb39ea372dc59542a5b440e51906702..e1cbbf6d28c055a03f3de0c8b637e5fdc09a32a3 100644 GIT binary patch delta 1672 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 gP{e5>uJPython Module Index

    - flask.ext.appbuilder.baseviews + flask.ext.appbuilder.baseviews @@ -119,7 +119,7 @@

Python Module Index

    - flask.ext.appbuilder.security.decorators + flask.ext.appbuilder.security.decorators diff --git a/docs/_build/html/quickfiles.html b/docs/_build/html/quickfiles.html index f94b7a544..2b3194ef5 100644 --- a/docs/_build/html/quickfiles.html +++ b/docs/_build/html/quickfiles.html @@ -61,7 +61,8 @@

Navigation

Model Views with Files and Images

-

You can implement views with images or files embedded on the model’s definition

+

You can implement views with images or files embedded on the model’s definition. You can do it using SQLAlchemy or +MongoDB (MongoEngine). When using SQLAlchemy, files and images are saved on the filesystem, on MongoDB on the db (GridFS).

Define your model (models.py)

from flask.ext.appbuilder import Model
@@ -70,22 +71,41 @@ 

Define your model (models.py)class Person(Model): id = Column(Integer, primary_key=True) name = Column(String(150), unique = True, nullable=False) - photo = Column(ImageColumn, nullable=False ) + photo = Column(ImageColumn(size=(300, 300, True), thumbnail_size=(30, 30, True))) def photo_img(self): im = ImageManager() if self.photo: - return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) + '" class="thumbnail"><img src="' + im.get_url(self.photo) + '" alt="Photo" class="img-rounded img-responsive"></a>') + return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) +\ + '" class="thumbnail"><img src="' + im.get_url(self.photo) +\ + '" alt="Photo" class="img-rounded img-responsive"></a>') else: - return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) + '" class="thumbnail"><img src="//:0" alt="Photo" class="img-responsive"></a>') + return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) +\ + '" class="thumbnail"><img src="//:0" alt="Photo" class="img-responsive"></a>') + + def photo_img_thumbnail(self): + im = ImageManager() + if self.photo: + return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) +\ + '" class="thumbnail"><img src="' + im.get_url_thumbnail(self.photo) +\ + '" alt="Photo" class="img-rounded img-responsive"></a>') + else: + return Markup('<a href="' + url_for('PersonModelView.show',pk=str(self.id)) +\ + '" class="thumbnail"><img src="//:0" alt="Photo" class="img-responsive"></a>')

-

Create an additional method in this case photo_img, to inject your own custom HTML, to show your saved images. In this example the customized method is showing the images, and linking them with the show view.

-

Later reference this method like it’s a column on your view.

+

Create two additional methods in this case photo_img and photo_img_thumbnail, to inject your own custom HTML, +to show your saved images. In this example the customized method is showing the images, and linking them with the show view. +Notice how the methods are calling get_url and get_url_thumbnail from ImageManager, these are returning the +url for the images, each image is saved on the filesystem using the global config IMG_UPLOAD_FOLDER. +Each image will have two files with different sizes, images are saved as <uuid>_sep_<filename>, and <uuid>_sep_<filename>_thumb

Note

The “ImageColumn” type, is an extended type from Flask-AppBuilder.

+

Later reference this method like it’s a column on your view.

+

To implement image or file support using GridFS from MongoDB is even easier, take a look at the example:

+

https://github.com/dpgaspar/Flask-AppBuilder/tree/master/examples/mongoimages

-

Notice that we are overriding the list_widget, the widget that is normally used by ModelView. This will display a thumbnail list, excellent for displaying images.

-

We are not using the image column but the method photo_img we have created. This method will display the image and link it to the show view.

-

And that’s it! images will be saved on the server. Their file names will result in the concatenation of UUID with their original name. They will be resized for optimization.

+

We are overriding the list_widget, the widget that is normally used by ModelView. +This will display a thumbnail list, excellent for displaying images.

+

We’re not using the image column but the methods photo_img and photo_img_thumbnail we have created. +These methods will display the images and link them to show view.

+

And that’s it! images will be saved on the server. +Their file names will result in the concatenation of UUID with their original name. They will be resized for optimization.

Note

You can define image resizing using configuration key IMG_SIZE

diff --git a/docs/_build/html/quickhowto.html b/docs/_build/html/quickhowto.html index 801b7e3fa..c3b0a61e6 100644 --- a/docs/_build/html/quickhowto.html +++ b/docs/_build/html/quickhowto.html @@ -24,7 +24,7 @@ - + @@ -45,7 +45,7 @@

Navigation

modules |
  • - next |
  • Related Topics

    This Page

    diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 5b3a08e33..c0cbe47cb 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{validators_column:[1,7],col_typ:1,four:22,"catch":17,dirnam:18,personal_celphon:[15,6],whose:13,under:[17,11],list_block:17,fieldset:[15,1,17],myregisteruserdbview:10,head_css:9,"utiliza\u00e7\u00e3o":17,affect:17,cmd:2,upload:[20,8,17],factori:[1,17],edit_column:[15,17,5,1,22,7],direct:[],street:15,aggreg:[4,22,1,17],myinlineview:21,even:[3,16,12,6,21,7],childmodel:1,update_user_auth_stat:1,mongoengin:[6,15,1,8,20],migrate_db_1:12,migrate_db_0:12,"new":[9,3,16,10,11,15,17,12,1,22,8,7],sqlalchemy_bind:14,metadata:5,widget:[],app_icon:[1,8,17],here:[9,15,0,21],path:[9,18,12,1,21,8,14],dry:20,intead:17,datetim:[12,4,5,17],groupmodelview:[15,0,6,13,22,7],permit:17,studi:22,unemployed_perc:[4,1],succesfulli:10,total:[4,22],highli:[20,16],describ:[18,5],would:[15,5],tail:11,call:[9,17,11,0,1,2],typo:17,type:[15,17,4,19,2,8],tell:[9,10,11,5,6,0,21,13,22],benefits_employe:5,add_separ:[22,1,5,21],relat:[],yahoo:22,notic:[15,19,11,1,4,18,12,6,21],warn:[1,17],phone:[1,21],show_column:[15,19,1,5],must:[15,16,11,4,17,12,1,21,6,2,8,7],join:[12,18,14,17],setup:[],work:[15,16,11,17,12,13,2],registeruseroidview:1,rework:[22,17],root:[13,14,17],form_titl:[1,10,11],add_form:[9,1,7,17],overrid:[9,15,10,11,18,17,19,1,21,6,22,2,7],show_fieldset:[6,15,22,1],smtp:10,filterequ:[12,1,17],auth_ldap_search:8,want:[9,15,11,4,5,1,0,21,13,22,7],chart_titl:[4,1,21],everi:[18,17],end:[9,5],classifi:15,how:[],env:16,answer:[],verifi:22,config:[],updat:[15,11,1,17,5,6,0,13],adit:1,chines:[13,17],after:[9,15,10,17,12,1,22],befor:[9,4,1,15,12],wrong:17,averag:[4,1,17],classmethod:17,bootstrap:[9,17,1,20,21,8],authremoteuserview:1,query_factori:7,exclud:17,receiv:[10,17],environ:[16,22,20,8],permission_nam:[22,1,17],charview:15,origin:[9,19,1],auth_role_admin:[8,17],becaus:[9,16,11,4,17,5,13,14],fab:[9,16],countrygroupbychartview:[4,1],flexibl:[7,17],uuid:[19,1,17],img:19,"__class__":9,better:[3,21,16,17],them:[9,15,11,4,5,12,1,0,21,13,22,8,19,14],thei:[9,17,4,11,5,19,2],authdb:1,safe:17,passwordformail:10,"break":[12,16,17],you_css_fil:[],jinja2:[9,17,1,21,13,20,7],choic:17,mytabl:[1,7],grammar:[4,1],chartwidget:1,debug:[18,6],oblig:[12,15,2],side:[21,8,17],group_by_label:[4,1],mean:13,set_index_view:17,sec_view:22,esqueleto:17,manufacture_id:1,generalview:[12,17],ommit:1,extract:[13,21],edit_templ:[9,1,21],goe:[9,20],basedir:[12,18,14],content:[],adapt:17,navig:[9,1,5,11],small:[9,12],search_form:1,statschartview:[4,1],pagin:[15,17],onto:12,render:[9,11,12,1,21,13],independ:[15,17],loginmanag:[12,1,17],restrict:1,unlik:16,alreadi:[15,4,5,12,21,2,8],massiv:0,primari:17,add_form_extra_field:[1,7,17],top:[9,3,21,1,17],sometim:[1,11],exampleview:7,master:[15,19,11,4,17,12,1,21,2,20],too:16,john:11,filternotequ:17,boostrap:17,tool:16,template_fold:1,dbmongo:[6,1],provid:[10,17,4,11,1,13,20],tree:[15,11,4,19,21,2],label_column:[15,1,4,19,6,21,13],project:[15,3,16,11,12,20,21,13],my_col_to_be_ord:7,runner:[],mind:20,raw:12,incompat:16,simplifi:[22,17],usernam:[16,10,17,1,22,8],sqlinterfac:17,security_cleanup:[22,1,17],don:[12,1,20],enviro:17,doc:[12,2,17],flow:20,doe:[1,17],declar:[9,12,18,15,17],passwordfield:[],sum:[4,1],dot:[15,17],add_fieldset:[15,1],"__str__":6,syntax:15,bootwatch:[8,17],registeruser_view:1,layout:21,field2:[7,11],menu:[],explain:22,field1:11,apach:22,theme:[],ldap:[],"__call__":7,get_model_rel:17,folder:[15,11,1,5,12,6,21,8],department_id:5,get_us:[1,7],edit_titl:1,report:[3,17],youtub:16,bar:9,changeabl:12,"public":[15,20,10,11,1,18,6,22,8],reload:17,baseregisterus:[],registerview:10,mandatori:[1,8,11],result:[15,19],respons:[19,17,22,1,11],fail:[22,17],themselv:10,subject:10,brazil:[13,17],hopefulli:1,databas:[],psmodel:2,myview:[12,21,1,7,11],pybabel:13,approach:22,attribut:[12,1,17],accord:10,extend:[9,19,16,11,12,21],extens:[15,18,17],extent:[],"__unicode__":6,notat:[15,17],my_show_templ:7,protect:[22,11],easi:[9,15,16,10,17,11,20],as_unicod:11,unemploy:[4,1],against:[22,1],cog:11,logic:5,countri:[13,4,1,8],login:[15,3,16,10,17,4,18,12,1,22],del_permission_rol:1,com:[15,19,10,11,4,17,12,1,21,2,14],col:[4,22,1,17],asctim:[],myformview:11,filecolumn:[1,17],height:[4,8],guid:17,assum:[21,1,5,17],duplic:17,three:[],been:16,find_us:1,trigger:15,interest:4,basic:[15,18,22,10],add_contact:9,argument:[],child:[4,18,1,21],upload_fold:[8,17],ugli:[],resetpasswordview:1,properti:[],remv:17,calcul:4,useroidmodelview:[22,1],seven:13,some_col:1,deliv:20,queryselectmultiplefield:17,kwarg:[15,1,7],cond:8,linechart:[4,1],perform:[1,17],make:[9,10,4,5,13,7],init_app:[12,17],listthumbnail:[19,21],complex:[2,5,21],complet:[21,10,17],list_list:9,projectfil:[1,21],recaptcha_public_kei:10,hand:17,rais:17,formwidget:1,babel_default_local:[16,8],add_widget:1,kept:[12,22],x_col2:1,post_add:1,inherit:[15,10,11,1,4,17,12,6,21,22],contact:[],bettwen:17,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],chart_typ:[4,1,21],everyth:[15,4,5,1,21,6,22,2,20],left:[21,1,8,17],identifi:[4,1],just:[9,15,16,10,11,4,18,0,12,1,21,6,22,2,7],photo:19,via:[22,20,17],human:[10,5],yet:[15,1,16],languag:[13,16,20,8,17],group_bi:1,directchart:17,img_upload_url:[8,17],modelview:[],els:[19,4,0],save:[19,1,17],edit_form_extra_field:[1,7,17],applic:[],mayb:16,preserv:[22,17],recaptcha:10,birth:[4,22,21],myotherview:12,modeview:0,specif:[9,22,1],employeeview:[7,5],unnecessari:17,underli:15,www:[1,21],right:21,old:22,percentag:4,born:4,intern:[12,21,17],csrf_enabl:18,indirect:8,subclass:[2,1,17],when:[9,15,16,10,11,17,5,1,21,22,2,8],datetimepick:20,listitem:[21,17],register_us:[],localhost:[16,14,11],plu:[1,21],aggregate_sum:[4,1],colleg:4,post:[12,17,1,5,11],"super":[9,2,7],chapter:[15,6,7,5,11],postgresql:17,dashboard:4,slightli:5,del_view_menu:1,yourappemail:10,produc:4,departmentview:5,add_form_query_rel_field:[1,7,17],"float":[4,17],encod:[13,17],contactmodelview:[9,15,1,4,0,6,21,13,22,7],git:21,wai:[9,15,16,10,1,5,12,6,14,21,22,8,7],support:[15,17,4,6,21,13,20,14],why:12,avail:[7,5,21],width:[4,1,8],"_flt_":17,your_root_project_path:21,add_column:[15,17,5,1,22,7],overhead:22,fork:[13,16],medium:8,forc:17,sqlalchemi:[15,16,17,20,18,5,12,1,6,22,2,8,14],authdbview:1,"true":[15,19,10,4,18,5,12,1,14,6,22,2,8,7],reset:[22,1,16,17],absent:1,attr:17,reset_password:1,featur:[3,16,17,0,12,1,2],model3:14,model2:14,"abstract":15,exsit:1,exist:[15,17,5,12,1,21,22,8],check:[22,1,5],oauth_handl:1,readonli:[1,7,5],encrypt:22,panel_end:9,excel:[15,19,16,10],role:[],test:[12,17,1,16,11],jonh:[],category_icon:[6,13,1,15,11],intend:[2,20],error_messag:10,sql:17,personmodelview:19,femal:15,longer:[1,17],time:[16,10,11,4,17,5,1,21,6,22,2,20],backward:16,dpgaspar:[15,19,11,4,12,21,2],myotherrelatedview:1,concept:11,skip:11,global:[1,10],extra_field:1,imagecolumn:[19,1,17],show_templ:[1,7,5,21],created_by_fk:[12,17],row:[9,1],hold:[15,10,4,1,22,2,8],depend:[1,16],flask:[],render_field:17,flash:[9,17,11],readabl:17,create_db:[12,17],isinst:0,sourc:[],string:[15,19,11,4,5,12,1,13,22,8,14],email_templ:10,show_widget:1,add_view_no_menu:[21,1,5,11],administr:7,did:5,iter:[],item:[17,4,11,0,1,22],your_project:9,quick:[],div:21,round:19,add_view_menu:1,prevent:[22,17],has_access:[17,22,1,11],method2:11,port:18,page_s:[1,17],muldelet:[22,0],current:[17,1,11],registeruserdbview:[1,10],employeehistoryview:5,redirect:[22,17,0,11],deriv:11,dropdown:[20,17],auth_ldap_bind_field:8,gener:[],modif:[22,1],address:[6,15,1,8,5],box:15,serverdisktyp:21,behav:[1,10],user_view:1,overriden:1,month_year:4,my_sql2:14,pillow:16,my_sql1:14,useful:[],extra:[],modul:[12,1,17],authoauthview:1,instal:[],sqllite:[6,8],memori:12,todai:5,live:[15,3,4],handler:1,criteria:4,scope:9,ppid:2,checkout:[15,16],minim:[],peopl:8,visual:4,templat:[],obj:1,easiest:10,prepar:0,uniqu:[15,17,1,4,5,19,6,14,7],can:[9,15,16,10,11,14,4,18,17,5,12,13,1,0,21,6,22,2,20,19,7],panel_begin:9,email_subject:10,purpos:1,select2:[9,12,20,5,17],boilerpl:16,heart:2,search_column:[2,4,21,1,17],levelnam:[],critic:9,auth_ldap_lastname_field:8,mail_usernam:10,occur:[22,5],alwai:[17,21,1,22,11],multipl:[],your_css_fil:9,somevalu:7,map:[8,11],product:[9,1],birthdai:[6,4,1,15,21],myothermodelview:[1,21],clone:[],mac:16,mymethod:22,date:[15,4,7,5,17],data:[],grow:16,base_filt:[4,1,7,17],practic:10,favorit:8,"_sep_":1,get_file_orginal_nam:17,inform:[15,10,0],preced:4,callabl:17,defaultview:17,ab_us:12,tty:2,gradual:15,get_related_model:17,approv:17,still:[6,20,2,16,7],mainli:[],dynam:17,group:[],accordion:[9,15,17],mail:[8,10],find_permission_view_menu:1,main:[9,12,20],non:[15,22,1,17],my_field1:7,my_field2:7,chart_widget:1,col2:4,col3:4,initi:[],col1:4,now:[15,16,11,4,17,5,12,6,22,14],name:[9,15,16,11,1,4,17,5,12,6,14,21,13,22,8,19,7],revers:[22,21,17],separ:[13,21,1,17],full_nam:[7,5],januari:4,collaps:17,compil:13,domain:[14,17],masterview:1,replac:[9,17],individu:7,year:[4,1,17],happen:21,shown:[9,10,17,5,1,22,8],aggregate_count:[4,1],space:15,list_item:17,resetmypasswordview:1,bla:21,correct:[12,6,17],uwsgi:17,integr:[15,20,5,11],earlier:[22,17],migrat:[],envelop:[15,1,4,6,21,13],orm:[15,22,5],add_titl:1,render_templ:[1,11],thing:[12,4],place:[12,8,21],principl:[20,11],imposs:17,end_dat:5,first:[9,15,16,10,11,4,17,5,14,21,13,22,2,8,7],oper:11,directli:[12,20],onc:16,my_widget_list:21,yourself:20,fast:15,spanish:[13,17],open:[15,16,5,12,6,21,22,2,8],size:[1,8,17],given:[22,21],max_length:6,userinfo:17,"short":2,mostli:1,than:[20,17],serv:[9,15],wide:9,param1:11,seri:[4,1,17],pre:[17,1,5,11],sai:[9,4],ani:[15,16,11,17,12,1,21,22,2,20,7],add_view:[15,11,1,4,5,12,6,21,13,22],engin:[12,1],datepick:20,list_search:9,note:[15,1,10],ideal:9,take:[15,10,11,4,18,5,19,6,21,13,22,8,7],advis:[15,16,18,21,22,8],login_view:12,"_add_object":2,genapp:13,begin:5,sure:10,pre_add:1,normal:[15,16,19,6,2,20],track:5,beta:[],employeehistori:5,icon:[15,20,11,1,4,17,5,6,21,13,8],later:[19,10],drive:2,quantiti:21,create_al:[15,5],basemixin:[1,17],show:[],german:[13,17],painlessli:[22,20],my_index:21,permiss:[],hack:[12,17],filterstartswith:[12,1,7],onli:[9,20,16,11,1,17,6,21,22,8,7],explicitli:[],activ:[22,16,10,17],behind:1,userdbmodelview:[12,22,1],dict:[13,17],over:[9,1],xcol:17,variou:[20,8,17],get:[9,16,10,11,17,1,2],secondari:5,search_widget:[1,17],url_for:[9,19,1,17],requir:[],thumbnail:[19,20,17],where:[9,15,10,4,12,1,21,22,14],summari:[6,15,1],send_email:[],calendar:[4,17],quickimag:19,review:[17,11],enumer:15,label:[15,17,4,11,1,21,13,20],enough:15,appbuild:[],between:5,"import":[9,15,10,11,4,18,17,5,12,13,1,0,21,6,22,2,8,19,7],parent:[1,11],screen:10,recaptcha_private_kei:10,stime:2,uncondition:1,base_templ:[9,17,1,11],come:[21,17],relative_view:17,similar:10,can_show:[2,1,7],mani:[],app_them:[1,8,21],equalto:7,endcal:9,sess:2,folow:[13,21],rebuild:17,direct_column:[4,1],changed_by_fk:[12,17],xpto:1,model1:[12,14],bypass:1,findal:2,former:12,"case":[15,17,4,19,22,7],secret_kei:18,can_list:[2,15,1,7],cast:17,invok:[12,1,17],bootswatch:[20,21],"__init__":[9,15,1,12,6,22],acess:1,develop:[9,3,16,11,15,18,12,20,21],author:22,genericcolumn:[2,1],same:[9,15,11,1,4,17,5,6,21,22],category_label:[13,21,1,17],html:[9,10,11,17,5,19,1,21,13,7],document:[4,6,11],form_fieldset:1,finish:10,oid:[12,1,17],someon:15,submenu:[21,1,17],filterequalfunct:[12,1,7],choos:[4,8,21],markup:19,without:[9,15,16,17,5,1,21],auth_user_registr:[8,10,17],model:[],persongeneralview:12,execut:[13,1,16,5],stat_col_2:1,stat_col_3:1,stat_col_1:1,rest:15,auth_user_registration_rol:[8,10],ldapserv:8,versu:4,baseapp:[12,17],except:[18,2,17],param:[1,11],treatment:15,pot:13,authoidview:[1,17],read:[12,22],get_redirect:[22,1,0],mygenericmodel:1,grid:1,whth:[],filterrel:[12,17],earphon:[12,13],integ:[15,19,17,4,5,12,1,22,14],server:[16,10,17,18,19,21,22,8],benefit:5,nose:17,userldapmodelview:[22,1],output:[2,1,17],manag:[16,10,17,1,5,12,6,22],imagemanag:19,confirm:[1,16,7],definit:[15,17,1,4,5,19,6,21,20],inject:[19,1,17],ddl:12,refer:[],power:[17,0,11],stringfield:[17,6,11],inspect:[22,1],broken:17,found:16,"__name__":[9,1,18,12,6,22,8],unicod:17,src:[9,19],get_url:19,backup:12,effici:1,msgstr:13,complianc:17,her:[10,5],area:21,accordion_tag:9,start:[22,16,10,7,17],interfac:[15,19,17,4,5,12,6,0],auth_user_db:1,lot:[3,16],tupl:[4,1,8],regard:2,pull:17,possibl:[16,10,11,17,1,13,22,20,7],yetothermodelview:1,foreignkei:[15,4,22,5],embed:19,connect:[15,20,8,14],uid:[2,8],creat:[9,15,16,11,1,4,18,17,5,14,12,6,0,21,13,22,20,19,7],certain:21,file:[],fill:[10,17],again:[13,10],googl:[3,10,17,4,1,21,20],gettext:7,field:[15,20,10,11,1,4,17,5,12,6,22,8,7],valid:[15,17,11,1,20,7],collis:1,you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],poor:4,openid:[],first_app:16,finali:13,sequenc:[22,17],org:16,select2rowidget:[],grupo:13,reduc:17,directori:[9,15,11,17,12,13,22,8],auth_ldap_uid_field:8,descript:[9,11,1,20,8,7],mimic:2,mass:0,cpu:12,repat:20,represent:15,all:[9,15,16,10,11,20,4,18,17,5,12,13,1,0,21,6,22,2,8,7],skeleton:[],form_post:[1,11],countrydirectchartview:[4,1],month:[4,1,17],adition:19,follow:[9,15,16,10,11,4,0,12,1,21,13,22,8,14],alt:19,disk:21,x_col_1:1,register_mail:10,contactgroup:[13,15,6,7],form_column:[1,11],init:[13,18,6,17],userremoteusermodelview:1,queri:[15,17,18,1,22,2,7],begin_d:5,introduc:9,mail_use_tl:10,consum:12,straightforward:16,fals:[9,15,1,4,5,12,6,0,21,22,8,19,14],find_permissions_view_menu:1,mechan:17,veri:[9,15,10,11,12,6,21,7],find_permiss:1,employee_numb:[7,5],list:[],last_nam:[22,1,10],basefilt:[12,1,17],description_column:1,countrystat:[4,1],zero:[16,17],pass:[9,11,1,12,6,21,22,7],further:20,what:[],sub:17,section:9,abl:[],delet:[15,22,1,0,17],piechart:[4,1],version:[],last_login:[12,22,17],primary_kei:[15,19,4,5,12,1,2,14],activation_hash:[],method:[],full:15,hash:[12,22,1,10,17],behaviour:[],goodby:11,modifi:12,valu:[15,17,4,1,21,13,20,7],search:[9,3,17,1,8,7],surpress:17,popen:2,prior:[4,2,11],assoc_benefits_employe:5,babel_default_fold:16,narrow:17,auth_role_publ:[8,17],hash_db_password:12,activation_templ:10,depart:[7,5],set_link_filt:17,primit:[15,6],filenam:[9,19,1],reorg:17,href:[19,17,21,1,11],add_permissions_menu:1,select:[21,1,7,17],internation:[16,21],regist:[],two:[9,15,16,11,1,4,18,5,6,13,22],toggl:17,more:[3,16,11,4,17,5,12,21,13,7],abspath:18,customis:1,post_delet:1,flag:[13,16,8,17],particular:[4,5,0],edit_widget:1,compani:5,form_get:[1,11],none:[15,1,17],endpoint:[15,1,5,17],dev:17,histori:[17,1,5,11],portugues:[13,17],sent:10,male:15,def:[15,11,4,5,19,1,0,6,22,2,7],mail_serv:10,registr:[],share:[9,5],accept:[1,17],personchartview:12,cours:[15,4,5,21,22,2],mai:[15,2,11],goal:20,first_nam:[12,22,1,10],divid:17,anoth:13,list_contact:9,corrigir:[],divis:17,simpl:[],css:[],resourc:[12,5],show_titl:1,function_id:5,associ:[16,17,1,11,5,20,21,22],list_templ:[9,1],github:[15,19,11,4,18,12,21,2],django:[15,1,20],caus:17,disktyp:21,datamodel:[9,15,17,4,5,12,13,1,0,21,6,22,2,19,7],permissionview:1,help:[9,20,21],edit_fieldset:[15,1],paramet:[9,10,11,1,4,17,0,6,22,8],aggregate_avg:[4,1],style:[15,17,1,20,21,22,8],post_upd:1,alter:[12,22,10],good:16,"return":[15,11,4,17,5,19,1,0,6,22,2,7],timestamp:20,datarequir:[17,11],framework:[9,3,16,11,4,17,5,12,13,1,15,14,21,6,22,2,20,7],necess:2,userid:1,authent:[],easili:[9,16,10,0,12,20,21,22],simpleview1:11,simpleview2:11,procedur:12,realli:[22,2,0],count_us:1,sqlamodel:[9,17,4,12,1,21,13,7],todo:17,event:[],mail_password:10,difer:1,get_sess:1,file_nam:1,guess:9,basefilterrel:17,asc:[1,7],cooki:[18,17,11],reason:15,nome:13,success:[22,1,10],assign:[22,1,8,17],detailview:1,permissionviewmenu:1,feel:[9,12,11],number:[4,21,11],evolut:4,genericinterfac:2,done:[9,21,16,5,17],blank:8,miss:[15,17],differ:[16,10,17,4,5,6,21,22],guest:[15,3,4],script:[9,13,17],least:[2,1,16],metho:15,cfg:13,colnam:[4,1],img_siz:[19,8,17],store:[1,8,21],schema:[12,15,6],adher:20,option:[15,16,10,17,4,18,0,1,21,22],relationship:[15,17,4,5,12,1,22],part:[9,22,1,11],sqlainterfac:[15,19,17,4,5,12,0,7],kind:[4,21,6,5,11],list_thumbnail:17,xpto2:1,remov:[15,11,1,17,0,12,6,22,7],my_extra_arg:7,jqueri:[9,17],str:[2,4,1,19],remenb:17,packag:[15,16,10,17,20,13],"null":[7,17],pre_upd:1,juici:11,imagin:2,para:17,lib:[9,17],self:[15,19,10,11,20,4,17,5,12,1,0,6,22,2,8,7],also:[15,11,1,4,17,6,21,22,8,7],build:[20,8,5,11],textareafield:[],referencefield:6,distribut:16,previou:[6,17,22,1,11],most:[15,4,18,5,11],plan:[13,16],diferent:17,clear:1,ext:[],clean:22,scaffold:20,awesom:[15,1,20,17],stat_dat:[4,1],gold:4,babelpkg:[13,17,16,11],babel_init:13,can_add:[1,7],session:[9,16,11,18,17,12,1,21,6,22,2,7],sqla:[15,19,17,4,18,5,12,1,0,22,2,14],font:[15,1,20,17],find:[13,4,1,15,11],access:[16,10,17,11,1,22],pretti:[15,4,1,17],showblockwidget:17,department_queri:7,unus:[1,17],"__file__":18,col_nam:[1,7],him:10,functionview:5,common:[12,1],wrote:17,set:[10,1,20,21,8,7],see:[9,15,16,11,5,6,2],sec:22,arg:1,someth:[9,22,0,11],country_id:4,won:11,field_str:12,experi:[4,7,11],altern:[2,20],externalserv:14,add_us:1,numer:17,lazy_gettext:[10,11,4,1,21,13,22],javascript:[],isol:16,rapid:3,benefit_id:5,solv:[16,7],popul:[4,1],both:6,last:[16,22,6,8,17],foreign:17,barchart:4,redirect_url:11,let:[15,16,10,11,4,5,6,21,13],list_titl:1,add_registr:[],simpli:16,auditmixin:[15,1,17],point:[1,10,11],instanti:[12,1],each:[9,15,11,17,5,12,1,22,2,20,7],header:[17,11],add_link:[17,21,1,11],linux:[2,16],batteri:20,changed_on:[12,22,17],backend:[12,22,1],user_model:22,tail_j:9,stamp:1,criar:17,add:[],empti:[9,15,1,17],implicit:17,monthli:4,blob:[],edit_form_query_cascad:1,static_url_path:1,imag:[],convert:17,func:[4,1],educ:4,remote_us:[20,22,1,8,17],look:[9,15,10,11,1,4,18,5,19,6,21,13,22,8,7],histor:4,formatt:[4,1,17],"while":16,abov:[9,21],error:[17,20,11],fun:6,everyon:22,propag:8,user_show_fieldset:22,readi:[4,16,21],columnchart:[4,1],itself:[2,1,16,17],default_view:[21,1,11],decor:[],employee_id:5,grant:20,belong:[16,10,5],route_bas:[17,1,11],conflict:16,higher:[4,17],get_order_columns_list:17,optim:[19,17],quickchart:4,moment:10,user:[],wherev:2,implement:[15,10,11,4,0,19,1,21,22,2],built:3,myaction:0,lower:[22,20,17],entri:[1,7,5,11],person:[15,19,1,12,6,22],chanc:16,propos:3,explan:15,jsapi:17,head_j:[9,17],pssession:2,delete_al:[2,22,1,0],mysql:[12,20,14],msgid:13,group_by_column:[4,21,17],my_project:9,pretty_month_year:4,auth_ldap_firstname_field:8,listblock:[21,17],bin:[12,16],varchar:12,format:[2,4,1],big:[9,20],nginx:22,datasourc:2,can_delet:7,basicconfig:[],oid_ask_for:17,personal_phon:[6,15,1],resolv:17,collect:[1,21],api:[],givennam:8,myinlinet:21,group_id:[],encount:20,often:16,creation:[22,1,7,17],some:[15,19,10,4,5,12,1,13,22,20],back:[17,1,11],virtualenv:16,listfield:6,per:4,larg:[12,13,8],retro:12,contacto:13,this_form_get:1,object:[12,4,1,8,15],run:[16,17,18,11,5,12,13,22],method3:11,method1:11,show_cascad:[21,5,17],funcnam:[4,1],exemplo:17,wget:12,psview:2,mssql:20,permission_view_menu:1,constraint:[7,17],mymodelview2:21,mymodelview3:21,modal:17,goodi:20,block:[9,21,17,7,11],"__repr__":[15,4,6,5],listwidget:[1,21],update_us:1,ensur:10,generalxpto_permiss:1,inclus:17,your_js_fil:9,question:[15,17],submit:[1,10,11],custom:[],includ:[],suit:17,blueprint:[1,11],himself:8,viewmenu:1,link:[10,17,11,19,1,21],translat:[],russian:[13,17],line:[15,2,16,17],info:[15,17,1,11,6,22,7],concaten:[19,4,1],utf:13,quickfil:[19,21],simplebychartview:1,readlin:2,auth_user_remote_us:1,booleanfield:1,mymodel:[12,1,7],impl:1,get_all_us:1,quickhowto2:[2,14],img_upload_fold:[8,17],repres:[2,11],guarante:22,edit_form_query_rel_field:[12,1,17],menu_access:1,pre_delet:1,titl:[9,10,17,4,11,1],sequenti:1,queryselectfield:[7,17],master_div_width:1,nice:[1,5],draw:[4,1],mongodb:20,algorithm:11,microsoft:22,masterdetail:17,hello:11,code:[9,15,16,17,4,18,5,12,6,0,21,13,22],partial:[9,15,20,17],doanload:22,scratch:[9,22],add_form_query_cascad:1,compact:17,privat:[20,10],send:[17,10,0,11],granular:[22,1,11],aris:15,created_bi:[22,1,7],mous:17,genericmodel:[2,1,17],quickhowto:[15,4,14],gender:[15,6,7],button:[4,17],model_cl:1,fewer:15,"try":[15,2,16,10,17],utilview:17,pleas:[12,15],create_blueprint:1,myuser:22,hardcod:17,video:16,download:[15,22,16],before_request:[],mongodb_set:8,click:[],compat:[],index:[],view_menu:1,edit_cascad:[21,17],cell:17,get_file_original_nam:1,garbag:22,whatev:[9,22,2,21],lc_messag:13,len:4,bodi:9,logout:17,ubuntu:16,vertic:[20,17],sinc:[15,22,17,16,11],authldapview:1,convers:17,chang:[],fiscal_numb:5,college_perc:[4,1],add_permission_rol:1,base_permiss:[2,1,7],appli:[9,4,1,22,2,7],app:[9,15,16,11,1,18,17,5,12,6,21,13,22,8,14],spacelab:21,apt:16,"boolean":17,regexp:2,from:[],doubl:17,upgrad:12,next:[],few:[15,21],doubt:2,simpler:7,flask_babelpkg:22,base_ord:[1,7,17],account:[8,10],alia:1,related_view:[9,15,17,1,4,5,12,6,0,21,13],fetch:[10,17],employe:[22,7,5],sqlite:[12,18,20,14,17],process:[4,1,10,11],sudo:16,tag:[6,5,17],extra_class:7,tab:[15,21,5,17],serial:21,mymodelview:[22,1,21],instead:[9,17,4,11,12,22],overridden:[9,17,11,1,21,7],filterclass:[1,7],alloc:5,auth_user_oid:1,seriou:16,restruct:17,correspond:[12,13,22],issu:[12,3,2,15,17],prettifi:17,allow:[15,10,11,17,1,2,7],mongoengineinterfac:6,move:[12,17],baselayout:[9,1],crash:17,greater:17,python:[],auto:[3,17],extra_arg:[1,7,17],handi:10,auth:[22,1,10,17],myuserdbmodelview:22,"__bind_key__":14,chart_3d:[4,1],showwidget:1,conf_password:22,mastert:1,anyth:[18,1],edit:[],dynamicform:11,from_object:[6,12,22,1,8],subset:2,view_nam:1,created_on:[12,22,17],meta:9,"static":[9,1,7,17],our:[15,4,5,6,21,2],special:[15,17,5,0,21,22,8,7],out:[15,2,8,10],list_widget:[19,1,21],categori:[15,11,1,4,17,5,6,21,13,22],rel:[9,17,11,1,21,8],metaclass:17,statist:[4,1],insid:11,myform:11,control:[15,1],dictionari:[4,1,8,7],releas:15,pretifi:1,log:[21,6,7,17],static_fold:1,head_meta:9,navbar:[9,21,17],unwant:22,could:[15,21,17],keep:[12,20,11],datetimefield:[6,17],outsid:17,fieldwidget:[7,17],contact_group_id:15,kerbero:22,order_column:[21,1,17],select2widget:7,mkdir:[],system:[2,16],messag:[9,10,17,11,13,7],sec_model:22,attach:11,fontawesom:[9,15,17],"final":[9,4,5,21,22,2],del_permiss:1,mysecuritymanag:[22,10],textfield:[7,17],exactli:[15,22,6],lista:13,haven:12,structur:[9,15,1,7],genericsess:[2,1],bind:[8,14,17],pgsql:12,py3:16,addformwtf:7,myproject:[],have:[9,15,16,11,4,17,5,12,1,21,22,2,8,19,7],tabl:[],need:[9,16,11,20,18,17,5,1,22,8],babel:[],rout:[1,11],expos:[],mix:[1,21],builtin:[20,17],which:14,singl:[2,22,1,0],unless:12,who:22,oracl:[20,17],"class":[9,15,10,11,14,4,18,17,5,12,13,1,0,21,6,22,2,19,7],get_app:1,can_edit:[1,7],myuserdbview:22,url:[10,17,11,1,21,8],serverdisktypemodelview:21,setlevel:6,request:17,wtform:[17,1,16,11],face:16,deni:17,list_column:[15,17,5,19,1,21,6,22,2,7],bs3textfieldrowidget:7,add_permiss:1,find_view_menu:1,thisismyscretkei:18,text:[9,17,11,5,1,21,13],overflow:17,myviewt:21,locat:1,is_item_publ:1,auth_typ:[8,10,17],baseiterfac:17,should:[15,0,12,1,21,6,2],manufactur:1,restructur:17,suppos:4,combo:7,local:14,hope:[12,15],contribut:[],basefilterconvert:12,familiar:15,add_templ:[9,1],autom:21,examplemodel:7,db2:20,myindexview:21,filtercontain:12,enabl:[15,10,17,11,1,8],baseinterfac:17,add_permissions_view:1,she:[10,5],partit:20,contain:[15,1,10,21],get_user_by_id:1,project_nam:[21,11],frame:4,orphan:22,"_permission_nam":1,show_form:[9,17],servermodelview:21,bs3textfieldwidget:7,gmail:[22,10],correctli:[10,17],state:12,email:[16,10,17,0,1,22,8],kei:[],entir:[9,1],flask_mongoengin:[6,1],addit:[19,4,22,7],stat2:4,stat1:4,rtype:[],admin:[16,17,18,20,22,8],equal:17,etc:[9,16,11,17,5,12,1,0,22,20],instanc:[1,14,17],changed_bi:22,app_nam:[1,8],jumbotron:21,strftime:5,comment:8,venv:16,month_nam:4,perm_view:1,sqlainterdac:22,respect:[2,4,1],view_menu_nam:1,groupgeneralview:12,quit:16,addition:[15,4,16,11],compos:4,compon:9,json:[],immedi:16,wtf:[17,1,10,11],bit:6,my_column_nam:1,togeth:4,allwai:[7,17],present:[15,10,11,1,4,17,6,21,20],multi:20,auth_view:1,cursor:17,intranet:22,endblock:[9,21,11],layer:15,helper:17,almost:[9,21],demo:[15,3,4],site:[22,1,20,11],auth_user_ldap:1,revis:[],welcom:[15,3,4],handl:[1,20,7,0,17],infer:17,edit_contact:9,http:[15,19,16,11,4,12,1,21,2],benefitview:5,mybas:9,column_nam:1,student:4,expand:[6,15,22,1],audit:[],sqlalchemy_database_uri:[18,8,14],update_redirect:[22,1,0,11],builder:16,groupmasterview:21,well:[18,11],exampl:[],command:[],english:[13,16],backref:[22,5],latest:17,photo_img:19,rocket:[22,0],less:[12,17],action_post:1,fabmanag:[16,17],web:[15,16,17,20,22,8],securitymanag:[],registerus:10,nullabl:[15,19,17,4,5,12,1,14],poor_perc:4,cleanup:[],match:[22,8,7],futur:[1,17],crud:[15,3,17,1,6,20],know:[12,2],password:[16,17,12,1,22,8,14],python3:17,desc:[1,7],insert:[9,16,10,17,11,20],resid:14,like:[9,15,16,11,4,17,5,12,1,0,21,22,2,8,19,7],lost:12,oid_ask_for_opt:17,necessari:[22,10,0,17],resiz:[19,8,17],searchwidget:1,page:[9,3,10,11,17,5,1,21,20],mymodelview1:21,fabtest10:10,proper:17,home:17,auth_ldap_serv:8,librari:[],tmp:12,avoid:1,useroauthmodelview:1,leav:[1,8],encourag:12,add_permission_view_menu:1,host:18,babel_extract:13,although:[12,15],security_manager_class:[6,22,1,17],panel:[9,17],edit_form:[9,1,7,17],about:[],actual:[21,16,17],column:[],constructor:[1,11],disabl:0,chart_templ:1,own:[9,15,10,11,4,17,0,19,1,21,13,22,2,20,7],easy_instal:16,automat:[],contactchartview:[4,22],index_templ:21,merg:17,contruct:1,pictur:17,much:[2,3,1,11],"var":[13,22,20,8,17],"function":[],auth_ldap_email_field:8,brand:17,login_count:[12,22,17],oauth:1,eas:9,inlin:[21,17],mail_default_send:10,count:[15,4,22,1,17],made:[15,6,21],displai:[9,15,17,4,19,1,21,13],record:[9,15,10,11,17,5,1,0,2,20],limit:[1,16,17],problem:[20,16,17],flask_appbuild:[11,1,12,6,21,22,7],pil:16,"int":[2,1,17],dure:21,pid:2,pie:4,rule:[9,7],contact_group:[15,4,6],probabl:16,detail:[15,3,11,1,4,18,17,5,6,21,22,20,7],virtual:[16,17],detailt:1,other:[16,17,4,11,1,21],lookup:20,contacttimechartview:[4,22,21],rememb:[9,15,17,1,4,5,6,21,7],varieti:20,mywidgetlist:21,stat:[4,1],repeat:16,areachart:[4,21],debian:16,sqlaintefac:12,fail_login_count:[12,22,17],getlogg:6},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"]},filenames:["actions","api","generic_datasource","index","quickcharts","relations","quickhowto_mongo","advanced","config","templates","user_registration","views","versionmigration","i18n","multipledbs","quickhowto","installation","versions","quickminimal","quickfiles","intro","customizing","security"],titles:["Actions","API Reference","Generic Data Sources","Flask-AppBuilder","Chart Views","Model Relations","Model Views on MongoDB","Advanced Configuration","Base Configuration","Templates","User Registration","Base Views","Version Migration","i18n Translations","Multiple Databases","Model Views (Quick How to)","Installation","Versions","Quick Minimal Application","Model Views with Files and Images","Introduction","Customizing","Security"],objects:{"flask.ext.appbuilder.views":{CompactCRUDMixin:[1,4,1,""],ModelView:[1,4,1,""],IndexView:[1,4,1,""],PublicFormView:[1,4,1,""],MasterDetailView:[1,4,1,""],SimpleFormView:[1,4,1,""]},"flask.ext.appbuilder.charts.views":{TimeChartView:[1,4,1,""],GroupByChartView:[1,4,1,""],DirectByChartView:[1,4,1,""],BaseChartView:[1,4,1,""],DirectChartView:[1,4,1,""],ChartView:[1,4,1,""]},"flask.ext.appbuilder.charts.views.GroupByChartView":{definitions:[1,1,1,""]},"flask.ext.appbuilder.charts.views.BaseChartView":{group_bys:[1,1,1,""],chart_widget:[1,1,1,""],width:[1,1,1,""],chart_type:[1,1,1,""],search_widget:[1,1,1,""],chart_template:[1,1,1,""],chart_title:[1,1,1,""],group_by_label:[1,1,1,""],chart_3d:[1,1,1,""]},"flask.ext.appbuilder":{baseviews:[1,0,0,"-"],base:[1,0,0,"-"],filemanager:[1,0,0,"-"],actions:[1,0,0,"-"],views:[1,0,0,"-"]},"flask.ext.appbuilder.filemanager":{get_file_original_name:[1,3,1,""]},"flask.ext.appbuilder.models.generic.GenericSession":{query:[1,2,1,""],clear:[1,2,1,""],get:[1,2,1,""],all:[1,2,1,""],delete_all:[1,2,1,""]},"flask.ext":{appbuilder:[3,0,0,"-"]},"flask.ext.appbuilder.baseviews.BaseCRUDView":{edit_form_query_rel_fields:[1,1,1,""],pre_update:[1,2,1,""],related_views:[1,1,1,""],show_columns:[1,1,1,""],edit_form_query_cascade:[1,1,1,""],show_template:[1,1,1,""],edit_template:[1,1,1,""],list_template:[1,1,1,""],add_form_query_cascade:[1,1,1,""],validators_columns:[1,1,1,""],edit_form_extra_fields:[1,1,1,""],post_add:[1,2,1,""],list_widget:[1,1,1,""],page_size:[1,1,1,""],add_form_query_rel_fields:[1,1,1,""],edit_fieldsets:[1,1,1,""],list_title:[1,1,1,""],post_delete:[1,2,1,""],post_update:[1,2,1,""],pre_add:[1,2,1,""],add_template:[1,1,1,""],list_columns:[1,1,1,""],show_widget:[1,1,1,""],show_title:[1,1,1,""],order_columns:[1,1,1,""],edit_widget:[1,1,1,""],edit_columns:[1,1,1,""],add_title:[1,1,1,""],edit_form:[1,1,1,""],add_widget:[1,1,1,""],show_fieldsets:[1,1,1,""],pre_delete:[1,2,1,""],add_fieldsets:[1,1,1,""],description_columns:[1,1,1,""],add_columns:[1,1,1,""],edit_title:[1,1,1,""],add_form_extra_fields:[1,1,1,""],add_form:[1,1,1,""]},"flask.ext.appbuilder.models.mixins.FileColumn":{impl:[1,1,1,""]},"flask.ext.appbuilder.security":{manager:[1,0,0,"-"],decorators:[1,0,0,"-"]},"flask.ext.appbuilder.models.generic":{GenericColumn:[1,4,1,""],GenericModel:[1,4,1,""],GenericSession:[1,4,1,""]},"flask.ext.appbuilder.baseviews":{BaseView:[1,4,1,""],BaseCRUDView:[1,4,1,""],expose:[1,3,1,""],BaseModelView:[1,4,1,""]},"flask.ext.appbuilder.baseviews.BaseModelView":{base_filters:[1,1,1,""],search_form:[1,1,1,""],search_columns:[1,1,1,""],search_widget:[1,1,1,""],label_columns:[1,1,1,""],base_order:[1,1,1,""],datamodel:[1,1,1,""]},"flask.ext.appbuilder.views.MasterDetailView":{master_div_width:[1,1,1,""]},"flask.ext.appbuilder.base":{AppBuilder:[1,4,1,""]},"flask.ext.appbuilder.models.mixins.ImageColumn":{impl:[1,1,1,""]},"flask.ext.appbuilder.charts":{views:[1,0,0,"-"]},"flask.ext.appbuilder.models":{generic:[1,0,0,"-"],group:[1,0,0,"-"],mixins:[1,0,0,"-"]},"flask.ext.appbuilder.models.mixins":{AuditMixin:[1,4,1,""],ImageColumn:[1,4,1,""],FileColumn:[1,4,1,""],BaseMixin:[1,4,1,""]},"flask.ext.appbuilder.models.group":{aggregate_sum:[1,3,1,""],aggregate_avg:[1,3,1,""],aggregate_count:[1,3,1,""]},"flask.ext.appbuilder.security.manager.BaseSecurityManager":{registeruserdbview:[1,1,1,""],auth_user_ldap:[1,2,1,""],has_access:[1,2,1,""],update_user:[1,2,1,""],find_view_menu:[1,2,1,""],add_permission:[1,2,1,""],add_permissions_view:[1,2,1,""],find_permissions_view_menu:[1,2,1,""],del_permission_role:[1,2,1,""],add_permission_role:[1,2,1,""],get_all_users:[1,2,1,""],add_permissions_menu:[1,2,1,""],registeruser_view:[1,1,1,""],update_user_auth_stat:[1,2,1,""],del_permission:[1,2,1,""],lm:[1,1,1,""],useroauthmodelview:[1,1,1,""],userdbmodelview:[1,1,1,""],auth_user_remote_user:[1,2,1,""],oauth_handler:[1,1,1,""],auth_user_db:[1,2,1,""],resetmypasswordview:[1,1,1,""],find_permission_view_menu:[1,2,1,""],resetpasswordview:[1,1,1,""],authremoteuserview:[1,1,1,""],authoidview:[1,1,1,""],userremoteusermodelview:[1,1,1,""],add_permission_view_menu:[1,2,1,""],oid:[1,1,1,""],find_permission:[1,2,1,""],authoauthview:[1,1,1,""],authdbview:[1,1,1,""],oauth:[1,1,1,""],count_users:[1,2,1,""],security_cleanup:[1,2,1,""],authldapview:[1,1,1,""],auth_user_oid:[1,2,1,""],useroidmodelview:[1,1,1,""],is_item_public:[1,2,1,""],auth_view:[1,1,1,""],find_user:[1,2,1,""],reset_password:[1,2,1,""],del_view_menu:[1,2,1,""],registeruseroidview:[1,1,1,""],user_view:[1,1,1,""],userldapmodelview:[1,1,1,""],get_user_by_id:[1,2,1,""],add_view_menu:[1,2,1,""],add_user:[1,2,1,""]},"flask.ext.appbuilder.security.manager":{BaseSecurityManager:[1,4,1,""]},"flask.ext.appbuilder.security.decorators":{has_access:[1,3,1,""],permission_name:[1,3,1,""]},"flask.ext.appbuilder.views.PublicFormView":{default_view:[1,1,1,""],form:[1,1,1,""],form_post:[1,2,1,""],form_fieldsets:[1,1,1,""],form_title:[1,1,1,""],form_columns:[1,1,1,""],edit_widget:[1,1,1,""],form_get:[1,2,1,""]},"flask.ext.appbuilder.baseviews.BaseView":{default_view:[1,1,1,""],base_permissions:[1,1,1,""],route_base:[1,1,1,""],create_blueprint:[1,2,1,""],update_redirect:[1,2,1,""],static_folder:[1,1,1,""],get_redirect:[1,2,1,""],extra_args:[1,1,1,""],template_folder:[1,1,1,""],render_template:[1,2,1,""]},"flask.ext.appbuilder.views.ModelView":{action:[1,2,1,""],action_post:[1,2,1,""]},"flask.ext.appbuilder.base.AppBuilder":{get_session:[1,1,1,""],add_view_no_menu:[1,2,1,""],app_name:[1,1,1,""],app_icon:[1,1,1,""],app_theme:[1,1,1,""],version:[1,1,1,""],add_link:[1,2,1,""],add_view:[1,2,1,""],add_separator:[1,2,1,""],security_cleanup:[1,2,1,""],"__init__":[1,2,1,""],get_app:[1,1,1,""]},"flask.ext.appbuilder.actions":{action:[1,3,1,""]},"flask.ext.appbuilder.views.SimpleFormView":{form:[1,1,1,""],form_post:[1,2,1,""],form_columns:[1,1,1,""],form_title:[1,1,1,""],edit_widget:[1,1,1,""],form_get:[1,2,1,""]}},titleterms:{skeleton:15,show:9,permiss:22,compactcrudmixin:1,group:[4,1],expos:15,flask:[3,1],menu:21,fix:[3,17],configur:[8,10,7],theme:21,version:[12,17],masterdetailview:1,ldap:10,basemodelview:1,applic:[15,18],timechartview:1,contribut:3,python:16,initi:[6,16],securitymanag:[],requir:16,introduct:[13,20],edit:9,simpl:15,list:9,authent:[22,10],publicformview:1,cascad:9,quick:[13,15,18],view:[15,11,1,4,0,19,6,21],basecrudview:1,direct:4,indexview:1,librari:9,compat:16,index:21,what:[],extend:22,databas:[14,10],content:3,appbuild:[3,1],method:15,refer:1,widget:21,kei:8,advanc:7,migrat:12,gener:[2,1],javascript:9,baseregisterus:1,behaviour:21,step:19,base:[15,22,8,7,11],chartview:1,column:1,filter:7,aggr:1,action:[1,0],improv:17,chang:21,filemanag:1,extra:[1,7,5],modelview:1,basesecuritymanag:1,automat:22,deprec:[4,1],api:1,instal:16,custom:[22,21],your:[15,4,0,19,6,22],from:12,support:22,regist:[15,4,6],add:9,construct:21,next:19,json:15,includ:20,type:22,"function":[9,1],form:7,imag:19,relat:5,translat:13,i18n:13,bug:[3,17],baseview:[1,11],baseregisteruserview:[],"default":[7,21],groupbychartview:1,setup:18,properti:5,defin:[15,4,6,19,0],were:[],simpleformview:[1,11],registr:10,argument:7,templat:[9,7,21],sourc:[2,1],file:19,tabl:3,pip:16,decor:1,multipl:14,secur:[22,1,7],babel:13,ext:1,contact:15,how:[13,15,18],cleanup:22,role:22,indic:3,config:[13,8],css:9,openid:10,mongodb:6,chart:[4,1],beta:1,user:[22,10],mixin:1,mani:5,directchartview:1,data:[2,4,1],audit:22,footer:21,minim:18,directbychartview:1,exampl:2,command:2,basechartview:1,model:[15,1,5,19,6,22],order:7}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{validators_column:[1,7],col_typ:1,four:22,upload_fold:[8,17],dirnam:18,personal_celphon:[15,6],whose:13,under:[17,11],list_block:17,fieldset:[15,1,17],myregisteruserdbview:10,head_css:9,"utiliza\u00e7\u00e3o":[],affect:17,cmd:2,upload:[20,8,17],previou:[6,17,22,1,11],factori:[1,17],edit_column:[15,17,5,1,22,7],direct:[],street:15,aggreg:[4,22,1,17],myinlineview:21,even:[3,16,12,6,21,19,7],disk:21,x_col_1:1,mongoengin:[15,20,1,19,6,8],migrate_db_1:[],migrate_db_0:12,"new":[9,3,16,10,11,15,17,12,1,22,8,7],sqlalchemy_bind:14,metadata:5,widget:[],app_icon:[1,8,17],here:[9,15,0,21],path:[9,18,12,1,21,8,14],dry:20,intead:17,datetim:[12,4,5,17],groupmodelview:[15,0,6,13,22,7],permit:17,studi:22,unemployed_perc:[4,1],succesfulli:10,total:[4,22],highli:[20,16],describ:[18,5],would:[15,5],init:[13,18,6,17],call:[9,17,11,0,19,1,2],typo:17,type:2,tell:[9,10,11,5,6,0,21,13,22],benefits_employe:5,add_separ:[22,1,5,21],relat:[],yahoo:22,notic:[15,19,11,1,4,18,12,6,21],warn:[1,17],phone:[1,21],hold:[15,10,4,1,22,2,8],must:[15,16,11,4,17,12,1,21,6,2,8,7],join:[12,18,14,17],setup:[],work:[15,16,11,17,12,13,2],introduc:9,rework:[22,17],serverdisktyp:21,form_titl:[1,10,11],add_form:[9,1,7,17],overrid:[9,15,10,11,18,17,19,1,21,6,22,2,7],show_fieldset:[6,15,22,1],smtp:10,filterequ:[12,1,17],auth_ldap_search:8,want:[9,15,11,4,5,1,0,21,13,22,7],chart_titl:[4,1,21],everi:[18,17],end:[9,5],classifi:15,how:[],env:16,answer:[],verifi:22,config:[],updat:[15,11,1,17,5,6,0,13],adit:1,chines:[13,17],after:[9,15,10,17,12,1,22],befor:[9,4,1,15,12],wrong:17,averag:[4,1,17],classmethod:17,bootstrap:[9,17,1,20,21,8],authremoteuserview:1,lost:12,query_factori:7,exclud:17,receiv:[10,17],environ:[16,22,20,8],permission_nam:[22,1,17],charview:15,origin:[9,19,1],auth_role_admin:[8,17],becaus:[9,16,11,4,17,5,13,14],veri:[9,15,10,11,12,6,21,7],countrygroupbychartview:[4,1],flexibl:[7,17],uuid:[19,1,17],img:19,"__class__":9,better:[3,21,16,17],easier:19,them:[9,15,11,4,5,12,1,0,21,13,22,8,19,14],thei:[9,17,4,11,5,19,2],authdb:1,safe:17,passwordformail:10,"break":[12,16,17],you_css_fil:[],jinja2:[9,17,1,21,13,20,7],choic:17,mytabl:[1,7],grammar:[4,1],chartwidget:1,debug:[18,6],oblig:[12,15,2],side:[21,8,17],group_by_label:[4,1],mean:13,set_index_view:17,sec_view:22,esqueleto:17,manufacture_id:1,generalview:[12,17],ommit:1,extract:[13,21],edit_templ:[9,1,21],goe:[9,20],basedir:[12,18,14],content:[],adapt:17,navig:[9,1,5,11],basefilt:[12,1,17],search_form:1,statschartview:[4,1],pagin:[15,17],onto:12,render:[9,11,12,1,21,13],independ:[15,17],necess:2,restrict:1,instruct:12,alreadi:[15,4,5,12,21,2,8],massiv:0,primari:17,add_form_extra_field:[1,7,17],top:[9,3,21,1,17],sometim:[1,11],exampleview:7,master:[15,19,11,4,17,12,1,21,2,20],too:16,john:11,filternotequ:17,boostrap:17,tool:16,fontawesom:[9,15,17],dbmongo:[6,1],provid:[10,17,4,11,1,13,20],tree:[15,11,4,19,21,2],label_column:[15,1,4,19,6,21,13],project:[15,3,16,11,12,20,21,13],my_col_to_be_ord:7,runner:[],mind:20,raw:12,incompat:16,simplifi:[22,17],usernam:[16,10,17,1,22,8],sqlinterfac:17,security_cleanup:[22,1,17],don:[12,1,20],enviro:17,doc:[12,2,17],flow:20,doe:[1,17],declar:[9,12,18,15,17],passwordfield:[],section:9,dot:[15,17],add_fieldset:[15,1],"__str__":6,syntax:15,bootwatch:[8,17],registeruser_view:1,layout:21,field2:[7,11],menu:[],explain:22,field1:11,apach:22,theme:[],ldap:[],"__call__":7,get_model_rel:17,folder:[15,11,1,5,12,6,21,8],department_id:5,get_us:[1,7],edit_titl:1,report:[3,17],youtub:16,bar:9,changeabl:12,method:[],reload:17,baseregisterus:[],registerview:10,mandatori:[1,8,11],result:[15,19],respons:[19,17,22,1,11],fail:[22,17],hash:[12,22,1,10,17],subject:10,brazil:[13,17],hopefulli:1,databas:[],psmodel:2,myview:[12,21,1,7,11],pybabel:13,approach:22,attribut:[12,1,17],accord:10,extend:21,extens:[15,18,17],extent:[],"__unicode__":6,behaviour:[],protect:[22,11],easi:[9,15,16,10,17,11,20],as_unicod:11,unemploy:[4,1],against:[22,1],cog:11,logic:5,countri:[13,4,1,8],login:[15,3,16,10,17,4,18,12,1,22],del_permission_rol:1,com:[15,19,10,11,4,17,12,1,21,2,14],col:[4,22,1,17],asctim:[],myformview:11,filecolumn:[1,17],height:[4,8],guid:17,assum:[21,1,5,17],duplic:17,three:[],been:16,find_us:1,trigger:15,interest:4,basic:[15,18,22,10],add_contact:9,ani:[15,16,11,17,12,1,21,22,2,20,7],child:[4,18,1,21],"catch":17,ugli:[],resetpasswordview:1,properti:[],remv:17,calcul:4,useroidmodelview:[22,1],seven:13,some_col:1,add_view:[15,11,1,4,5,12,6,21,13,22],queryselectmultiplefield:17,kwarg:[15,1,7],cond:8,linechart:[4,1],perform:[1,17],make:[9,10,4,5,13,7],init_app:[12,17],listthumbnail:[19,21],complex:[2,5,21],complet:[21,10,17],list_list:9,projectfil:[1,21],recaptcha_public_kei:10,hand:17,rais:17,formwidget:1,babel_default_local:[16,8],add_widget:1,kept:[12,22],x_col2:1,post_add:1,inherit:[15,10,11,1,4,17,12,6,21,22],contact:[],bettwen:17,thi:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],chart_typ:[4,1,21],everyth:[15,4,5,1,21,6,22,2,20],left:[21,1,8,17],identifi:[4,1],just:[9,15,16,10,11,4,18,0,12,1,21,6,22,2,7],photo:19,activation_templ:10,human:[10,5],yet:[15,1,16],languag:[13,16,20,8,17],group_bi:1,directchart:17,img_upload_url:[8,17],primit:[15,6],els:[19,4,0],save:[19,1,17],edit_form_extra_field:[1,7,17],applic:[],mayb:16,preserv:[22,17],recaptcha:10,birth:[4,22,21],myotherview:12,modeview:0,specif:[9,22,1],employeeview:[7,5],unnecessari:17,underli:15,www:[1,21],right:21,old:22,percentag:4,born:4,intern:[12,21,17],csrf_enabl:18,indirect:8,show_templ:[1,7,5,21],when:[9,15,16,10,11,17,5,19,1,21,22,2,8],datetimepick:20,listitem:[21,17],register_us:[],localhost:[16,14,11],plu:[1,21],aggregate_sum:[4,1],colleg:4,post:[12,17,1,5,11],"super":[9,2,7],photo_img_thumbnail:19,chapter:[15,6,7,5,11],obj:1,dashboard:4,search_column:[2,4,21,1,17],del_view_menu:1,yourappemail:10,get_file_orginal_nam:17,departmentview:5,add_form_query_rel_field:[1,7,17],"float":[4,17],encod:[13,17],contactmodelview:[9,15,1,4,0,6,21,13,22,7],git:21,wai:[9,15,16,10,1,5,12,6,14,21,22,8,7],support:[13,14,21],"class":[9,15,10,11,14,4,18,17,5,12,13,1,0,21,6,22,2,19,7],avail:[7,5,21],width:[4,1,8],"_flt_":17,your_root_project_path:21,add_column:[15,17,5,1,22,7],overhead:22,fork:[13,16],medium:8,forc:17,sqlalchemi:[15,19,16,17,20,18,5,12,1,6,22,2,8,14],authdbview:1,"true":[15,19,10,4,18,5,12,1,14,6,22,2,8,7],reset:[22,1,16,17],absent:1,attr:17,reset_password:1,endcal:9,model3:14,model2:14,model1:[12,14],exsit:1,exist:[15,17,5,12,1,21,22,8],request:17,check:[22,1,5],oauth_handl:1,readonli:[1,7,5],encrypt:22,panel_end:9,excel:[15,19,16,10],role:[],test:[12,17,1,16,11],jonh:[],category_icon:[6,13,1,15,11],intend:[2,20],error_messag:10,sql:17,personmodelview:19,femal:15,longer:[1,17],time:[16,10,11,4,17,5,1,21,6,22,2,20],backward:16,dpgaspar:[15,19,11,4,12,21,2],myotherrelatedview:1,concept:11,skip:11,global:[19,1,10],extra_field:1,imagecolumn:[19,1,17],subclass:[2,1,17],created_by_fk:[12,17],row:[9,1],show_column:[15,19,1,5],depend:[1,16],flask:[],render_field:17,flash:[9,17,11],readabl:17,larg:[12,13,8],isinst:0,sourc:[],string:[15,19,11,4,5,12,1,13,22,8,14],email_templ:10,show_widget:1,add_view_no_menu:[21,1,5,11],administr:7,did:5,iter:[],item:[17,4,11,0,1,22],your_project:9,quick:[],div:21,round:19,add_view_menu:1,prevent:[22,17],has_access:[17,22,1,11],method2:11,port:18,page_s:[1,17],muldelet:[22,0],current:[17,1,11],datamodel:[9,15,17,4,5,12,13,1,0,21,6,22,2,19,7],registeruserdbview:[1,10],employeehistoryview:5,myviewt:21,deriv:11,dropdown:[20,17],auth_ldap_bind_field:8,gener:[],modif:[22,1],address:[6,15,1,8,5],box:15,root:[13,14,17],behav:[1,10],user_view:1,overriden:1,month_year:4,my_sql2:14,pillow:16,my_sql1:14,useful:[],extra:[],modul:[12,1,17],authoauthview:1,instal:[],sqllite:[6,8],memori:12,todai:5,live:[15,3,4],handler:1,criteria:4,scope:9,ppid:2,checkout:[15,16],minim:[],peopl:8,visual:4,accept:[1,17],postgresql:17,easiest:10,prepar:0,uniqu:[15,17,1,4,5,19,6,14,7],can:[9,15,16,10,11,14,4,18,17,5,12,13,1,0,21,6,22,2,20,19,7],lc_messag:13,email_subject:10,purpos:1,select2:[9,12,20,5,17],boilerpl:16,heart:2,slightli:5,levelnam:[],critic:9,auth_ldap_lastname_field:8,mail_usernam:10,occur:[22,5],alwai:[17,21,1,22,11],multipl:[],basefilterconvert:12,your_css_fil:9,somevalu:7,map:[8,11],product:[9,1],birthdai:[6,4,1,15,21],myothermodelview:[1,21],max:17,clone:[],mac:16,mymethod:22,date:[15,4,7,5,17],data:[],grow:16,base_filt:[4,1,7,17],practic:10,favorit:8,"_sep_":[19,1],produc:4,inform:[15,10,0],preced:4,callabl:17,defaultview:17,examplemodel:7,tty:2,gradual:15,get_related_model:17,approv:17,still:[6,20,2,16,7],mainli:[],dynam:17,group:[],accordion:[9,15,17],mail:[8,10],find_permission_view_menu:1,main:[9,12,20],non:[15,22,1,17],my_field1:7,my_field2:7,chart_widget:1,col2:4,col3:4,initi:[],col1:4,now:[15,16,11,4,17,5,12,6,22,14],name:[9,15,16,11,1,4,17,5,12,6,14,21,13,22,8,19,7],revers:[22,21,17],separ:[13,21,1,17],full_nam:[7,5],januari:4,collaps:17,compil:13,domain:[14,17],masterview:1,replac:[9,17],individu:7,year:[4,1,17],happen:21,shown:[9,10,17,5,1,22,8],aggregate_count:[4,1],space:15,list_item:17,resetmypasswordview:1,bla:21,correct:[12,6,17],uwsgi:17,she:[10,5],earlier:[22,17],migrat:[],envelop:[15,1,4,6,21,13],orm:[15,22,5],add_titl:1,render_templ:[1,11],thing:[12,4],place:[12,8,21],principl:[20,11],imposs:17,end_dat:5,first:[9,15,16,10,11,4,17,5,14,21,13,22,2,8,7],oper:11,directli:[12,20],onc:16,contact_group_id:15,my_widget_list:21,yourself:[12,20],fast:15,spanish:[13,17],open:[15,16,5,12,6,21,22,2,8],size:[19,1,8,17],given:[22,21],max_length:6,userinfo:17,github:[15,19,11,4,18,12,21,2],mostli:1,than:[20,17],serv:[9,15],wide:9,param1:11,seri:[4,1,17],pre:[17,1,5,11],sai:[9,4],argument:[],deliv:20,engin:[12,1],datepick:20,list_search:9,note:[15,1,10],ideal:9,take:[15,10,11,4,18,5,19,6,21,13,22,8,7],advis:[15,16,18,21,22,8],login_view:12,"_add_object":2,begin:5,sure:10,pre_add:1,normal:[15,16,19,6,2,20],track:5,beta:[],employeehistori:5,icon:[15,20,11,1,4,17,5,6,21,13,8],later:[19,10],drive:2,quantiti:21,create_al:[15,5],basemixin:[1,17],show:[],german:[13,17],painlessli:[22,20],my_index:21,permiss:[],hack:[12,17],filterstartswith:[12,1,7],onli:[9,20,16,11,1,17,6,21,22,8,7],explicitli:[],activ:[22,16,10,17],behind:1,userdbmodelview:[12,22,1],role_id:12,dict:[13,17],over:[9,1],xcol:17,variou:[20,8,17],get:[9,16,10,11,17,1,2],secondari:5,search_widget:[1,17],url_for:[9,19,1,17],requir:[],email:[16,10,17,0,1,22,8],where:[9,15,10,4,12,1,21,22,14],summari:[6,15,1],send_email:[],calendar:[4,17],quickimag:19,review:[17,11],enumer:15,label:[15,17,4,11,1,21,13,20],enough:15,appbuild:[],between:5,"import":[9,15,10,11,4,18,17,5,12,13,1,0,21,6,22,2,8,19,7],parent:[1,11],screen:10,recaptcha_private_kei:10,para:17,stime:2,uncondition:1,base_templ:[9,17,1,11],come:[21,17],relative_view:17,similar:10,can_show:[2,1,7],mani:[],app_them:[1,8,21],equalto:7,featur:[3,16,17,0,12,1,2],sess:2,folow:[13,21],rebuild:17,direct_column:[4,1],changed_by_fk:[12,17],xpto:1,"abstract":15,post_upd:1,findal:2,former:12,"case":[15,17,4,19,22,7],secret_kei:18,can_list:[2,15,1,7],cast:17,invok:[12,1,17],bootswatch:[20,21],"__init__":[9,15,1,12,6,22],acess:1,develop:[9,3,16,11,15,18,12,20,21],author:22,genericcolumn:[2,1],same:[9,15,11,1,4,17,5,6,21,22],category_label:[13,21,1,17],html:[9,10,11,17,5,19,1,21,13,7],document:[4,6,11],form_fieldset:1,finish:[12,10],oid:[12,1,17],someon:15,submenu:[21,1,17],filterequalfunct:[12,1,7],markup:19,without:[9,15,16,17,5,1,21],auth_user_registr:[8,10,17],model:[],persongeneralview:12,execut:[13,1,16,5],stat_col_2:1,stat_col_3:1,stat_col_1:1,rest:15,auth_user_registration_rol:[8,10],ldapserv:8,versu:4,baseapp:[12,17],except:[18,2,17],param:[1,11],blob:[],pot:13,authoidview:[1,17],read:[12,22],get_redirect:[22,1,0],mygenericmodel:1,grid:1,whth:[],filterrel:[12,17],earphon:[12,13],integ:[15,19,17,4,5,12,1,22,14],server:[16,10,17,18,19,21,22,8],benefit:5,this_form_get:1,userldapmodelview:[22,1],output:[2,1,17],manag:[16,10,17,1,5,12,6,22],imagemanag:19,confirm:[1,16,7],definit:[15,17,1,4,5,19,6,21,20],inject:[19,1,17],ddl:12,utilview:17,power:[17,0,11],stringfield:[17,6,11],each:[9,15,11,17,5,12,1,22,2,20,19,7],broken:17,spacelab:21,"__name__":[9,1,18,12,6,22,8],simpleview2:11,src:[9,19],get_url:19,backup:12,effici:1,contacttimechartview:[4,22,21],msgstr:13,complianc:17,her:[10,5],area:21,accordion_tag:9,start:[22,16,10,7,17],interfac:[15,19,17,4,5,12,6,0],auth_user_db:1,lot:[3,16],tupl:[4,1,8],regard:2,pull:17,possibl:[16,10,11,17,1,13,22,20,7],yetothermodelview:1,foreignkei:[15,4,22,5],embed:19,sqlamodel:[9,17,4,12,1,21,13,7],uid:[2,8],creat:[9,15,16,11,1,4,18,17,5,14,12,6,0,21,13,22,20,19,7],certain:21,file:[],fill:[10,17],again:[13,10],googl:[3,10,17,4,1,21,20],gettext:7,field:[15,20,10,11,1,4,17,5,12,6,22,8,7],valid:[15,17,11,1,20,7],collis:1,you:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22],poor:4,openid:[],my_column_nam:1,finali:13,sequenc:[22,17],org:16,select2rowidget:[],grupo:13,reduc:17,directori:[9,15,11,17,12,13,22,8],auth_ldap_uid_field:8,descript:[9,11,1,20,8,7],mimic:2,mass:0,cpu:12,repat:20,represent:15,all:[9,15,16,10,11,20,4,18,17,5,12,13,1,0,21,6,22,2,8,7],skeleton:[],form_post:[1,11],countrydirectchartview:[4,1],month:[4,1,17],adition:19,follow:[9,15,16,10,11,4,0,12,1,21,13,22,8,14],alt:19,childmodel:1,update_user_auth_stat:1,doanload:22,contactgroup:[13,15,6,7],form_column:[1,11],tail:11,userremoteusermodelview:1,queri:[15,17,18,1,22,2,7],begin_d:5,registeruseroidview:1,mail_use_tl:10,consum:12,straightforward:16,fals:[9,15,1,4,5,12,6,0,21,22,8,19,14],find_permissions_view_menu:1,mechan:17,fab:[9,16],find_permiss:1,employee_numb:[7,5],list:[],last_nam:[22,1,10],small:[9,12],description_column:1,countrystat:[4,1],zero:[16,17],pass:[9,11,1,12,6,21,22,7],further:20,what:[],sub:17,sum:[4,1],abl:[],delet:[15,22,1,0,17],piechart:[4,1],version:[],last_login:[12,22,17],primary_kei:[15,19,4,5,12,1,2,14],activation_hash:[],"public":[15,20,10,11,1,18,6,22,8],full:15,themselv:10,my_show_templ:7,goodby:11,modifi:12,valu:[15,17,4,1,21,13,20,7],search:[9,3,17,1,8,7],surpress:17,popen:2,prior:[4,2,11],assoc_benefits_employe:5,babel_default_fold:16,narrow:17,auth_role_publ:[8,17],hash_db_password:12,via:[22,20,17],depart:[7,5],set_link_filt:17,modelview:[],filenam:[9,19,1],reorg:17,href:[19,17,21,1,11],add_permissions_menu:1,select:[21,1,7,17],internation:[16,21],regist:[],two:[9,15,16,11,1,4,18,5,19,6,13,22],toggl:17,more:[3,16,11,4,17,5,12,21,13,7],abspath:18,site:[22,1,20,11],post_delet:1,flag:[13,16,8,17],particular:[4,5,0],edit_widget:1,compani:5,form_get:[1,11],none:[15,1,17],endpoint:[15,1,5,17],dev:17,histori:[17,1,5,11],portugues:[13,17],sent:10,male:15,def:[15,11,4,5,19,1,0,6,22,2,7],mail_serv:10,registr:[],share:[9,5],templat:[],personchartview:12,cours:[15,4,5,21,22,2],goal:20,first_nam:[12,22,1,10],divid:17,anoth:13,list_contact:9,corrigir:[],divis:17,simpl:[],css:[],"_thumb":19,resourc:[12,5],show_titl:1,function_id:5,associ:[16,17,1,11,5,20,21,22],list_templ:[9,1],"short":2,django:[15,1,20],caus:17,disktyp:21,genapp:13,permissionview:1,help:[9,20,21],edit_fieldset:[15,1],paramet:[9,10,11,1,4,17,0,6,22,8],aggregate_avg:[4,1],style:[15,17,1,20,21,22,8],bypass:1,alter:[12,22,10],good:16,"return":[15,11,4,17,5,19,1,0,6,22,2,7],timestamp:20,datarequir:[17,11],framework:[9,3,16,11,4,17,5,12,13,1,15,14,21,6,22,2,20,7],loginmanag:[12,1,17],userid:1,unlik:16,authent:[],easili:[9,16,10,0,12,20,21,22],simpleview1:11,unicod:17,procedur:12,realli:[22,2,0],count_us:1,connect:[15,20,8,14],todo:17,event:[],mail_password:10,difer:1,get_sess:1,file_nam:1,found:16,differ:[16,10,17,4,5,19,6,21,22],basefilterrel:17,asc:[1,7],cooki:[18,17,11],reason:15,english:[13,16],script:[9,12,13,17],assign:[22,1,8,17],detailview:1,permissionviewmenu:1,feel:[9,12,11],number:[4,21,11],evolut:4,genericinterfac:2,done:[9,21,16,5,17],blank:8,miss:[15,17],guess:9,guest:[15,3,4],nome:13,least:[2,1,16],metho:15,myuser:22,colnam:[4,1],img_siz:[19,8,17],store:[1,8,21],schema:[12,15,6],adher:20,option:[15,16,10,17,4,18,0,1,21,22],relationship:[15,17,4,5,12,1,22],part:[9,22,1,11],sqlainterfac:[15,19,17,4,5,12,0,7],kind:[4,21,6,5,11],list_thumbnail:17,xpto2:1,remov:[15,11,1,17,0,12,6,22,7],my_extra_arg:7,jqueri:[9,17],str:[2,4,1,19],groupmasterview:21,packag:[15,16,10,17,20,13],"null":[7,17],pre_upd:1,juici:11,imagin:2,built:3,lib:[9,17],self:[15,19,10,11,20,4,17,5,12,1,0,6,22,2,8,7],also:[15,11,1,4,17,6,21,22,8,7],build:[20,8,5,11],textareafield:[],referencefield:6,distribut:16,choos:[4,8,21],most:[15,4,18,5,11],plan:[13,16],diferent:17,clear:1,ext:[],clean:22,scaffold:20,awesom:[15,1,20,17],stat_dat:[4,1],gold:4,babelpkg:[13,17,16,11],babel_init:13,can_add:[1,7],session:[9,16,11,18,17,12,1,21,6,22,2,7],sqla:[15,19,17,4,18,5,12,1,0,22,2,14],font:[15,1,20,17],find:[13,4,1,15,11],access:[16,10,17,11,1,22],pretti:[15,4,1,17],showblockwidget:17,department_queri:7,unus:[1,17],"__file__":18,col_nam:[1,7],him:10,functionview:5,get_url_thumbnail:19,common:[12,1],wrote:17,set:[10,1,20,21,8,7],see:[9,15,16,11,5,6,2],sec:22,arg:1,someth:[9,22,0,11],country_id:4,won:11,field_str:12,experi:[4,7,11],altern:[2,20],externalserv:14,add_us:1,numer:17,lazy_gettext:[10,11,4,1,21,13,22],javascript:[],isol:16,benefit_id:5,solv:[16,7],popul:[4,1],both:6,last:[16,22,6,8,17],foreign:17,barchart:4,redirect_url:11,let:[15,16,10,11,4,5,6,21,13],list_titl:1,securitymanag:[],add_registr:[],simpli:16,auditmixin:[15,1,17],point:[1,10,11],instanti:[12,1],header:[17,11],add_link:[17,21,1,11],linux:[2,16],batteri:20,changed_on:[12,22,17],backend:[12,22,1],user_model:22,tail_j:9,stamp:1,criar:[],poor_perc:4,empti:[9,15,1,17],sinc:[15,22,17,16,11],monthli:4,treatment:15,edit_form_query_cascad:1,static_url_path:1,imag:[],convert:17,func:[4,1],educ:4,remote_us:[20,22,1,8,17],look:[9,15,10,11,1,4,18,5,19,6,21,13,22,8,7],histor:4,formatt:[4,1,17],"while":16,abov:[9,21],error:[17,20,11],fun:6,everyon:22,propag:8,user_show_fieldset:22,readi:[4,16,21],columnchart:[4,1],itself:[2,1,16,17],default_view:[21,1,11],decor:[],employee_id:5,grant:20,belong:[16,10,5],route_bas:[17,1,11],conflict:16,higher:[4,17],get_order_columns_list:17,optim:[19,17],quickchart:4,moment:10,user:[],wherev:2,implement:[15,10,11,4,0,19,1,21,22,2],myaction:0,lower:[22,20,17],entri:[1,7,5,11],person:[15,19,1,12,6,22],college_perc:[4,1],propos:3,explan:15,jsapi:17,head_j:[9,17],pssession:2,delete_al:[2,22,1,0],mysql:[12,20,14],msgid:13,group_by_column:[4,21,17],python3:17,pretty_month_year:4,auth_ldap_firstname_field:8,listblock:[21,17],bin:[12,16],varchar:12,format:[2,4,1],big:[9,20],nginx:22,datasourc:2,can_delet:7,basicconfig:[],oid_ask_for:17,personal_phon:[6,15,1],resolv:17,collect:[1,21],api:[],givennam:8,myinlinet:21,group_id:[],encount:20,often:16,creation:[22,1,7,17],some:[15,19,10,4,5,12,1,13,22,20],back:[17,1,11],virtualenv:16,listfield:6,per:[4,17],create_db:[12,17],retro:12,contacto:13,nose:17,object:[12,4,1,8,15],run:[16,17,18,11,5,12,13,22],method3:11,method1:11,show_cascad:[21,5,17],funcnam:[4,1],exemplo:[],wget:12,psview:2,mssql:[12,20],permission_view_menu:1,constraint:[7,17],searchwidget:1,page:[9,3,10,11,17,5,1,21,20],modal:17,goodi:20,block:[9,21,17,7,11],"__repr__":[15,4,6,5],listwidget:[1,21],update_us:1,ensur:10,generalxpto_permiss:1,inclus:17,your_js_fil:9,question:[15,17],submit:[1,10,11],custom:[],includ:[],suit:17,blueprint:[1,11],himself:8,viewmenu:1,link:[10,17,11,19,1,21],translat:[],russian:[13,17],line:[15,2,16,17],info:[15,17,1,11,6,22,7],concaten:[19,4,1],utf:13,quickfil:[19,21],simplebychartview:1,readlin:2,auth_user_remote_us:1,booleanfield:1,mymodel:[12,1,7],impl:1,get_all_us:1,quickhowto2:[2,14],img_upload_fold:[19,8,17],repres:[2,11],guarante:22,edit_form_query_rel_field:[12,1,17],menu_access:1,pre_delet:1,titl:[9,10,17,4,11,1],sequenti:1,queryselectfield:[7,17],master_div_width:1,nice:[1,5],draw:[4,1],mongodb:[],algorithm:11,microsoft:22,masterdetail:17,hello:11,code:[9,15,16,17,4,18,5,12,6,0,21,13,22],partial:[9,15,20,17],register_mail:10,scratch:[9,22],add_form_query_cascad:1,compact:17,privat:[20,10],send:[17,10,0,11],granular:[22,1,11],aris:15,created_bi:[22,1,7],mous:17,genericmodel:[2,1,17],quickhowto:[15,4,14],gender:[15,6,7],button:[4,17],model_cl:1,fewer:15,"try":[15,2,16,10,17],refer:[],pleas:[12,15],create_blueprint:1,cfg:13,video:16,download:[15,22,16],before_request:[],mongodb_set:8,click:[],compat:[],index:[],view_menu:1,edit_cascad:[21,17],cell:17,get_file_original_nam:1,garbag:22,whatev:[9,22,2,21],inspect:[22,1],panel_begin:9,len:4,bodi:9,logout:17,ubuntu:16,vertic:[20,17],implicit:17,authldapview:1,convers:17,thumbnail_s:[19,1],chang:[],fiscal_numb:5,chanc:16,add_permission_rol:1,base_permiss:[2,1,7],appli:[9,4,1,22,2,7],app:[9,15,16,11,1,18,17,5,12,6,21,13,22,8,14],apt:16,"boolean":17,regexp:2,from:[],doubl:17,upgrad:12,next:[],few:[15,21],doubt:2,panel:[9,17],flask_babelpkg:22,base_ord:[1,7,17],account:[8,10],alia:1,related_view:[9,15,17,1,4,5,12,6,0,21,13],fetch:[10,17],employe:[22,7,5],sqlite:[12,18,20,14,17],process:[4,1,10,11],sudo:16,tag:[6,5,17],extra_class:7,tab:[15,21,5,17],serial:21,mymodelview:[22,1,21],instead:[9,17,4,11,12,22],overridden:[9,17,11,1,21,7],filterclass:[1,7],alloc:5,auth_user_oid:1,seriou:16,restruct:17,correspond:[12,13,22],issu:[12,3,2,15,17],prettifi:17,allow:[15,10,11,17,1,2,7],mongoengineinterfac:6,move:[12,17],baselayout:[9,1],crash:17,greater:17,mongoimag:19,python:[],auto:[3,17],extra_arg:[1,7,17],handi:10,auth:[22,1,10,17],easy_instal:16,myuserdbmodelview:22,"__bind_key__":14,chart_3d:[4,1],showwidget:1,conf_password:22,mastert:1,anyth:[18,1],edit:[],dynamicform:11,from_object:[6,12,22,1,8],subset:2,view_nam:1,created_on:[12,22,17],meta:9,"static":[9,1,7,17],our:[15,4,5,6,21,2],special:[15,17,5,0,21,22,8,7],out:[15,2,8,10],list_widget:[19,1,21],categori:[15,11,1,4,17,5,6,21,13,22],rel:[9,17,11,1,21,8],metaclass:17,statist:[4,1],insid:11,contruct:1,control:[15,1],dictionari:[4,1,8,7],releas:15,pretifi:1,log:[21,6,7,17],static_fold:1,head_meta:9,navbar:[9,21,17],unwant:22,could:[15,21,17],keep:[12,20,11],datetimefield:[6,17],length:17,outsid:17,fieldwidget:[7,17],mai:[15,2,11],kerbero:22,order_column:[21,1,17],select2widget:7,mkdir:[],system:[2,16],messag:[9,10,17,11,13,7],sec_model:22,attach:11,template_fold:1,"final":[9,4,5,21,22,2],del_permiss:1,mysecuritymanag:[22,10],textfield:[7,17],exactli:[15,22,6],lista:13,haven:12,structur:[9,15,1,7],genericsess:[2,1],bind:[8,14,17],pgsql:12,py3:16,addformwtf:7,myproject:[],have:[9,15,16,11,4,17,5,12,1,21,22,2,8,19,7],tabl:[],need:[9,16,11,20,18,17,5,1,22,8],min:17,babel:[],rout:[1,11],expos:[],mix:[1,21],builtin:[20,17],which:14,singl:[2,22,1,0],unless:12,who:22,oracl:[12,20,17],why:12,get_app:1,can_edit:[1,7],myuserdbview:22,url:[10,17,11,19,1,21,8],serverdisktypemodelview:21,setlevel:6,hardcod:17,wtform:[17,1,16,11],face:16,deni:17,list_column:[15,17,5,19,1,21,6,22,2,7],bs3textfieldrowidget:7,add_permiss:1,find_view_menu:1,thisismyscretkei:18,text:[9,17,11,5,1,21,13],eas:9,redirect:[22,17,0,11],locat:1,is_item_publ:1,auth_typ:[8,10,17],baseiterfac:17,should:[15,0,12,1,21,6,2],manufactur:1,restructur:17,suppos:4,combo:7,local:14,hope:[12,15],contribut:[],notat:[15,17],familiar:15,add_templ:[9,1],autom:21,ab_us:12,db2:20,myindexview:21,filtercontain:12,enabl:[15,10,17,11,1,8],baseinterfac:17,add_permissions_view:1,integr:[15,20,5,11],partit:20,contain:[15,1,10,21],get_user_by_id:1,project_nam:[21,11],frame:4,orphan:22,"_permission_nam":1,show_form:[9,17],servermodelview:21,bs3textfieldwidget:7,gmail:[22,10],correctli:[10,17],state:12,thumbnail:[19,20,17],kei:[],entir:[9,1],flask_mongoengin:[6,1],addit:[19,4,22,7],stat2:4,stat1:4,rtype:[],admin:[16,17,18,20,22,8],equal:17,etc:[9,16,11,17,5,12,1,0,22,20],instanc:[1,14,17],changed_bi:22,app_nam:[1,8],jumbotron:21,strftime:5,comment:8,venv:16,month_nam:4,perm_view:1,sqlainterdac:22,respect:[2,4,1],view_menu_nam:1,groupgeneralview:12,quit:16,addition:[15,4,16,11],compos:4,compon:9,json:[],immedi:16,wtf:[17,1,10,11],bit:6,first_app:16,togeth:4,allwai:[7,17],present:[15,10,11,1,4,17,6,21,20],multi:20,auth_view:1,cursor:17,intranet:22,endblock:[9,21,11],layer:15,helper:17,almost:[9,21],demo:[15,3,4],customis:1,revis:[],welcom:[15,3,4],handl:[1,20,7,0,17],infer:17,edit_contact:9,http:[15,19,16,11,4,12,1,21,2],benefitview:5,mybas:9,column_nam:1,student:4,expand:[6,15,22,1],audit:[],sqlalchemy_database_uri:[18,8,14],update_redirect:[22,1,0,11],builder:16,remenb:17,well:[18,11],exampl:[],command:[],filesystem:19,backref:[22,5],latest:17,photo_img:19,rocket:[22,0],less:[12,17],action_post:1,fabmanag:[12,16,17],web:[15,16,17,20,22,8],rapid:3,registerus:10,nullabl:[15,19,17,4,5,12,1,14],add:[],cleanup:[],match:[22,8,7],crud:[15,3,17,1,6,20],know:[12,2],password:[16,17,12,1,22,8,14],my_project:9,desc:[1,7],insert:[9,16,10,17,11,20],resid:14,like:[9,15,16,11,4,17,5,12,1,0,21,22,2,8,19,7],success:[22,1,10],oid_ask_for_opt:17,necessari:[22,10,0,17],resiz:[19,8,17],mymodelview2:21,mymodelview3:21,mymodelview1:21,fabtest10:10,drop:12,gridf:19,proper:17,home:17,auth_ldap_serv:8,librari:[],tmp:12,avoid:1,useroauthmodelview:1,leav:[1,8],encourag:12,add_permission_view_menu:1,host:18,babel_extract:13,although:[12,15],security_manager_class:[6,22,1,17],simpler:7,edit_form:[9,1,7,17],about:[],actual:[21,16,17],column:[],constructor:[1,11],disabl:0,chart_templ:1,own:[9,15,10,11,4,17,0,19,1,21,13,22,2,20,7],auth_user_ldap:1,automat:[],contactchartview:[4,22],index_templ:21,merg:17,myform:11,pictur:17,much:[2,3,1,11],"var":[13,22,20,8,17],"function":[],auth_ldap_email_field:8,brand:17,login_count:[12,22,17],oauth:1,overflow:17,inlin:[21,17],mail_default_send:10,count:[15,4,22,1,17],made:[15,6,21],displai:[9,15,17,4,19,1,21,13],record:[9,15,10,11,17,5,1,0,2,20],limit:[1,16,17],problem:[20,16,17],flask_appbuild:[11,1,12,6,21,22,7],pil:16,"int":[2,1,17],dure:21,pid:2,pie:4,fail_login_count:[12,22,17],contact_group:[15,4,6],probabl:16,detail:[15,3,11,1,4,18,17,5,6,21,22,20,7],virtual:[16,17],detailt:1,other:[16,17,4,11,1,21],lookup:20,futur:[1,17],rememb:[9,15,17,1,4,5,6,21,7],varieti:20,mywidgetlist:21,stat:[4,1],repeat:16,areachart:[4,21],debian:16,sqlaintefac:12,rule:[9,7],getlogg:6},objtypes:{"0":"py:module","1":"py:attribute","2":"py:method","3":"py:function","4":"py:class"},objnames:{"0":["py","module","Python module"],"1":["py","attribute","Python attribute"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","class","Python class"]},filenames:["actions","api","generic_datasource","index","quickcharts","relations","quickhowto_mongo","advanced","config","templates","user_registration","views","versionmigration","i18n","multipledbs","quickhowto","installation","versions","quickminimal","quickfiles","intro","customizing","security"],titles:["Actions","API Reference","Generic Data Sources","Flask-AppBuilder","Chart Views","Model Relations","Model Views on MongoDB","Advanced Configuration","Base Configuration","Templates","User Registration","Base Views","Version Migration","i18n Translations","Multiple Databases","Model Views (Quick How to)","Installation","Versions","Quick Minimal Application","Model Views with Files and Images","Introduction","Customizing","Security"],objects:{"flask.ext.appbuilder.views":{CompactCRUDMixin:[1,4,1,""],ModelView:[1,4,1,""],IndexView:[1,4,1,""],PublicFormView:[1,4,1,""],MasterDetailView:[1,4,1,""],SimpleFormView:[1,4,1,""]},"flask.ext.appbuilder.charts.views":{TimeChartView:[1,4,1,""],GroupByChartView:[1,4,1,""],DirectByChartView:[1,4,1,""],BaseChartView:[1,4,1,""],DirectChartView:[1,4,1,""],ChartView:[1,4,1,""]},"flask.ext.appbuilder.charts.views.GroupByChartView":{definitions:[1,1,1,""]},"flask.ext.appbuilder.charts.views.BaseChartView":{group_bys:[1,1,1,""],chart_widget:[1,1,1,""],width:[1,1,1,""],chart_type:[1,1,1,""],search_widget:[1,1,1,""],chart_template:[1,1,1,""],chart_title:[1,1,1,""],group_by_label:[1,1,1,""],chart_3d:[1,1,1,""]},"flask.ext.appbuilder":{baseviews:[11,0,0,"-"],base:[1,0,0,"-"],filemanager:[1,0,0,"-"],actions:[1,0,0,"-"],views:[1,0,0,"-"]},"flask.ext.appbuilder.filemanager":{get_file_original_name:[1,3,1,""]},"flask.ext.appbuilder.models.generic.GenericSession":{query:[1,2,1,""],clear:[1,2,1,""],get:[1,2,1,""],all:[1,2,1,""],delete_all:[1,2,1,""]},"flask.ext":{appbuilder:[3,0,0,"-"]},"flask.ext.appbuilder.baseviews.BaseCRUDView":{edit_form_query_rel_fields:[1,1,1,""],pre_update:[1,2,1,""],related_views:[1,1,1,""],show_columns:[15,1,1,""],edit_form_query_cascade:[1,1,1,""],show_template:[1,1,1,""],edit_template:[1,1,1,""],list_template:[1,1,1,""],add_form_query_cascade:[1,1,1,""],validators_columns:[1,1,1,""],edit_form_extra_fields:[1,1,1,""],post_add:[1,2,1,""],list_widget:[1,1,1,""],page_size:[1,1,1,""],add_form_query_rel_fields:[1,1,1,""],edit_fieldsets:[1,1,1,""],list_title:[1,1,1,""],post_delete:[1,2,1,""],post_update:[1,2,1,""],pre_add:[1,2,1,""],add_template:[1,1,1,""],list_columns:[15,1,1,""],show_widget:[1,1,1,""],show_title:[1,1,1,""],order_columns:[1,1,1,""],edit_widget:[1,1,1,""],edit_columns:[15,1,1,""],add_title:[1,1,1,""],edit_form:[1,1,1,""],add_widget:[1,1,1,""],show_fieldsets:[1,1,1,""],pre_delete:[1,2,1,""],add_fieldsets:[1,1,1,""],description_columns:[1,1,1,""],add_columns:[15,1,1,""],edit_title:[1,1,1,""],add_form_extra_fields:[1,1,1,""],add_form:[1,1,1,""]},"flask.ext.appbuilder.models.mixins.FileColumn":{impl:[1,1,1,""]},"flask.ext.appbuilder.security":{manager:[1,0,0,"-"],decorators:[11,0,0,"-"]},"flask.ext.appbuilder.models.generic":{GenericColumn:[1,4,1,""],GenericModel:[1,4,1,""],GenericSession:[1,4,1,""]},"flask.ext.appbuilder.baseviews":{BaseView:[1,4,1,""],BaseCRUDView:[15,4,1,""],expose:[11,3,1,""],BaseModelView:[1,4,1,""]},"flask.ext.appbuilder.baseviews.BaseModelView":{base_filters:[1,1,1,""],search_form:[1,1,1,""],search_columns:[1,1,1,""],search_widget:[1,1,1,""],label_columns:[1,1,1,""],base_order:[1,1,1,""],datamodel:[1,1,1,""]},"flask.ext.appbuilder.views.MasterDetailView":{master_div_width:[1,1,1,""]},"flask.ext.appbuilder.base":{AppBuilder:[1,4,1,""]},"flask.ext.appbuilder.models.mixins.ImageColumn":{impl:[1,1,1,""]},"flask.ext.appbuilder.charts":{views:[1,0,0,"-"]},"flask.ext.appbuilder.models":{generic:[1,0,0,"-"],group:[1,0,0,"-"],mixins:[1,0,0,"-"]},"flask.ext.appbuilder.models.mixins":{AuditMixin:[1,4,1,""],ImageColumn:[1,4,1,""],FileColumn:[1,4,1,""],BaseMixin:[1,4,1,""]},"flask.ext.appbuilder.models.group":{aggregate_sum:[1,3,1,""],aggregate_avg:[1,3,1,""],aggregate_count:[1,3,1,""]},"flask.ext.appbuilder.security.manager.BaseSecurityManager":{registeruserdbview:[1,1,1,""],auth_user_ldap:[1,2,1,""],has_access:[1,2,1,""],update_user:[1,2,1,""],find_view_menu:[1,2,1,""],add_permission:[1,2,1,""],add_permissions_view:[1,2,1,""],find_permissions_view_menu:[1,2,1,""],del_permission_role:[1,2,1,""],add_permission_role:[1,2,1,""],get_all_users:[1,2,1,""],add_permissions_menu:[1,2,1,""],registeruser_view:[1,1,1,""],update_user_auth_stat:[1,2,1,""],del_permission:[1,2,1,""],lm:[1,1,1,""],useroauthmodelview:[1,1,1,""],userdbmodelview:[1,1,1,""],auth_user_remote_user:[1,2,1,""],oauth_handler:[1,1,1,""],auth_user_db:[1,2,1,""],resetmypasswordview:[1,1,1,""],find_permission_view_menu:[1,2,1,""],resetpasswordview:[1,1,1,""],authremoteuserview:[1,1,1,""],authoidview:[1,1,1,""],userremoteusermodelview:[1,1,1,""],add_permission_view_menu:[1,2,1,""],oid:[1,1,1,""],find_permission:[1,2,1,""],authoauthview:[1,1,1,""],authdbview:[1,1,1,""],oauth:[1,1,1,""],count_users:[1,2,1,""],security_cleanup:[1,2,1,""],authldapview:[1,1,1,""],auth_user_oid:[1,2,1,""],useroidmodelview:[1,1,1,""],is_item_public:[1,2,1,""],auth_view:[1,1,1,""],find_user:[1,2,1,""],reset_password:[1,2,1,""],del_view_menu:[1,2,1,""],registeruseroidview:[1,1,1,""],user_view:[1,1,1,""],userldapmodelview:[1,1,1,""],get_user_by_id:[1,2,1,""],add_view_menu:[1,2,1,""],add_user:[1,2,1,""]},"flask.ext.appbuilder.security.manager":{BaseSecurityManager:[1,4,1,""]},"flask.ext.appbuilder.security.decorators":{has_access:[11,3,1,""],permission_name:[1,3,1,""]},"flask.ext.appbuilder.views.PublicFormView":{default_view:[1,1,1,""],form:[1,1,1,""],form_post:[1,2,1,""],form_fieldsets:[1,1,1,""],form_title:[1,1,1,""],form_columns:[1,1,1,""],edit_widget:[1,1,1,""],form_get:[1,2,1,""]},"flask.ext.appbuilder.baseviews.BaseView":{default_view:[1,1,1,""],base_permissions:[1,1,1,""],route_base:[1,1,1,""],create_blueprint:[1,2,1,""],update_redirect:[1,2,1,""],static_folder:[1,1,1,""],get_redirect:[1,2,1,""],extra_args:[1,1,1,""],template_folder:[1,1,1,""],render_template:[1,2,1,""]},"flask.ext.appbuilder.views.ModelView":{action:[1,2,1,""],action_post:[1,2,1,""]},"flask.ext.appbuilder.base.AppBuilder":{get_session:[1,1,1,""],add_view_no_menu:[1,2,1,""],app_name:[1,1,1,""],app_icon:[1,1,1,""],app_theme:[1,1,1,""],version:[1,1,1,""],add_link:[1,2,1,""],add_view:[1,2,1,""],add_separator:[1,2,1,""],security_cleanup:[1,2,1,""],"__init__":[1,2,1,""],get_app:[1,1,1,""]},"flask.ext.appbuilder.actions":{action:[1,3,1,""]},"flask.ext.appbuilder.views.SimpleFormView":{form:[1,1,1,""],form_post:[1,2,1,""],form_columns:[1,1,1,""],form_title:[1,1,1,""],edit_widget:[1,1,1,""],form_get:[1,2,1,""]}},titleterms:{skeleton:15,show:9,permiss:22,compactcrudmixin:1,group:[4,1],expos:15,flask:[3,1],menu:21,fix:[3,17],configur:[8,10,7],add:9,appbuild:[3,1],masterdetailview:1,ldap:10,basemodelview:1,applic:[15,18],timechartview:1,contribut:3,python:16,initi:[6,16],securitymanag:[],requir:16,introduct:[13,20],edit:9,config:[13,8],list:9,authent:[22,10],publicformview:1,cascad:9,quick:[13,15,18],view:[15,11,1,4,0,19,6,21],basecrudview:1,direct:4,indexview:1,librari:9,compat:16,index:21,what:[],extend:22,databas:[14,10],content:3,version:[12,17],method:15,refer:1,widget:21,kei:8,advanc:7,migrat:12,gener:[2,1],javascript:9,baseregisterus:1,behaviour:21,step:19,base:[15,22,8,7,11],chartview:1,column:1,filter:7,aggr:1,action:[1,0],improv:17,chang:21,filemanag:1,extra:[1,7,5],modelview:1,basesecuritymanag:1,automat:22,deprec:[4,1],api:1,instal:16,custom:[22,21],your:[15,4,0,19,6,22],from:12,support:22,regist:[15,4,6],theme:21,construct:21,next:19,json:15,includ:20,type:22,"function":[9,1],form:7,imag:19,relat:5,translat:13,i18n:13,bug:[3,17],baseview:[1,11],baseregisteruserview:[],"default":[7,21],groupbychartview:1,setup:18,properti:5,exampl:2,defin:[15,4,6,19,0],were:[],simpleformview:[1,11],registr:10,argument:7,templat:[9,7,21],sourc:[2,1],file:19,tabl:3,pip:16,decor:1,multipl:14,secur:[22,1,7],babel:13,directbychartview:1,how:[13,15,18],cleanup:22,role:22,indic:3,simpl:15,css:9,openid:10,mongodb:6,chart:[4,1],beta:1,user:[22,10],mixin:1,mani:5,directchartview:1,data:[2,4,1],audit:22,footer:21,minim:18,ext:1,contact:15,command:2,basechartview:1,model:[15,1,5,19,6,22],order:7}}) \ No newline at end of file diff --git a/docs/_build/html/versionmigration.html b/docs/_build/html/versionmigration.html index 4b4393a96..e7b620144 100644 --- a/docs/_build/html/versionmigration.html +++ b/docs/_build/html/versionmigration.html @@ -64,32 +64,25 @@

    Version Migration

    Migrating from 1.2.X to 1.3.X

    There are some breaking features:

    -

    1 - Security models have changed, user’s can have multiple roles, not just one. So you have to migrate you db.

    +

    1 - Security models have changed, user’s can have multiple roles, not just one. So you have to upgrade your db.

    • The security models schema have changed.

      -

      If you are using sqlite, mysql or pgsql, use the following procedure:

      +

      If you are using sqlite, mysql, pgsql, mssql or oracle, use the following procedure:

      1 - Backup your DB.

      2 - If you haven’t already, upgrade to flask-appbuilder 1.3.0.

      3 - Issue the following commands, on your project folder where config.py exists:

      -
      cd /your-main-project-folder/
      -wget https://raw.github.com/dpgaspar/Flask-AppBuilder/master/bin/migrate_db_1.3.py
      -python migrate_db_1.3.py
      +
      $ cd /your-main-project-folder/
      +$ fabmanager upgrade-db
       

      4 - Test and Run (if you have a run.py for development)

      -
      python run.py
      +
      $ fabmanager run
       
      -

      If not (DB is not sqlite, mysql or pgsql), you will have to alter the schema your self. use the following procedure:

      -
      -

      1 - Backup your DB.

      -

      2 - If you haven’t already, upgrade to flask-appbuilder 0.7.0.

      -

      3 - issue the corresponding DDL commands to:

      -

      ALTER TABLE ab_user MODIFY COLUMN password VARCHAR(256)

      -
      +

      For sqlite you’ll have to drop role_id columns and FK yourself. follow the script instructions to finish the upgrade.

    diff --git a/docs/_build/html/versions.html b/docs/_build/html/versions.html index 5ba8882d8..014ac469d 100644 --- a/docs/_build/html/versions.html +++ b/docs/_build/html/versions.html @@ -78,10 +78,10 @@

    Improvements and Bug fixes on 1.3.0 diff --git a/docs/quickfiles.rst b/docs/quickfiles.rst index 7c5983520..d37f8f8de 100644 --- a/docs/quickfiles.rst +++ b/docs/quickfiles.rst @@ -2,7 +2,7 @@ Model Views with Files and Images ================================= You can implement views with images or files embedded on the model's definition. You can do it using SQLAlchemy or -MongoDB (MongoEngine). When using SQLAlchemy files and images are saved on the filesystem, on MongoDB on the db. +MongoDB (MongoEngine). When using SQLAlchemy, files and images are saved on the filesystem, on MongoDB on the db (GridFS). Define your model (models.py) ----------------------------- @@ -15,22 +15,44 @@ Define your model (models.py) class Person(Model): id = Column(Integer, primary_key=True) name = Column(String(150), unique = True, nullable=False) - photo = Column(ImageColumn, nullable=False ) + photo = Column(ImageColumn(size=(300, 300, True), thumbnail_size=(30, 30, True))) def photo_img(self): im = ImageManager() if self.photo: - return Markup('Photo') + return Markup('Photo') else: - return Markup('Photo') - -Create an additional method in this case *photo_img*, to inject your own custom HTML, to show your saved images. In this example the customized method is showing the images, and linking them with the show view. + return Markup('Photo') + + def photo_img_thumbnail(self): + im = ImageManager() + if self.photo: + return Markup('Photo') + else: + return Markup('Photo') -Later reference this method like it's a column on your view. + +Create two additional methods in this case *photo_img* and *photo_img_thumbnail*, to inject your own custom HTML, +to show your saved images. In this example the customized method is showing the images, and linking them with the show view. +Notice how the methods are calling *get_url* and *get_url_thumbnail* from ImageManager, these are returning the +url for the images, each image is saved on the filesystem using the global config **IMG_UPLOAD_FOLDER**. +Each image will have two files with different sizes, images are saved as _sep_, and _sep__thumb .. note:: The "ImageColumn" type, is an extended type from Flask-AppBuilder. +Later reference this method like it's a column on your view. + +To implement image or file support using GridFS from MongoDB is even easier, take a look at the example: + +https://github.com/dpgaspar/Flask-AppBuilder/tree/master/examples/mongoimages + Define your Views (views.py) ---------------------------- @@ -44,15 +66,15 @@ Define your Views (views.py) list_widget = ListThumbnail - label_columns = {'name':'Name','photo':'Photo','photo_img':'Photo'} - list_columns = ['photo_img', 'name'] + label_columns = {'name':'Name','photo':'Photo','photo_img':'Photo', 'photo_img_thumbnail':'Photo'} + list_columns = ['photo_img_thumbnail', 'name'] show_columns = ['photo_img','name'] -Notice that we are overriding the *list_widget*, the widget that is normally used by ModelView. +We are overriding the *list_widget*, the widget that is normally used by ModelView. This will display a thumbnail list, excellent for displaying images. -We're not using the *image* column but the method *photo_img* we have created. -This method will display the image and link it to the show view. +We're not using the *image* column but the methods *photo_img* and *photo_img_thumbnail* we have created. +These methods will display the images and link them to show view. And that's it! images will be saved on the server. Their file names will result in the concatenation of UUID with their original name. They will be resized for optimization. diff --git a/docs/versions.rst b/docs/versions.rst index 39457e300..3797cbafc 100644 --- a/docs/versions.rst +++ b/docs/versions.rst @@ -23,6 +23,7 @@ Improvements and Bug fixes on 1.3.0 - New, AppBuilder.add_link supports endpoint names on href parameter, internally will try to use url_for(href). - Fix, Zero division catch on aggregate average function. - New, added form validators for field min and max length. +- New, Image size can be configured per column, ImageColumn support size and thumbnail size parameters. - (TODO) - fabmanager create-app para SQLA e MongoDB com diferentes esqueletos. - (TODO) - fabmanager support for factory apps. diff --git a/examples/mongoengine/config.py b/examples/mongoengine/config.py index dabd01cf1..13e32c67b 100644 --- a/examples/mongoengine/config.py +++ b/examples/mongoengine/config.py @@ -12,11 +12,6 @@ {'name': 'Flickr', 'url': 'http://www.flickr.com/'}, {'name': 'MyOpenID', 'url': 'https://www.myopenid.com'}] -#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db') -#SQLALCHEMY_DATABASE_URI = 'mysql://root:password@localhost/quickhowto' -#SQLALCHEMY_DATABASE_URI = 'postgresql://scott:tiger@localhost:5432/myapp' -#SQLALCHEMY_ECHO = True - MONGODB_SETTINGS = {'DB': 'testing'} BABEL_DEFAULT_LOCALE = 'en' diff --git a/examples/mongoimages/app/models.py b/examples/mongoimages/app/models.py index 8829b493b..6cc5d3ea6 100644 --- a/examples/mongoimages/app/models.py +++ b/examples/mongoimages/app/models.py @@ -70,15 +70,16 @@ def file_show(self): def image_show(self): if self.image: return Markup('Photo') else: return Markup('') def image_thumb_show(self): + print self.image, self.id if self.image: return Markup('Photo') else: return Markup('') diff --git a/examples/mongoimages/app/views.py b/examples/mongoimages/app/views.py index cb67ee8c3..6c9e12125 100644 --- a/examples/mongoimages/app/views.py +++ b/examples/mongoimages/app/views.py @@ -9,9 +9,19 @@ from app import appbuilder -from .models import ContactGroup, Contact, Tags +from .models import ContactGroup, Contact, Tags, Gender + +def fill_gender(): + try: + g1 = Gender(name='Male') + g1.save() + g2 = Gender(name='Female') + g2.save() + except: + pass + class ContactModelView(ModelView): datamodel = MongoEngineInterface(Contact) label_columns = {'image_thumb_show': 'Photo', 'image_show': 'Photo'} @@ -108,4 +118,5 @@ class ContactTimeChartView(GroupByChartView): appbuilder.add_view(ContactTimeChartView, "Contacts Birth Chart", icon="fa-dashboard", category="Contacts") appbuilder.security_cleanup() +fill_gender() diff --git a/examples/quickimages/app/models.py b/examples/quickimages/app/models.py index 250b0cba6..c713a0dd5 100644 --- a/examples/quickimages/app/models.py +++ b/examples/quickimages/app/models.py @@ -26,7 +26,7 @@ class Person(Model): name = Column(String(150), unique = True, nullable=False) address = Column(String(564)) birthday = Column(Date) - photo = Column(ImageColumn(thumbnail_size=(10,10,True), size=(300, 300, True))) + photo = Column(ImageColumn(thumbnail_size=(30, 30, True), size=(300, 300, True))) personal_phone = Column(String(20)) personal_celphone = Column(String(20)) personal_email = Column(String(64)) @@ -41,15 +41,20 @@ class Person(Model): def photo_img(self): im = ImageManager() if self.photo: - return Markup('Photo') + return Markup('Photo') else: - return Markup('Photo') + return Markup('Photo') - - def photo_img(self): + def photo_img_thumbnail(self): im = ImageManager() if self.photo: - return Markup('Photo') + return Markup('Photo') else: - return Markup('Photo') + return Markup('Photo') diff --git a/examples/quickimages/app/views.py b/examples/quickimages/app/views.py index a8be8fe45..e826f46b6 100644 --- a/examples/quickimages/app/views.py +++ b/examples/quickimages/app/views.py @@ -16,15 +16,10 @@ class PersonModelView(ModelView): add_title = 'Add Contact' edit_title = 'Edit Contact' - list_widget = ListThumbnail - - label_columns = {'name': 'Name', 'photo': 'Photo', 'photo_img': 'Photo', 'address': 'Address', - 'birthday': 'Birthday', 'personal_phone': 'Personal Phone', - 'personal_celphone': 'Personal Celphone', 'personal_email': 'Personal Email', - 'business_function': 'Business Function', - 'business_phone': 'Business Phone', 'business_celphone': 'Business Celphone', - 'business_email': 'Business Email', 'notes': 'Notes', 'person_group': 'Group', 'person_group_id': 'Group'} - list_columns = ['photo_img', 'name', 'personal_celphone', 'business_celphone', 'birthday', 'person_group'] + #list_widget = ListThumbnail + + label_columns = {'person_group_id': 'Group', 'photo_img': 'Photo', 'photo_img_thumbnail': 'Photo'} + list_columns = ['photo_img_thumbnail', 'name', 'personal_celphone', 'business_celphone', 'birthday', 'person_group'] show_fieldsets = [ ('Summary', {'fields': ['photo_img', 'name', 'address', 'person_group']}), diff --git a/flask_appbuilder/console.py b/flask_appbuilder/console.py index ed4eff7cf..c15a006d3 100644 --- a/flask_appbuilder/console.py +++ b/flask_appbuilder/console.py @@ -309,15 +309,22 @@ def babel_compile(target): @cli_app.command("create-app") @click.option('--name', prompt="Your new app name", help="Your application name, directory will have this name") -def create_app(name): +@click.option('-engine', prompt="Your engine type, SQLAlchemy or MongoEngine", type=click.Choice(['SQLAlchemy', 'MongoEngine']), + default='SQLAlchemy', help='Write your engine type') +def create_app(name, engine): """ Create a Skeleton application """ try: - url = urlopen("https://github.com/dpgaspar/Flask-AppBuilder-Skeleton/archive/master.zip") + if engine.lower() =='sqlalchemy': + url = urlopen("https://github.com/dpgaspar/Flask-AppBuilder-Skeleton/archive/master.zip") + dirname = "Flask-AppBuilder-Skeleton-master" + elif engine.lower() =='mongoengine': + url = urlopen("https://github.com/dpgaspar/Flask-AppBuilder-Skeleton-me/archive/master.zip") + dirname = "Flask-AppBuilder-Skeleton-me-master" zipfile = ZipFile(StringIO(url.read())) zipfile.extractall() - os.rename("Flask-AppBuilder-Skeleton-master", name) + os.rename(dirname, name) click.echo(click.style('Downloaded the skeleton app, good coding!', fg='green')) except: click.echo(click.style('Something went wrong', fg='red')) diff --git a/flask_appbuilder/filemanager.py b/flask_appbuilder/filemanager.py index cbb46364a..c603e1031 100644 --- a/flask_appbuilder/filemanager.py +++ b/flask_appbuilder/filemanager.py @@ -130,15 +130,18 @@ def get_url(self, filename): return filename.filename return self.relative_path + filename + def get_url_thumbnail(self, filename): + if isinstance(filename, FileStorage): + return filename.filename + return self.relative_path + thumbgen_filename(filename) + # Deletion def delete_file(self, filename): super(ImageManager, self).delete_file(filename) - self.delete_thumbnail(filename) def delete_thumbnail(self, filename): path = self.get_path(self.thumbnail_fn(filename)) - if op.exists(path): os.remove(path)

  • vTl*Ll8i?RguMwI;ozJCyYfCbJ-XyBbxLr4pk< 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 delta 166 zcmZpA$@KRH(}t|glk+!AM*n1CVCV?tE=nwqPt8kA%1KQr`UMp7W(?&`Da|d2FHS8f z$;?YHF8U1=^(##Z6)mpJP0G)SPs`6Q$;&TEjV~@qEGjAb1JcA0%AA=}T=W;nt}XgE z`SE5a;s0PZ11keVhFXSEhDL1><7A61S_(`+k=P<;AQ{S5l$r+8#scKj7O?`!(j+|q DA!IiK diff --git a/docs/_build/doctrees/quickfiles.doctree b/docs/_build/doctrees/quickfiles.doctree index 79a77d1e8f38a74eee037b7f3a41fe7bb189d1a1..f8b4cbc30b3502a330ad698734af7daf96e567a6 100644 GIT binary patch literal 16481 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 literal 12246 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 J;1fm0{{XB9^c4UA diff --git a/docs/_build/doctrees/security.doctree b/docs/_build/doctrees/security.doctree index c075266e4ff1987a042770381890cc21fe873944..b8964222c4e8304164d4d5d5f9567ae88d547d82 100644 GIT binary patch delta 147 zcmbPnhiUE|rVaPjuokhhGB8ZOw?;O* delta 157 zcmbPxhiS$grVaPj=!S}=W#**DXXX{B7L{b?=f$VyB_`#hrWCQVGB9+6au+3*!-d!; z3#=7oWS^|IR!*1$DDBM<%AA=}T*L`v*A{V24quxo#SLcj0Lcu64BZT++9F;cTO&gy ocCz6TvB@9S@+$BF1!9Z%fn+FKQED2<1OXtYwnz|2mL}-|0H&8Lq5uE@ diff --git a/docs/_build/doctrees/versionmigration.doctree b/docs/_build/doctrees/versionmigration.doctree index 0bf943313adf360f2a0e5466f1fe6bec861d4b9f..86aff49fa96eb704d39b488c3d5ddb57248d0424 100644 GIT binary patch delta 5625 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 XWFGB>s}RjPf@Zxrv;fy&P07Cjzo*>w delta 5222 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 diff --git a/docs/_build/html/_images/login_db.png b/docs/_build/html/_images/login_db.png index 06b7427353da7da0f0e8cae8b54c0ebd971eabec..800af5806cec11ea8a261ff46c07597590e924c5 100644 GIT binary patch literal 20244 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 GGywq74!KzX literal 16169 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 WTc18Gk1!E-PWHayy-cYmul^S~+6q7b diff --git a/docs/_build/html/_sources/quickfiles.txt b/docs/_build/html/_sources/quickfiles.txt index 83cb2354b..d37f8f8de 100644 --- a/docs/_build/html/_sources/quickfiles.txt +++ b/docs/_build/html/_sources/quickfiles.txt @@ -1,7 +1,8 @@ Model Views with Files and Images ================================= -You can implement views with images or files embedded on the model's definition +You can implement views with images or files embedded on the model's definition. You can do it using SQLAlchemy or +MongoDB (MongoEngine). When using SQLAlchemy, files and images are saved on the filesystem, on MongoDB on the db (GridFS). Define your model (models.py) ----------------------------- @@ -14,22 +15,44 @@ Define your model (models.py) class Person(Model): id = Column(Integer, primary_key=True) name = Column(String(150), unique = True, nullable=False) - photo = Column(ImageColumn, nullable=False ) + photo = Column(ImageColumn(size=(300, 300, True), thumbnail_size=(30, 30, True))) def photo_img(self): im = ImageManager() if self.photo: - return Markup('Photo') + return Markup('Photo') else: - return Markup('Photo') - -Create an additional method in this case *photo_img*, to inject your own custom HTML, to show your saved images. In this example the customized method is showing the images, and linking them with the show view. + return Markup('Photo') + + def photo_img_thumbnail(self): + im = ImageManager() + if self.photo: + return Markup('Photo') + else: + return Markup('Photo') -Later reference this method like it's a column on your view. + +Create two additional methods in this case *photo_img* and *photo_img_thumbnail*, to inject your own custom HTML, +to show your saved images. In this example the customized method is showing the images, and linking them with the show view. +Notice how the methods are calling *get_url* and *get_url_thumbnail* from ImageManager, these are returning the +url for the images, each image is saved on the filesystem using the global config **IMG_UPLOAD_FOLDER**. +Each image will have two files with different sizes, images are saved as _sep_, and _sep__thumb .. note:: The "ImageColumn" type, is an extended type from Flask-AppBuilder. +Later reference this method like it's a column on your view. + +To implement image or file support using GridFS from MongoDB is even easier, take a look at the example: + +https://github.com/dpgaspar/Flask-AppBuilder/tree/master/examples/mongoimages + Define your Views (views.py) ---------------------------- @@ -43,15 +66,18 @@ Define your Views (views.py) list_widget = ListThumbnail - label_columns = {'name':'Name','photo':'Photo','photo_img':'Photo'} - list_columns = ['photo_img', 'name'] + label_columns = {'name':'Name','photo':'Photo','photo_img':'Photo', 'photo_img_thumbnail':'Photo'} + list_columns = ['photo_img_thumbnail', 'name'] show_columns = ['photo_img','name'] -Notice that we are overriding the *list_widget*, the widget that is normally used by ModelView. This will display a thumbnail list, excellent for displaying images. +We are overriding the *list_widget*, the widget that is normally used by ModelView. +This will display a thumbnail list, excellent for displaying images. -We are not using the *image* column but the method *photo_img* we have created. This method will display the image and link it to the show view. +We're not using the *image* column but the methods *photo_img* and *photo_img_thumbnail* we have created. +These methods will display the images and link them to show view. -And that's it! images will be saved on the server. Their file names will result in the concatenation of UUID with their original name. They will be resized for optimization. +And that's it! images will be saved on the server. +Their file names will result in the concatenation of UUID with their original name. They will be resized for optimization. .. note:: You can define image resizing using configuration key *IMG_SIZE* diff --git a/docs/_build/html/_sources/versionmigration.txt b/docs/_build/html/_sources/versionmigration.txt index d7391b9c2..42eabc12f 100644 --- a/docs/_build/html/_sources/versionmigration.txt +++ b/docs/_build/html/_sources/versionmigration.txt @@ -6,11 +6,11 @@ Migrating from 1.2.X to 1.3.X There are some breaking features: -1 - Security models have changed, user's can have multiple roles, not just one. So you have to migrate you db. +1 - Security models have changed, user's can have multiple roles, not just one. So you have to upgrade your db. - The security models schema have changed. - If you are using sqlite, mysql or pgsql, use the following procedure: + If you are using sqlite, mysql, pgsql, mssql or oracle, use the following procedure: 1 - *Backup your DB*. @@ -18,24 +18,14 @@ There are some breaking features: 3 - Issue the following commands, on your project folder where config.py exists:: - cd /your-main-project-folder/ - wget https://raw.github.com/dpgaspar/Flask-AppBuilder/master/bin/migrate_db_1.3.py - python migrate_db_1.3.py + $ cd /your-main-project-folder/ + $ fabmanager upgrade-db 4 - Test and Run (if you have a run.py for development) :: + $ fabmanager run - python run.py - - If not (DB is not sqlite, mysql or pgsql), you will have to alter the schema your self. use the following procedure: - - 1 - *Backup your DB*. - - 2 - If you haven't already, upgrade to flask-appbuilder 0.7.0. - - 3 - issue the corresponding DDL commands to: - - ALTER TABLE ab_user MODIFY COLUMN password VARCHAR(256) + For **sqlite** you'll have to drop role_id columns and FK yourself. follow the script instructions to finish the upgrade. 2 - Security. If you were already extending security, this is even more encouraged from now on, but internally many things have diff --git a/docs/_build/html/_sources/versions.txt b/docs/_build/html/_sources/versions.txt index 1ef218f94..3797cbafc 100644 --- a/docs/_build/html/_sources/versions.txt +++ b/docs/_build/html/_sources/versions.txt @@ -22,10 +22,10 @@ Improvements and Bug fixes on 1.3.0 - New, support for many to many relations on ModelView related_view. - New, AppBuilder.add_link supports endpoint names on href parameter, internally will try to use url_for(href). - Fix, Zero division catch on aggregate average function. +- New, added form validators for field min and max length. +- New, Image size can be configured per column, ImageColumn support size and thumbnail size parameters. - (TODO) - fabmanager create-app para SQLA e MongoDB com diferentes esqueletos. - (TODO) - fabmanager support for factory apps. -- (TODO) - DOCS (Security, custom, templates). -- (TODO) - criar exemplo de utilização de base_template. Improvements and Bug fixes on 1.2.1 ----------------------------------- diff --git a/docs/_build/html/api.html b/docs/_build/html/api.html index f515d88c7..818215614 100644 --- a/docs/_build/html/api.html +++ b/docs/_build/html/api.html @@ -1933,8 +1933,8 @@