From de025273e94d7d785f743c64596148d248691b6f Mon Sep 17 00:00:00 2001 From: "Serge S. Koval" Date: Fri, 23 Mar 2012 10:55:59 +0200 Subject: [PATCH] Quickstart docs update. --- doc/images/quickstart/quickstart_1.png | Bin 0 -> 3068 bytes doc/images/quickstart/quickstart_2.png | Bin 0 -> 7295 bytes doc/images/quickstart/quickstart_3.png | Bin 0 -> 10920 bytes doc/images/quickstart/quickstart_4.png | Bin 0 -> 17686 bytes doc/images/quickstart/quickstart_5.png | Bin 0 -> 23432 bytes doc/quickstart.rst | 50 +++++++++++++++++++++-- examples/quickstart/first.py | 8 ++++ examples/quickstart/second.py | 15 +++++++ examples/quickstart/templates/index.html | 4 ++ examples/quickstart/third.py | 15 +++++++ 10 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 doc/images/quickstart/quickstart_1.png create mode 100644 doc/images/quickstart/quickstart_2.png create mode 100644 doc/images/quickstart/quickstart_3.png create mode 100644 doc/images/quickstart/quickstart_4.png create mode 100644 doc/images/quickstart/quickstart_5.png create mode 100644 examples/quickstart/first.py create mode 100644 examples/quickstart/second.py create mode 100644 examples/quickstart/templates/index.html create mode 100644 examples/quickstart/third.py diff --git a/doc/images/quickstart/quickstart_1.png b/doc/images/quickstart/quickstart_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6dcf0d08a358317b6b3f7300a1e2823ba089e43 GIT binary patch literal 3068 zcmeHJ`#;ldA0Iar>JIl)s1P|W5ppP6i|(8cIV~gVmW_xq8=Ax9xho+QJ2~c@Gg-4? zRF6YUD>)=F$1UYNqcJ?2UiXjBfAIY9{eG{{>-v7q*Zcas6P+Ec4oDu61ONaBY^*Q2 z001H!!P<7;9>Ke&rNu(<5ka_ESpcfvADa~jV(^O&7Xg5}R4M)qae*vx$J!GC0LX?5 zACWPbawGsCm2PwCqFbcT{HR^9+mJ%r@*=VGF|HhF7u+jv=*JmD{;iLS-)Am~yfUEZ zk<*ywhEmd!E)S0fLRBB-Upj@It1g#*e8f+^#NhW19qJ=D_i6=I*;eDR@Pw$Y`a1Z% zg&?0-%k*)IACuGC*Of~^zo#%4n^sKN^qjgnI3u^QHcDgZ=dvH81IPkr8Q%u7mXcEd zqWc2WoeSI>#F7Nd;~30AaV-|e9;l*%5y;=vug{IOWci~GB0&236B7aLM{iAaq_iK+ zPL}}#M0&;WgdpslH-7>|#H5$ueu&c#1$k!&_&LSA_*LH_!bk&5fS+NoEx{pleOSr4wTSj$h6O{>B2-+o)DvV+Rudz&_|>6`5*+d>L@G2z8$pp~t6 zf^bGY^$u5|P4wmYI=LWUKF80aM6>j!2KKI6odSWFjUAp;K5ixK>haqBVz!gZjnm;$ zBPQot$jwMYQBtlV(fX9h2`v-m0!fAzVdJQ zvX;J@8ewf2k`qOZaAdn34p}9yvQsH6*L!9S;~YTDST~J0Y%J5KJ7R;H*Eh74LBqO# zJ+^-rnfrwoIJ-+OO6HXxpa zg#Y}Q?T;?auw&p9dQPN1Xb0V&o?^}~fn4OcquNKv^!xZ^T742`#%xE2nQj;M?rbfe5uXiXrJt+FNXjtkmP<%5 zz=v%Xd;|`c6HVSVWopMQksI5itqVB)@!!&}-Di(nc7J_}ZVY_Olq+EuFS;L^T*x5Q zpWR#t!D7su2V{7G`4CV5l_0+X`?R<3XaIKb!E`2~g`C3;FH_qClowd#4T_6 zjC}z1#w$@)mdT0gywD3El{oAw4GX$_?~)L4k%!{v;H-&=;uq(#o_7~rZVAnaR%gHR z{Fd2k&d^jMj%e`QSO~pY&D*aQ=1kygImuONH5M;r?3wVZ)rxiSuZbfvMp>u`Npbbl z=4#AhqYcLg{lCXcu6I*zDA2EUVrmspF8SOd$@y6Mn512_mUU7W2FG)qpNhx+gO~vWw2lkg`{!Cp^m%#o zJ9eLP*O14IanQPoL?=CFw6nWtxdXD|V>%34DLpz#8^}dX5I4^vkVxcrmz3|iQ8rlv z5n&1^SdI<@47$|pSDIg9PQOTpTtMh~ZoRzk?b(}&98H6tnO_yI*i9*ZmqfA)1Fg(- zZAY!Myd7yNxudlvdUjdEIBKNsbS!;7;34!@s~#NT<@XYvXT>C_(O=%V&8HT9^q^i)Mx>_YXVU&IKRKkegey zD-`sQ?shOoBBQK0)H0c_lUdf;Z@Bh0A&h3Mdix^sZz{)Uz5RODrCW>&ct31D>x&gE z4|PG^1McYifO=#shROfS`HL#)4bTj(CA@~C#SfoiEqAZaI8!j}-E`06rSKP4KQDM-Sy`ubfE`XpSj8sfos|X{re-D8m=VDqI%3(@;uT@Cm zN1RvO|42r#yJRbH0qILl*kwH6crh)O`2Aw9U58@LvZswh$0|FiHIRa&M5qs_PZJjBPD9{V#4lZg|;iTcyI4Ufk^a&mHVrN`jCEq>7&%Qokp z=XW_T8B}loDl2HBtgrxJO%cmOcgGBew5R^_SQx;#nMgHk{hF=BzTIsTk;jw}1x=q{ z=?iF549-RLmpuo}U)5e6iNER?A^I-_vp55@n{fCa`S>5$yOY0&SdO4K5!&j%!o`P1=IwZ--O{{?swp;rI^ literal 0 HcmV?d00001 diff --git a/doc/images/quickstart/quickstart_2.png b/doc/images/quickstart/quickstart_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c08885df41d8ba3999057d746f99938942f3df GIT binary patch literal 7295 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 literal 0 HcmV?d00001 diff --git a/doc/images/quickstart/quickstart_3.png b/doc/images/quickstart/quickstart_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0fe10537e1a41f37bf50c4584cd6c19285107329 GIT binary patch literal 10920 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 X!L`-V1Hdm(PpB$t-u`gQ{OSJzuq7q_ literal 0 HcmV?d00001 diff --git a/doc/images/quickstart/quickstart_4.png b/doc/images/quickstart/quickstart_4.png new file mode 100644 index 0000000000000000000000000000000000000000..03a7e4278f1695519f9bdb874212622adfaaf790 GIT binary patch literal 17686 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 z z6=|U`@ug&Hi#z?>)R-%OZ*<^*OW5SMUa13WT4X?7^zH7{LJshVMBn7eS4`mc!po22!`H%S_41xSf)`9Kky-klG6rZvM^BRcmhZ}jxYhQeMeqrzBe z4}SGT{Bp6qGr!J!3vU8Zcy;CQtTa|wqOF}St_g5IusV(dDX5aDHPN(hr#MGde5;&*D=V!i(@%;GOfu7Jc`|8%RrjxX1 zajQJZnW-2EIlyLnV#HM`#w$?mrLLBZ{<`q0(eMRVqEmQgVIKkYn4BNNZ>k8$(_HD3C(p??yQbW)MUntd{`HAP_2;x3lG zaW|WUj18u~WmSpp?=W!23TexuN_hJfD}~(JH2FR^S^I&&KlI>! zu@9VW>7hpi&~DoLC=$b+7L-p`>-+M%@j-##{2wrTihFj3fxt0Rh`M17`|8>dNL8iv2Fh`ZSbXrYGzv8oMEH+g znBg>0(*yKVBhgfoQhk)&bg$`Rq)U{EvO|yo?uJ?U+B1U_hqa9Dc{Dv#XF1}H<67IG zo?3N~!DbXbIHoZCBSuH8)lC7hF0E_2EtX>=$cQAN-ujgW^9X7P2N#Lj>>?jW8v%GT z>Sfk)IMvN-3PTx&P^6Cahi3ae4+4+pe%5|Za%u#>pxSh5l(cV^X2)>U*Ad@psnnQC|!0@`kiA?9k@u!g)-Udx_hQEht=xUW2I7D-~w5d z+InfSgh7>IE?rStowf9ScvBiCh*aCc?GJE3$BhMS+ID)~Ks)#J}VkP$sI_DtjkV z;lYOp62xHYCr;Y70P5{W0mf7oQ)6|#z4&|?Q*N%PwRia7?;}9KIG)5V3v0rg3bv#0 zfwAoJ3^pfygEL%^c76j7z~kC0dE*VK+tHyqk4j*b&MP^xuFhOBq=ZD7=zy9moM*r`N z<*_@t117^nJ$^;+Fc6+ba6b?OcHXMnI9H_XS5VQkdcPuByMUC3SAHg?vYr;!ykRVp(AuJjHbL*6zwfOl0Ul;zch(Q~EsYOy zQB$#n1G0z7_*9wi`}uZ@4dl#IDCtpN&U*w)$OyO#w0mq)ozcMGV0yALFJI<*PfUC# zk+tp1iM(>wyPv2hhE=g}v~*y^hVf#iz&{G8KK;J{19!Qb-wpfJ;+rj3%YL02SvaZ1 zT?IBB3QSPkM)AeV??A1w<22&ifX1%9QTCy3S89l`0xFDiOhV+(^u5SrCJI1_@PYff zH>-uSmxwSy?wxJ_z#O>J!2Sixp_~*)5zEWzD5MI)p1dRh>D=#-_%k}K&%g=L+x@Kr zF}S$YFlhxelrL&g`uzr#XSh#0;^|OBsu*1A#+KnMSQZCViVJ4LiBJ0z6u!T4s_oYe z^jWGzfb>eJFfDJz2Y*Vhc;$5S@oz|t*e`GdrC}h%u0pgycjf*(KR7A@;&%do`D~=G z%mAbn&A9ys$QHkW2cTUpO}Lb?NszvRH~FEtYhJ^o06GGdDuDh6=neBc)hq#khZnDP z!JABhX7m377!v@?%9&uBy9KB#sUg+zoxraa;9paR8KTQ#AWTKp-hVyXF$q_fuw$Kl zVAHAyMOhJA?CaQO$OcpHv53e2q2o)KY;kFg+;0@Yxz>&`Hs^C0I;zTXf1Ep1m zx%mj2ng?={XHuS3@rQAMYX%HJ39gf{N5b!C{bMVZtu^Kp44gUN@oh8qKk_JWF290> zjt72vUckKw9`aO_o1=6_{&}6S#daaiq5N&!KRo0cnYK z@z1-D|5g=UJwUo_)SOs}{BtNcP{G7(R80Ln=kK8Y>sHD+m3Uz&V)zM;Le^qc=SE`# c@J~+A6l7GT3nk5-p=06_)1je>!_i6p7keuVYybcN literal 0 HcmV?d00001 diff --git a/doc/images/quickstart/quickstart_5.png b/doc/images/quickstart/quickstart_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0f37ff5e715630ba5fccb75cb729e961d946c1 GIT binary patch literal 23432 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≧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, -you should see empty "Home" page with a navigation bar on top. +you should see empty "Home" page with a navigation bar on top + + .. image:: images/quickstart/quickstart_1.png + :target: _images/quickstart_1.png You can change application name by passing `name` parameter to the `Admin` class constructor:: @@ -68,7 +71,7 @@ Adding view Now, lets add a view. To do this, you need to derive from `BaseView` class:: from flask import Flask - from flask.ext.adminex import Admin, BaseView + from flask.ext.adminex import Admin, BaseView, expose class MyView(BaseView): @expose('/') @@ -102,6 +105,35 @@ All administrative pages should derive from the 'admin/master.html' to maintain If you will refresh 'Hello' administrative page again you should see greeting in the content section. + .. image:: images/quickstart/quickstart_2.png + :width: 640 + :target: _images/quickstart_2.png + +You're not limited to top level menu. It is possible to pass category name and it will be used as a +top menu item. For example:: + + from flask import Flask + from flask.ext.adminex import Admin, BaseView, expose + + class MyView(BaseView): + @expose('/') + def index(self): + return self.render('index.html') + + app = Flask(__name__) + + admin = Admin(app) + admin.add_view(MyView(name='Hello 1', endpoint='test1', category='Test')) + admin.add_view(MyView(name='Hello 2', endpoint='test2', category='Test')) + admin.add_view(MyView(name='Hello 3', endpoint='test3', category='Test')) + app.run() + +Will look like this: + + .. image:: images/quickstart/quickstart_3.png + :width: 640 + :target: _images/quickstart_3.png + Authentication -------------- @@ -130,7 +162,7 @@ prefix to get URL to a local view:: class MyView(BaseView): @expose('/') def index(self) - # Get URL for the `test` view method + # Get URL for the test view method url = url_for('.test') return self.render('index.html', url=url) @@ -174,6 +206,12 @@ Flask-AdminEx comes with built-in SQLAlchemy model administrative interface. It This will create administrative interface for `User` model with default settings. +Here is how default list view looks like: + + .. image:: images/quickstart/quickstart_4.png + :width: 640 + :target: _images/quickstart_4.png + If you want to customize model views, you have two options: 1. Change behavior by overriding public properties that control how view works @@ -218,6 +256,12 @@ Here is simple example:: path = op.join(op.dirname(__file__), 'static') admin.add_view(path, '/static/', name='Static Files') +Sample screenshot: + + .. image:: images/quickstart/quickstart_5.png + :width: 640 + :target: _images/quickstart_5.png + You can disable uploads, disable file or directory deletion, restrict file uploads to certain types and so on. Check :mod:`flask.ext.adminex.ext.fileadmin` documentation on how to do it. diff --git a/examples/quickstart/first.py b/examples/quickstart/first.py new file mode 100644 index 000000000..7a4aba2a9 --- /dev/null +++ b/examples/quickstart/first.py @@ -0,0 +1,8 @@ +from flask import Flask +from flask.ext.adminex import Admin + + +app = Flask(__name__) + +admin = Admin(app) +app.run() diff --git a/examples/quickstart/second.py b/examples/quickstart/second.py new file mode 100644 index 000000000..ccb177615 --- /dev/null +++ b/examples/quickstart/second.py @@ -0,0 +1,15 @@ +from flask import Flask +from flask.ext.adminex import Admin, BaseView, expose + + +class MyView(BaseView): + @expose('/') + def index(self): + return self.render('index.html') + +app = Flask(__name__) + +admin = Admin(app) +admin.add_view(MyView(name='Hello')) + +app.run() diff --git a/examples/quickstart/templates/index.html b/examples/quickstart/templates/index.html new file mode 100644 index 000000000..2bc48ad24 --- /dev/null +++ b/examples/quickstart/templates/index.html @@ -0,0 +1,4 @@ +{% extends 'admin/master.html' %} +{% block body %} + Hello World from MyView! +{% endblock %} diff --git a/examples/quickstart/third.py b/examples/quickstart/third.py new file mode 100644 index 000000000..7d9d6f9f3 --- /dev/null +++ b/examples/quickstart/third.py @@ -0,0 +1,15 @@ +from flask import Flask +from flask.ext.adminex import Admin, BaseView, expose + +class MyView(BaseView): + @expose('/') + def index(self): + return self.render('index.html') + +app = Flask(__name__) + +admin = Admin(app) +admin.add_view(MyView(name='Hello 1', endpoint='test1', category='Test')) +admin.add_view(MyView(name='Hello 2', endpoint='test2', category='Test')) +admin.add_view(MyView(name='Hello 3', endpoint='test3', category='Test')) +app.run()