From 4cfd88f83419bd59fd9748902e6c16188958e92a Mon Sep 17 00:00:00 2001 From: Roberto Rosario Date: Thu, 29 Jan 2015 13:52:56 -0400 Subject: [PATCH] Documentation updates --- docs/_static/indexes.png | Bin 72705 -> 0 bytes docs/contents.rst | 6 +- docs/figure_src/indexes.svg | 513 ------------------------- docs/index.rst | 4 +- docs/releases/0.12.2.rst | 9 +- docs/releases/mayan_first_login.png | Bin 14727 -> 0 bytes docs/topics/contributors.rst | 58 +-- docs/topics/development.rst | 269 ++++++++++++- docs/topics/document_visualization.rst | 7 - docs/topics/documentation.rst | 21 - docs/topics/faq.rst | 19 +- docs/topics/features.rst | 8 +- docs/topics/index.rst | 4 - docs/topics/indexes.rst | 29 -- docs/topics/initial_import.rst | 24 -- docs/topics/installation.rst | 32 +- docs/topics/requirements.rst | 50 --- docs/topics/translations.rst | 8 - 18 files changed, 290 insertions(+), 771 deletions(-) delete mode 100644 docs/_static/indexes.png delete mode 100644 docs/figure_src/indexes.svg delete mode 100644 docs/releases/mayan_first_login.png delete mode 100644 docs/topics/documentation.rst delete mode 100644 docs/topics/initial_import.rst delete mode 100644 docs/topics/requirements.rst delete mode 100644 docs/topics/translations.rst diff --git a/docs/_static/indexes.png b/docs/_static/indexes.png deleted file mode 100644 index a1a5c776e6d0f2317995bfc28da596e84b4f3f0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72705 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

SmTWMTxDl;akbs=1_)}lM95r_2iJZm_H*1 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 z zBR^?*&%ZEm+|?8jm)<#{*7Kl{1i%W?A`GD9zPh&9N_a<*K7As#6?JNJW@1ri0ZtkE z{7?Q0N1oDKXb-Vk42b5hGTYd_;E5$dLoS@;D^|nHSY}!^R~b=O)_0X(t}kzGTB}(U zh)d>*pLo)h#l~M0I+x}Y6(wVlFa`bgnSV~E!g-@~m#;#Xg-Xg!R$F<>F7~xSxLIGQ zL+u$5`n8zr%9hO^PQxZ4w;iY|3w(0AWtqx5fhvKb$A&dpLH+98`U;WK48D4GbjL3vB_=)_8H8j)gpCGlJB!2C6QsRM>K0V zTMjS@8`qCn?bl{?A*3wJ+S#uR>Gap0ZH;({l8T|EXIq-o*s;{;O|Mph>`w#ZnV%Y_ zKS;)Zq0H3((T;dZTJU06r_X8%tsTWK-F_zh{HK%@gq^F@#lZ<|#zC;&iA>J@LUAki zA~S8&0UA2;!rw;HCUMB%M+y@9ApG0q5+dPe_7xc!ie*&cyW}`KKtWgqE7$`<= z?}(gjs(%#eoT-XEsH;8>(#VsS3B}1M#%H+;{I~q=jUH>VGn2o9^fL?7DDVE;6V#25 zA1h_up9do;ZF+LOK28k(*)rsnkZLY1$C76ZBeC^V@xrp68h_T)jQC6*KbT1p`xxex z?q&ToL=&N9w}qL6Z(so}*<_Gl?s*JMJ~|=)-S3#|#Sa~~G$?-MVRbvi1Ai=F;6EKe z<{z~qC|)HYi~GMgCO2tmfa<&i~kyaA?a`?@$&`LbS$7MP+y4x5dkcA0PFXrTj5bcIhP?Q(h0; zHt9lOp?q^8H*`Km-2d%hc*%w&9>$>KFX3#e?2CuY6Lr#%rMJ{h1iFX zy{;9W;feOU-o4BJNxDVG7R*0GRtuuL0Lsoa4of#-Dcu`S5>fHDtrf{Zos1s{TDJIt z-$ZBqJjSp3>D!c#5Mc{Zj4ON$xcs}Qk)(0Pos!{Y6CCuYBesfFR;h zcPuMibG$FbD8(qUhx+D9kUTG@sQD-VQZoJ7i$glKntS4}Xe;laV?4+W zo3)u24^v>2L5_1LW4>lBswTBj5Re!#I56fbQE-jt15)_Eb4?O~Oqa%pV&)!S<)-A4 zoG9BdYulE;6$$jAu06N&%e_7IX}M;(t0b9XToXt2|JNGnzYp81BCFRqyG?K^_YE$n zgpOqID{8Pk0@Zu3_4d8S;;7uehWWz_v1!4;ze`gm|CsFm)_4KZF)H&!yaECaomyqE zY>mCX58YQgt1WLJCJUZ`h<$1HKE~yTZED{*>upx)(Mhd~0woXI&J($}(kvjQDoE`j{h zbpPKMWJ11c*n4OepI4@xz#-4|&px{G;JSF$Wpx2G%AS0nwlI4$A>*LCb*#rAwf@Cj z=IY0pNHv@*sOW!JTk&D$*PJCyV#oIV8S)$(5YXz^Own_!MSQ&6F5yOA8*lBxT(J*y zA{`vw7pOmpszP>e-9H`BME=iWoldJpvqYDlw7!)|-?l_oBk(J~O9P{6N0?%HFsd`} zR+QN-xOI_#dWUi?L;R9u*O}V`l6tk}3yQr)K6h3NSaR>lWi;uSo)ZCtcB4c-TA8Qcy_ z`Y(|&V>Rg_l|mjk;j(eveZX3x9sKnt>r~huOFONyhz(*@rd3QAjjRXGzz)=#W0d1y zCXI;??*Oj zR^uh(mho=(5Q0%Xu`&*&9LNajUTn}Zy699O#$NyEem~hzt|inpCANno`U2) zA>w;Dw)Wx!Ss(|D&t~n0O^`4LFND(Q&rl-~8oYc9p@#<5+tE9=Dfp5KLJ3cZNI_F) zeQY2E{7_$s!jA#L{>`HNpt*K1D5X`Qo7I5{NB}&C~@ABLJ-311rGZmGi9(3~|=Syi>i*V;j-3HBiT3 zKKn(7@2gJ!tec6bVKX(3{WAP99=&^@QH5|=O97?%5VABHcA|uk1d0|U;K0zsi&%T$ z)tYTjhJqQfzhztnS_vbOth^WGC%7zDM5r9TGfkRZ?!@}}ULpmwuGOE6dac9+v2v11 zgv@eWu-Vjs_$xk^Co6Bv~a{T**VK{t~zE z>lhT%tbRo(1mIQ2B`sV^fIoczAJ#k0oX}mD0W{0-iklq753q%1FojrjL$CpiQS3n}Tu>*KKjD(AVY8_Fw zH2}cj1kg3jCz8`LfoIAv#^-PZt&LMaNnYoejs@|-TYG;%0<`riYgo*lp4AWd(stgSp1_t@&eGrs8^SV#f~cP4=^Hq!LS z!asY_-Vv#Zlp8W+&JpHZ@jIC>i78VjeTk=5@!QEHDW9|`VBC_b|{uthB*GV{( zi+%bnJ08v{b2x|2sH{A-N_d#`8wZKzz-j(JM7?)3oB#j+Z|{+$YR_0zRimv@BSsL^ zrnFYAqE^w`gj%sfjVh&zDs7EYn<%MS)Tm92psf)*V&$8@-k;z3o#P+QNsjAzUC-zB z8288R-k!V)!@ns%QRNdS<_3+iBxNx0Z3xdE`1hZy^T3totWIkjX7Qid(hr)k&m;C< zAEVUwxXI2XLkt5>$G4w9=g-p6A9feo_=DMl)XI&#GPF9;g{(VbVW?O_s%r^ ziJF?<&AVLkH$9AdD+v!oq%SI6xGB%65@mup?2<1+@tr|fng1RtAILbBbMeW576P=)3t_K=qS z6Yi92{H@ZzUL5I1zlZ?T{&vPg8p`xfz?)ZTLAUBioV(W!J3!ptlhQ|+UL?ceI4MJ4 z$ZSZC9&a2k`U67{FeJ*h{!(gx7*Fd%dRdxq3i{_L9xlEmLqw;P6jFt?-y1?+LHSe= zqz1VYLVR*6{%#Y9wH|?;?s0#=ei^YwF2d&|utWMk)u~=@vc>HLS~Kp-CX&gEyN%R+U~SCH8nu@1q>9|PqNXOvZYcF#^xfa?+` z46`6Z#AVSzS zug=qMC9)mz#BkaU(?rg)Mp&Lk{dsl3{3xZuWe%CWXg1UkBB_tNrmL9<4voB7@+CbS zf9M_d{|h|w$gCISHv{B(T?$PN6DIG&^NCWb9O&FsO{Fxdvh$@J5!NxU7Aj@ zP~MgntGNIWuVWKDxj`(AOoSH#NxZA9!jN-jSedo!Qzd}ntvn)sjXwZ?aR*zxOWp7} zNd;-kw3QYsWv`4llX9ip-mJPl@YJaeZ=Y-!_(E1JS>=E>S>%$* z(ifM@WVVDMa(Yo^3VNJ5O%XTtT#FdY8rsc++=KvD@RTs?Ykf$~GK$A=ky2CmmH)UO zTzC2c&&XHM=(cvsGVcQEU4{;bXRI%CZ>feuFy0l1e=E*;ZU| zIBn%VT*+*nwtJ$$akGp2Nx;^}1tZU!p&iu@HfS8En+Vy3P$G@-(YGL!~~;1J*J13@dL# zF`v=)KAfL^#2!J1PZx9?9}(`V1P0Ttco-6HWRBI)G|^OSg~7&-ef9EL1?`ulU>a|X z#kX_B=Imb9E8m?_gLOO*cCt9R|7A7va`6)QFE>{aIJoYR(;$=iMnk+ z0!TIQJ9#J$iHXBNEbj%E#7>s~weJU~w=@0y#oin+$+7Pi!k_~dB7BuxN*I(u1Gzt{ z!1~KhBl336Gag#u?{DqN*K_Lg-*|=H&8%+XY=+oNdK}zAo9tP9x#U9lE$b~keuf}f zh?3Slo&-Y^&Vz2*go@9%8^5El*iL_zCYeVR+NOro3v{e0E-}nb_w9^{9#s?$J0e~jv@bGQg- z(IJBu{=C11PeSlT#Qm{^c$e3S^U^r7o9Ya=`R<)L8TcC7ue$Ig2;s-z*VrG1vhFg^ z>QeI}<^?u{rmnhJzuzM@_@GIsk7uI2kxKtN*0m667*()`^rW3xQ}u>r*r3-PYzXL>9 zG$I6c6I>oVjH*%K{nss_59ayKP5Bauh+C{7ndsVm`P@i~b-iYFHJ@RZut%oo8vpS9 z({>laM+6|w=@~RCcuJ$~gbz}474ZR*@8lEycdam~z%7Oj&xj1zlND)sD=hnz<$GmM zg9|3XgzX$oZKShvC7msOYb!L(py9|gDT7QraO~#V1MJ;0b8c4?^(r2i%eSzMYw0gv zPEGV>>S)=lR`&FPgO=6d^Jn%Kfk@vlL_H`C3JS8ulO+yk%j)kN29IISUl&C zM%SizHbvP1)~c?KXw|~E8G=rOv6y-HsNOh(QV~73{{AQHW(?y$(xw^;u)Sx znnSSTB19wfXmNvoq5B4&Y?on)mxQI9Ux0CIqKz}$5p@9P0Tn08Zr|&l4ua65Oq;-% zJ`xy+Y6W*e6!!76*jY|LQK}tXzTz_@k3Yqt!!f#G79VY@3ySOM%kAh28q<+Qy{qfV zeZV3fD`8VAp)r;}YWPbrbl*NpV-+`6F)DUzwZU80sogW9qf5(=$w`G=?+OBXt_myd zW^&=3y)yVo+(-LR&?)7KMvCiqM>T{0$}wwEB(r6v%wmi4>eeD@+q2%QmeF59)u={J zQd9WmabtOyd?PNBd`$*Ry&`i~5+xr0N_r;g8rS;{wY_l78MzVAMv=IU>W=TT(Lm^1 zTz_Z;9#z~`?_P8x=Adqh#F31%)3VL1<{5l{6)AHuCG31Eho=Lk<_lj~Wv!p-h^QWqa%wwgsN{^W)*9*+>Z^`2@PO7L`TxGkqvUe=aQ+) z?jN$=T}z<-imnLQPARC}*X?ZX!xIOCZdLoc2TS>n_+8&`B{(ikq49w>KUW44RIi`* z@@w=45ec~n4lnp1&IZlXz(-$h*~1ry7 z)3tg6_%nIbvVKboW-vNvno;F|Ar0OLHzL2wxsQ4ZZMCKuuR8e3b=mo^EjRbhwVAe; ztLv-wS6`_}r-`$)Lxg18!}AvSQ2K4uiPvgjsR?tSaTWBV7hw>6trIRks3uhIQN`euC!_XO&8 zKR}pMVAa-_lMEyinE$Pcs7T7!BGrSp%n8~msUa-)FkWjv{UPA2n>y$pLtC?7a3FLm zK?dX$DFMdb0Oh3R%iBIb)mMq8TfDv$12e5(V`A~daAXn=ilALzBtzIE6D*!p2OL~b z%%H>+F2wL~%9U-H@bc;bLYZGAk2aj_k9-ZO%8}akG?koXn^++JTRTf~G2RV>;*@J*n1+aYug^Oz2v6r}YMPQ2|8&*S-a#1)Shu@XX6sCNG_?-(v_7!68~II^9RnHDlh(}+Z|PWqyQ zT_6c_Maw-WYv|DBuZTJ-r=bZ8NA5&@1K+|c#v6xLY$g=}t*N}qxd}cK>aA1&YOO}>!QbilFxp1ZOyAV$eL!@^X)QN`otv)i zv9-}k*mHt=1AUq3v}Bd`!nw_&q(cjq7g79N$uo$?6_G%1NjmTfPNPG>*niVn2E9Q8 zTZnQ)=D(B##N^^8KVKy|TX7kL7c@oP=uCwP{Spve3=`dNtshY3*JMJStvr(J^TiYa zog*e5l-s&T^2qL1X|(Aks%C|ObN!(VWa7S4TkE(0@Lo?%fV0GNVv zB?+{+!Vz>Us21<0TtzvV6%n*Lih+=7m&P`j%KOPpw86D14EJm2Xd&^)c5~67p-!qC z*xYEHnli|Zjod&}q{`q3qYoSI~Y^O*pXQC_%}(?u_sC4M83PmwX>tp4iGg*dVv z6=Arc>?G5m+0iKbo~4#|n{|lE2UkWyhSkPo483{Xxx*aJjJDi0fCW#jZgCezsAL}a zAf1TUv)0#pgAx?c47>E{=SD?r~%eQZLwY1~BtA~;@L2(nLN zpuSsf6H=2a447BL1Brl~IyOQyjqDE8y zZ*YfD$m?kkYI@u1SpoRTLcKdvkzd2iVv~u25K$T>fg5e-SddgsUFc&k?`#+%R9fuDjNM>3*neR=6M=C;R^Ox993Cx@u{hnk8XGzP|QOXT<0MgHwq*>k4O5QcYx$ z;@3(LMCV;ip&0v-0CbE&3S9azalHJdIC~N+n1J0}XpqvTa#A)UYh;z6<0<0{1ow7< zC7uchS2bp8?I^V%JUPPSmQ$Nhn(uo35g+E0&ToBT0!Z}OZQiF6HCx=?n ze4Wbn;+c%uJ^UbIln<-mMeUD~;XApRt^7Tz-lXHl_F#LT>Wn5apfM?AK4TN!a>JAx`0U0;P}dl@(mx2H)QVWE^or zso=C82Hap%`)sE5nvcJIHBx>^(C{$%sJAUk0)%Mgs^08`xXh=fV5)Vge9aDhHDY}% z9Lk|LPUkXqB=Z3yr}v;y_IH20g1!@gW?h2zUJzr#aMq0xC=IHu>y4>GnV=ItXiZ^! z%7_#qdPxk5R>Ss`uL@&1c?5erF2&e#p`VH{11w)w?44 zRS3F$K165Q*!nuC{HAT+Po)ctZqijujG|CvGUD{1$m|k4<3K!)Gbl2i(=f#bm0n<+ zQ7e(oIVBaNO^kqTytVWp5Op3N=p4QFXHxT(F7_W-%+S#ut=9ZE&i5>UeP1|KZeI&8 z&^=Q1uS_G{~9tEux?{wE96|ol-=#NC&m4`P1GTK4_(Lv&%o=e`^ zr3A&-*ZX~ufPGMm4P^}7#VA6*o5E?g^c$85L$%!K}+KIV7{kfpcgEl zo0sDFNQ<-gneic|U17j}w#N3dIA#7=ZPOad$N6hE&!@f$ZiT7 zD*{xXdBFGtk(kqEhKUPq**4o3*zqDPzf}vdUv`*zuPrG;T+V(%m@m)_)*dA$GPcaC z5OK$EZZ2JTl#xC0Z!mjB*`b_5gmIc%y#w`%A5CIbOorr5B{9?g{N-C73@-78{!3)J zJnn)=dB{%qzLxhx##l`;cb$e>F^l?7ScV?(1x%(bZ z#fyoxO$j0AdH}s0Tq-8@KpZrc^B_KWVG|j_0O-DqK?JG%O?oEXZJr$5;;YTXx*_Dj zb_HmBcFTuHMPd7Hw5wWB6}u?cR$b zMC|B@CRHSmYl9IGeNMG93McE|OaEJOk++<9mr6AryH-^AYI2z$qoqQW*6xuLxp@+% zYDRpd$RD)nq0yq!9>q3z=H$dfESgIlpMkF3x0F~U*w0k^hKtr_(;oqdj zQ%e2Lfumn~g@G*P@1)M-p#dao>;L5xeecQ6dB7892z9T3@eYb`8lXiTaPK}eb}b?B z!T1g#sPvi*IXx|0z|5r@y2VGjv_JeJT}vvZ?hEc%JZ!n+2*&X`2uzd8g)lK<_b_BQ z{qTKP7;V2z9_Wzb!#rmCTL4f^@F3MMbrTt7B58oXAC%g6fkiHsHer5k3&576g;eO3 z8=4H%ER6!j!o89Y)g(@gt959C%|PES!%9ITUhbI@Q4*M}hW_k(oa>o!3}e03RC-6enq8)C$iwr-!F0%beSd3A&-AKr0209Vaj`9_RJSsa1MPVuGIE4u z1ClFH8qj*mT9o@>BmNC3@mt#!cX2s*uN6qN$=lcko(sk&>-QvQ^nf){5ef%!DOG!O z9cK@Y5k52=2j+n>|5O&o*#`4OA9Qztz~e>XXl`^1Yl7IopCDKtPm1lg|J9P%)?{@5 zjj?Bww71IWFqNoaSvZt8?FfhFA7 zY#55a^oHHEMvKB8YS2r#AEd+lUJb#%<=sgPi734@Tmg$*5i30z^iB-1hw^e0Lqv4F zWXGK&x!&h{fy>3k-Mh|xQ@SogW!&&3U$ABKCb5x^{y68m=e=2jl%tQ zm`$OoD~sQqHB2i}D|K9KDW8eIoPEj8=j=WihHJephpbwsM}$!&5o@or>|zBb1lo1N zK^%aVE<;qbqTAjzZ170n9O3qEM57m4qL0&9yT?6$t_RmVQjNaRxR?hkE>_75-8U$G z=#S>fxSeezvazdQ+Dj_s>puN5b#Pn6H-N^BaAKns-tb@jf8c`#Y1_CS`h5sE#n7~s zcb!EbIPDV=3#SYRH@KYMRBMLTi#>>;y9JOvS13&#Izo_90XtUb4{(An_(`dh!7Bi; zW*oG+@PclaVxR9Y0{T0r8pi=+rig01vhfWPXE8@D5m+}G5jbJ2_=JNp^B}S$A2-Hu z*3QH=VvhXV`wKBDNG1o9~Rx%vLW8$3W-I`>aR}h zG&D!?4mtohyeVXNCj_$#;Edrv+KKEdYW){J{3G5QJV@EXY4E8yu_&UG=VR5=0Gv0H`uC)>AaVsfGQo4B9 zPLdUg)B!YTz{B?RZ2~}}BXr@pLh~QN!oOC{x}ufHfi}Ue1MeMEiLu`TiK-pG(8{C8 zal zZ31Ljz)tA_Bhtd`=NQf71AgePcwQouGKy}ALuizT62YPNx`6>WE?BrXBHUX=S;4{w zR_GV-pF0j)aZmp2GyBVjAnH@d44dfE?vp(c>~35SVet@WlM0Xrg^>H(XPL9A#9AQJ z-l?;Ll21P(sEKY1k&ypU`3A1({yQu5zHsineG&Y4s|Dkv}FgcaV2^bET6Y!I( zjWVvnH6~8+JMjiz0jF#NyUAcIC|%n!1t;OXSNFt+kE8{`oGWc-)II{~Lh|UvrQ?7* zPAZD27vkLIbMqbQHx7k``^k3g(5vTC=v}0X>>jQs7%fO8*YOo5qKO`Y>3=ss28fe_ z(JZk4?OIczp{3vCNN371)X5VO{bij}>AiNCs2$m#1{0yXDtXGs; ztI@?k-`lw2UsO8q;eXdLDOy+*g~e%Yt!k2`e(ssCoKfKHi59d@?2ULMjin zQ|GB~hJ00S_WkrZLcE}M+5v?NDwe?*A%innoQ0sJnggBARaC)!xJ zg1^DbuE=GIAJ4TS+rFs!UT|XtB{T}m70jT|Mx-zY3005@ekG6J-xm)%zt3F~DDrE? z8aq$VmFN6FQJTN{ztB!UlNLy>$hG&>80ueJ(iNyshu>amiB<*x1Nk%MmnaXe{|LLa zLSGck*567Av`$8zQdrdnT|9;-Vn-SUL)K8*=mm<#j&$(yN_Q=YUaBZD)?XkFn~-}z z2c}XLF(&$n=$`YJ9(0Dlj3O2d^AT((`EjM9Dk+@e50Rl1pGkq%rTrGJV_(??Lkdfl z?U;6S0DBxO2dmwEO`kNQBg1biw5B zn+f}!x=6r9T}D8_N1LFmcc%6MBo`cX@E5W~5$k(iZL=Icx=#crgd8te>pV~Y@8SIL z9|}hA6j=S+4VV#T=`@Q={J4RWDkAlU6JdV!%&^w4jjex7gU`1S2`Ao&>97Yg4a~XS zc8RorJp#W-_4z!yo>!|e%wXSKMAMN1Y(JM#fXmGpYNTwUmf#Mm55odSi4r2d7xz{Q zE)fay#2YJnm%Jo8JGn%7u()6Sx9Antz6J+>_h0mElkBJ%R+XlAP z%anb7JK9W=+pya1j~Vk9Bta~Z&S_q0R_dk5K>mne1=ZRgs?De();eS2#-uV||1XCa z-sFIU2agqfpid+VVuDYM)tR`gm>Q9!?I_pMjLlk)SLpa~bV$Ey-W%n*a6DGxdp4F7 zHXSCO@Gj+Hy=&3G1oru$8qza}9(+yQnt6Ovi3UOOO%&bbRoLyWJs)_(Eyb=bU6qYnz|}o=7Zv4<0B?H# zA1?>FR`k#L(9~S1X9Y7pa}7ehp$1N;&l>HnAOjvr$?a%;l}`Df3yn3I#BiF{d>SmG)TE_R%9Zf|rSRCB#uB6Sw8Zgb3c{K|7t z@#0l(!C2rC_D_I)j>oH>*K3WC(8+|tNaiq{yGhol`uCiFGwZI0vfNN2j1-W_UXJv2 zyh*EfKgh5piT7Fz&9h9SlOjpq`VLNKaVT(n;tS?X18i0Sk^M2sbya*4K;|Y4QW6TPE?vCT*jXZn5 z#dTF1^^a8IFGB}hhU?6Pp+t5z{!2eef7;{OJeT?d+4o{gaxgE6<2`)+)(r0Q0VB9>ph za0std#l$5Mg(?0`m-8}RzF^x=4juD#oBHYhU#^lBlW1kN{dHo(<#jkjq|e7Wd`{(| zxS<*$*>|MqYy@K$&=h=jacg73Ua3R=XtJT-@}9e)xs_D{&eD{LNwr<{OEbt(rt{dA z9W&insEn%Gs5m~)RZ3yv8R!W3pcQ#lTgiW#W>iv}O zIW)T}MX%%ae!RAbph-x$FITM;Ij?lbgSa(0$>#l1ZsOPE3gP*Q<&lMDy0H1Jw0nr1-HUTnQ-jma zaA@G^7Ak1-Y@hD)|4nz8X1)U4tE$fT8oA%~HdhAIUs_`1reBADTngKD@BR4kxZI-5 z!=PL>9Fn>>797bvVz63Xxp(nIh4i}_r?j>^bI;HF4y)2SM?ZnzG60JxvJ;NdC(o2r zVT={Jtbf^4RV-n$w~_Le5U%2*N#MpKVkp)69M9wC=j^)f5&!FwCS{`4P_o2u8yj5G zYd@O}+PJ-mSfPrRydP?NU9(}tmzaWsWjFhHwucLLy|1*iE3dB^j<~e-TmF&=M=^|4 zi)B}eWmk2F{wm$4Zgb*a<=8W~q#_~4<6nNf70ENEq^ot_tLSWZI6_gS3zhA3$Y6iK zRq8$I)MNDh*9Xg~Cav9>d_Xq?EMHoi%ew#p#gm-_`bU(xJXYNn!v1%!9%OYqU5%&R zxX0J{Y`-*`V427LrQL2~X>?jXm0)0GbC@d~%If>)X5_}0u_{qYr+gRxY0s>~SA{8y zB1Rz8dNsz%&;j1}{@7N=3w=AE=LW?0ZfjgUq7Fxlf8 zT)|@or}9fXU%c&J)LVM$oW>CIR7(njndF5pD%~h>&v4s51u9E&rA2{_`D$!ZomXM3 z+YgthMOuXZ3c(rV7RfN0p|R!B@aG2*gB!a&3H6(u~FE}-&*Yl9O{KvQWIK9-lhBji3CsS_ZY4hl{b7pqu&qDci zUYmW(XWA(arPhCYLM?9_dx@F9bZpqzJFnXezO0Dsbdrf>7m(rQr)JEKaJi98>YFCh zf*%c1Ll8Aa{&&E;WT8OWU>a~2CWVfuvy#7}jQ|R+u$5jX2=5%tMd6z^F4R-=H(Wb; z02=nW)|lH%ufBMUyvy#HlchES$VKs#;v0>ab-yQg)Yb2|j-& zPKgmw6VD;zsB=p(-s&y_bn8%dr;p38)F-8b7@q_7P!(Mpywu?wvU0HqK~j5T;};@h z#dK)_k>Pk3{1-#r#-K!ldAj-fMT)^KIh~8Xy-2QI`Xz-vjwND?H*3`AKH0m}vIQT0 zL)t<>vh{pP0?nk>zC`zL(8WQNRnvyUzY;L%P1`^peJ&t?3khDY?=Y_%UqA2Bdr4;y z!Z5>UF#}3{`Tk`Ek5xJ|hPdgulwD$aVq@SgWL3k2{X$h-X0cV?DsC`W-(PUCV(#&T z-`FmKxlG1oEx@yO(y6xXr|EAJi~E%uX=MqC8^)w~G&%SLe4hfM%S4sijPHn}TWRhb z0Tf5Xg-PqtoRIlDpF1#5LnDWGB>5Is8mh;kvVL zt}dKP(=O89&~6(UjGk(a==AnI45wW&Env=?|1u)PKN1AiNu0}=^uXy3C#WqsBYH1a zQ<#4BDXsxV`BKMA5PiYf`8Y>(YZG1K*tHFA=x(((Sda$kjtH2ScSu1Tz%_c7+)HWC zLwpFv4Gm%R}y`GKiz~=?>dSwyvv!k_EXxe4~t|v{jNCsAl7y>0wGihvdP#K z3b~OhI2A!(VeF^2zwq=*ZN{z$-u{;V%}ZeOWF{wCQ9(df-AAKpHMK9~A#OdNrmaU6 zMJpR09S$#u=PYj!nj&C8nHj8YX56aU zK6sDCCHKCWwB8(|_QaOYs4{Ufu^Y(NR556tp#|l$koi|miJ4WKhsS>p7^HiUuUzj!`AEVT-Br^+i9b-VqzoLi_nho)f*DBaqXw8b7do^z_O6=|BkJ#A_yO z4k&$muaPegU0(rfI(>}}vvaM^Z6PX08O#fVsQE$rC~}}487q+S1<%Z#{YMV4_aLvp zInpCgi(b9F(zxvzH6_<{;v@xL(TJU&n?Lwa`4q5+4icH@E7odIi0(Av=VI}z7q)@jC<-Bkx0LJ(^ zh+Xn02Di?|r|uj%xiE?64B-Wxf+sXJ|D}VlC5NWcKc809Ag2+luf>MH)AYnsdznPl z&^hvZ8bnb`hFYm$kVfUZ=4w6aoLE`;&fs{zp&`qLpFu`$N7#~sdw=Zw=i9U$P4pwz z6@cOk-)?Gp2Qg*Ir&QnK@$~d`<83_*mRs#L{ktu$j4Z1zFS5O9Y{GDj-N3@KoC{;p z-Sf5V>)ct_b3_Sgs)+O7X}|#*d8vR=5OQ21DRviyGpR2!i`RkX*V}Sa1QA`2N_dX2 zr}iBQn_*2`M}D1nWWk{iK12e|NEgFQrUmrwr7E>^EZhDd?t^KPmGxe&s>5B$?vc2Q z=LU_-XGH{>9V!5MXw!@J44vbLGdohuP(%zvn9}&ynT+kme1+50a3@?E2_(*gzfc5kv5El`Wkb=^B zXR@RFj)NZxCI0CPvTe2L81NqVji25qA`d}xQaCjsR4(+`1*axc`%*RO^%5V%LVtwM z8WK78?VdC5vY@9451_jc`f&P0-jl4kNy)@<-+xU4S2*lWO0`;LvB!Mdx`(+CQw=H7 zVed?Y^RUZU4h8?A@v^3HqpER?V*VnRE|pZ=sopYB;^*Y~epuf4Ak6GX5u~WFkRKGP zv}(`mH7f9F&NR5HIX-)Vul?5P-PQ`DvVLZ4pX&kkfSMr=tN}2&!QTJ4F1Cz91K{=h z_jNVId77kiLG6vxMj?eRU15baX$_x_#wOinU5PvlQEbIz2cb_9)|4#L+z}*f-?8wy z8ntzlOfsbezjIY~QdcbV>ge<~NU}RitkUxNG9|nsm=}W;c0!S?@NOZ*Z-NQoa9Emo zv#4Ld%*JQ#l{y9CxjY@HLC9YXni*PT#OV$2NgZPP_Ye)K&y|kZ;$JVU3!zQ z>dH*GB>2ZAX-=vn<4U5id`Cj*U{p9OuZ>?~adZ4PYHmleM)WE6UW{=S$ z0$oh|DNq4yf1m?3!Mu7Ec(vAV(-}rJx&S)~yJ{Bj&h`)!2jzyIAWn)9wg(u^4x;)n zzWANRj_#N@c$Dagp0-XLL;zYgM8A5VgKyPp>ohzWlCZ*Ol znsqZ|=;-uC_2Vcy=<7s(>^ney!5N))t$Gxl9~{O67e%JfeJ6=yNe>vO@wI$>I^x9h z>EJ@t{L>LlA03?A)b8bSFd6WbH)3P2yw7l-3Hv_uD#%-g*Ho>F);4MWlY^yW2N}JT z+V>#^ep#<@+C6Y#N-$ToHj@DVN_JS84Tc+C5+VV%?LZ*5^nt9xLotXNcd|=*`U{8H zQhgEnXd9$+u&kd@r9)voa;BB&~7+_RK-J2@A+U~U()**#*|WQN%L?OXx_fFcTV9{qLInP)bSo; z=2+;_r3Cnfz+Bl#o^Acu^# z?Fqq{!8sWaYi-l%Bzm>;;aJ6?(4wJwB%YQZW7guV=ip%<j!I)i>d=+UR-%d4Fb!R6^*LH^mY#6LDbSyoWasfGwg zuv(1jGokE{L{?pt4W>Nfg{6Sry*l*O%Y@aNr7~0ZM6e3b6i(kN8JwX{haQ3>^a}XY zSC@)72asMK9B7bD3O?ZmUuPE-+9G%Q(3C=HAT6gua-2?T6r?yaMoV3SFM0L^JJ|M` zPoWe){kl#+*2&q)*4F&E?Hj0sdQ}5q4&|Z7OIm`z-Ib6h5gLg_6}Uw>{&IXto)Ea z&g$=z+OJ(<3PL^A^4RlgO(yzQ$yd4am;2s4e-9c&3W+%b@o~SHjMfNuV{Dvt+>MI= z#joJl@4S@le1~`{Yo3cX&KkfhGNhM}RvxL#i5>~+u*y7#+fZrlrc6+#+;=T*Xb`L2 z(bE6gvD=^DzyD4z&a}3Ob8M+U>-;cHzSb!> zsSW8fB(8PxVtYcs{=)5}h6amRwHFAI(Vpd8qoCApFnJ9_b6)(n>{>{4F#M(FvP7xi zf)jqmv~cew?AM9=#pvn%Tdy>o!XASc&p)FTcKQjpr|BVxN3i(6;XD$%&zV*}Z)ta3 z5OsJ%F&YJ}i?P9@jaN9%^(SH1+#;L=?u%aH{wOZQ@g|!C9rvvonIVq5d;Q>S0xA{J z1Y>JQo}~DoV*~`1Mg{Hr6@-qMHAN1ulc~iZzQpx~)KYSdyJbjslB0J4aiUX#y_?kt zR|~EPm1tW9OOm>cvi}dnrz!3jc?OJ`mF;T|5&#kWK7|n-fLgN$h`p_Q=($LeWPMmG z#aM7^@fmhDlG?0bpTBV!6>ty^klnXSDG00Cu-pl18flMhdcN*E(|!jsBee9nFKCz{ zaA?yQ^ovJ{hH!au2egh!;ancpteO)~ED0Uf01Mp*XHaYi>Y!9*VUdj0~?Ii73TU7HiLF&k~b`Jhj;6L!-{ z^ET;8d?qY6bYJ|YZN6*O(z|m_P#ZIl{8#(XoX}I>MxzdmqWi6z@TyS2DFVn2tRB3A zV^$!VoHeC3y|^^N&U~%J7tY7BTDVk-IQDNoY~vN!}6K`~3Q7 zoW)Hm7S;x^PBC5(eCFAA=Ylt^Xxw2q7vR_mkl1yvC}_pYmd3eBW*Y4W;x8%D?})~* z2}4G|uz_(P<#Z~H+aSbcI0hl)WlWIp8(@Tm{@4lTmCdRb)Ok6Gq|4t7s+;d6jn$>N z5eJuQ6RTEz(7*8ymV#XzG7m&I#s6yyL^`GG6rorw5JL2Bsv|f^Fa_NwLbC2X*dLqiFK<6Sc{^J;rVtWlps1#6Yz(nmxHvp! zm64HAcW{8@H*8GbU2e-+S~DnT6?+y1OBVADTT8p-c}OW zdy9#O<`(>ZuZtRnYcR-*mFVqgp*=*?NdzBRf1s1PyH<*(Cs0G+>WXdj#9$L!BFsY* z4BavMv}uG!2C@5bWL*2Z{!roKhKQUS&x#-FR_(bM)VBMl&d2gZ)m`IT^%^(yejnqY z&{t<@$CF0E&x{II);`RjV&wb=3qB7ozTP@Fgx422m5AYdQt0xOnfhPBZ$|o4Ty&wm zKH)|WXE>(YpbSulY}=HKjE7$js$r3!^iK}Ll{`OG zl_9k@stk9Wx|Vjvb;E3sK0}6p*;zlRgE6)(PY?f$J0g`>D1eI??#H25GsoDjjO)%hLhWw#hMiBJDJ$wKy$y?f#tKkE5>*LmUK&b* z|L6|dTwx^p@M7!;EQsabolr8XkyO~Qe>G9?P&MNCQ^}^ydmvjKfW5|%oQJKZj3STQ zfhyAand50|82Vc@4U4N9{BMCVm1|fdlAUMCD`t;h$F5;Q9C#8lgvqpx@4=oe6WdU~j zMcTA;GO{+)RH2(|lT-N%m)zH#r5P^es zYCb5SqxE8Au;cV~(Yr4Aya4hs=q9Qsrc z?&z-F{9<0C|L*XA;vd%=j#Ivacy|2;$y}+dPg12dW>F)-G$SXR#uK52-q9^T$Vz!c z(Qp%4)P8~mu9uT3-VCtB7yirP*TaqRQ7f!8k5nN!X8H|~HahNSS5OXhn`feKwm_y7 zwMy;K#%N%=rgfJ>?J~H2_orC5qIs!2bFl;gCgkAC^xxY2udH7idog%RHG+~*(`x-i zn`AVRqaQ1Ob6q?@?*Xc%1_7Cc9F48 zgM0N~^1Ob0v*LddRPcN6O|J@#K2kD!cW8-Sn;m$`6Bgm$3?hU}{Dpl;5&Hij6LL8< z>U%>(!q!L!F*-!5ccdz8+>Zm5Q1esUWa~ToSxp(gmxRb;Uio=k6R93SHkH~tLMU=Ktq3?2nOAF^Sz zqdw^#2oAmNt0eR@HzvFoS{w|U16-%2BV}pn6Z^geL~-ZjBjxTSPTnLJmGt4rFdRXk z8TUlJ`kppd>jYKt+K&?PfY~m2hVM0HB?>`$LGZ$Cw}OzPmy(m!;mc{b$VcPCjlR&Z z&400kekPz#tx*F1tO0toRq<7v?NnJ-q9_ZuTBf2hvQ(xLj*8k2rD$2}P`<_$8m4&~ zs@V{Db;{@OwNFii%k7}~{YSk6gBbtCJjS$H|Kn;O!jVLLlopU4)h=mZEMIEPw0anG z@r~0z4(V-2$rf67hEj8#AemtunmT*cUd9H63v`*Rcn^%F!w4#uLyZNLE@VfC5(B@{ z%G>RjaGQ(L8LJ2PuG4+C9cU$ZA2U(S>_9MQ0@Y_^$bBZ2=Gp{~(4^9c^u*Olj}Ll& z-&Q;do*!aE@KUcX^Ig;1kKZSBoKKE`6hQxtG*Q1G5{BNFM?K%*n>tBrX*u5tARr{An8-2j-W9{B4Mcn3TDPa__?r5L$NmdHkJjL&df5@whqQ1GcK{#L&2){1Mi zF%~8_P6NahVgt%=e{p|!Wm%>Ya=mSpt2-BdG(CebWgSt63%#vwM10Np`sTr>xYnXg zY-wJqZIcTP<9qqb2(3ZyjpK&uOB5|?Z)bDV)Arv%qYidDi(ab7ONTN4tVtNm24rB? za-@Z%wlwjP4AYvnTGez+Pmz&uZ<8ON=VtTsASE=OLJsv=FRp0@kI3{qO8Kr3|3u)v z*VcEMvI1s((o_oxS*t7Q2$ZpgQ1);E?RYX|8sEHJBn)!FzMLR_e_sdyK|qv9tr<$<%e(mL!>R_Ws|#c{I$aPbJYm9fbcv)8U68uU3%s-3#wnEiLY#mGC4&tDB!J&hT+ zwAo^IX(fFwS{VKV%VeA_f>!b{(c;N=o{J~vdbrS5!zuZ> zzwtA{znH^bE(%aH<~xl%e7S9#4L^i;@Em(R)Zm?Y`|k)&*JlE}AYVPJEr*NqKay3S zTKCS{3Vyv_r2Ep!+|N=h`|+G}5HaU#b-23_<4gO&hg`Jm4z z;`=)vc1iJ#X`0u&Pz8ckyO1!HewzQ->$)rPu+}sBw#n)xPHMF2kn#=eu2xj&>3_FD zxQ9%1|AO+c3ZpLzsjrn{N}8xQD)H!XI38u|8E~<#b}63C`Z|&X^~<(1C0usuy7QCmCik8`58df(@q}{lovd9OqbuM3 z`NgovH-v_NbQqt{=}+;^gU_ctCjFZd-vdCmxJ3Lh6dG}x6FK_Rn&fRv_5(*$EZuJg zbtE_Yso6g3Mnu?o4mI_7+!=bw(=r9AqdfY5Rb6>FlwBJi5sA_(c`b!#v1aTgj8{ZO zQzOQ{iwJKt!(e6zm9d7Ryv90qgY5gXSR!i-*`|_g!U=&Zp$vXI_^VC zEn9!#cZX z59*LzVhQ+8Fg`)$#NnrMIDb-Mv0vY?Ms*+2&(r>OP@f@Y8;HxHlI4ocl8Ize$55s~ z(kM!JY`A6jW&Fx|f9X2RqE3=IE?_^YO3PdGxo2Q*7NDjX3p+7O(;pOM-Fx*){MDH0+t&H+Rw}rmvh1a(tB77(L`mf(^%{k?EOjdd)OgHPi z;)zCyy@eVGCnjK5LklZsVgBikJ-kkBSTZkW?gw64$pTnA`ngY?rLmf3A)BeR>@w}& z%J6s-V47OSdUJT)a56BJkDFvRedzc?(0y$`WqN6S#MGK4U*ViXNIirJ&77q)A83=W z3MA+P;m2{C^&ueP6*wC){dS>uvL!#gnl=+ckMfK?-8IJ>W7KTQ4SAm9nq`HLc8yk8 zxEh62#qNGPAsIZ_>C5spvscnArqbq>xz#P%)tY1&MUyH0MZ4qXh|4dwDCDjTbd$Ww z(+FiQ+xN%5pyckqoY%rDYq6a5E0!f5#q)6Ya&nBQDW6vq23e^S7ICwVx-+=!;Why9 zk`=}gJ(lYjw!LEr6*+vlP?n9$>>jQWGPU>=w*Eo*$`FP+tJQJr1@IM58_Do>sA|ne z_y;UU7JY&h1xxPuzesD3C19G-cSK$(g-2Yww8UV?6_gACQ;4 zk~)O`zCBP(!M*kqDb?5_4VhQug$k6LGE(0r+Ktv)c&{|ki9b*`^40q;23r&_=4c&^ z3P1YTx9U%e74flZYCKPYQp@~x3KJadg5j3s9!REGe~0n~1BJhWxdl@0H&cl)dThKoe=_4}G#jdbK!pe(H-HYt7u?%LsiQPbK*)JR zjJk4?uNBe>X?8naDmL8i!)qB^>E~jhN8knKLPt`r6Z&?2mb4gtwr!}Lh&GJ2z1jtH zDs3ERwTmQrP2ZSSZM)a^t$oLqTpG$sbqwa0MYgVPp36)eUlihO7`y5eo)i`CQiunJ zIE53cHSpBX1R%914;y4njN8jMaRR7)R(k%*AdPG={w~dQ%Pw(41jQ4-9$85ij#Zfmd!T}9U4JL$9gO*0SAMX$D1zcz}uUsHz{JpC9ER9 zk6)f^9%J}ChWWYZ@zq9B{ELSV72ZDs112h1-!og}5j?-O1SU~4BDd%T90il*=&U} zGVX_$q0ic=j+myY-@`2BsKt-77(405vKe!`79NW-i}4sHhOyA>u_V! z1@RbHeuB$0m>%>&R>-L1bAfR)T}|nZ`_kjC?3OC{Iv8 za^aNaSLfV$m-VCa-55b+8TKxM*yQTtEM+V|JHrMf3D5i!@CIF*9dt#VjmXiH*ewr- zPVi$Z&ODtfo%&tLwm;RYtNq^$UXc1pd?!7zOwb?COfil zhVMkROI8671TaMpKlc?Sz02kk9umE4nr@{P@|72kXII+#mPt@-vTGhY@#lq_uve)Y zCz-^B0xijJZ0`Q#Cp6JmkFL1@1`NC!^2UN8j|Jjzo{n7vV%7aTc=LOq?=oA`*Goqk=@<75pUL8NiC> zTdZB4FDqenB}mTGCWGh5ZByu}ZVHwrCz!p3r?2WtM!YGxQ`O$3(-6+Vx?JZ+qfIs| zjn)u2WhFMJEPjvBRT-c}*zq&Ci(-5jvF%|8y`jYG;c|@#Ih^VNu9kE-apCjoBqwJJ zItU-cic=ABMOrdwy*xs6&-;ZlV_W7gF9-gZjPkH!6n~;HGq8rO1@0Y%*Y^?yie_(j z&58owSjL(jv^)OsrW~pBFNg`PGZJ`9LsIs!g8g@lU#t0dPYHf|sTg9%JTDdVUj!9CvGYWisFA4>b^?mc0gj(1@|wyn z4FD;Ts)Afw(|yEHKM&t`xq;g`&fmT>`!0I@b?*63-m-(Xb0@Dn$!v@xRvmXO^P@CnG`@4hVJpm2v4-wbA%b5xF{GTK` z+&0ira!ZXnMf32KKSjOz-t&E1w7CG!FgFYi5~&yQHsZe}HUMS7a=^uxPXU<8tq zM1eD^;|p7&ga0&3MO}kzuHk2CUb#m-KC~XUQ6#=QL*}f<{_Ezl#zuS2@f!JKqth$t zU`DA%HH0IQ?SQ7_sZqy0Ez)Hc zw`>2~T!7_CPIF;V$WF73mwnYWwTHdqYM_^vE0pD$xhYy-_4TMWwZ%YiJp*V~j@iee zvY2#9?9V`@HE45T5rLp>zVsDt;r#CJ#8Irrv$oegRyI3Zg3)S`^8(31Oc{*9?Y>KwmhRIfQF@z0a7NwCxj`HSr#fW#781$`k!0EU^bG$nQ^xf4 z+*Q29e01%TM{G%1iF;^(%)&!4$n1G`f(-IGZ1`<#=S98RmS?hzIoQo+zvC!S=C#N{sX=gct8V>+z?0WCYuA zg7l9oUD-SR;R@H0izD*O=l1%qVcLaV>V?jJFyGGP0*QG~O}E|17}z%P|FmfXhMz^$ z&?@PO+H06|TS?z9eDGPcUL^$~i36tOU-HR>00G0W+FGS{4=N5mwc79FM~kwVls^Lh;M7`*@BP;;&Uv~f-(R>%o#~u z1%bk%#1t59masZ4FD4Ig``AW!ivt7#9T#K)7pLql`Gr#cu50VGybLBn-aJEQ&%O7vKpK?mM~zm`T#HBJ8&z>i=w) f&6Wh-2`?%mn_?3bg=9_ucc5!VHw}pfPLKWr3mu_K diff --git a/docs/contents.rst b/docs/contents.rst index 1ab54886a3..d8cfcbbc36 100644 --- a/docs/contents.rst +++ b/docs/contents.rst @@ -1,8 +1,8 @@ .. _contents: -================================= -Mayan EDMS documentation contents -================================= +======== +Contents +======== .. toctree:: :hidden: diff --git a/docs/figure_src/indexes.svg b/docs/figure_src/indexes.svg deleted file mode 100644 index f08d8ab0fd..0000000000 --- a/docs/figure_src/indexes.svg +++ /dev/null @@ -1,513 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - Database - Index templates - Documents - Generated indexes - Disk - Directory tree(that mirrors an index) - - - - File servingsoftware - - Mayan EDMS server or cluster - - Clients - Networks attached drivers - - - - - - - - - Continuous synchonizationof generated indexes anddirectory tree - Document usage with existing software - Users don't needto learn new software - - - diff --git a/docs/index.rst b/docs/index.rst index d51f9b38e1..960e11e2e2 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -37,7 +37,6 @@ First steps :doc:`Overview ` | :doc:`Features ` | - :doc:`Requirements ` | :doc:`Installation ` | :doc:`Getting started ` @@ -45,7 +44,6 @@ Understanding Mayan EDMS ======================== :doc:`File storage ` | - :doc:`Initial data loading ` | :doc:`Permission system ` | :doc:`Transformations ` | :doc:`Document visualization ` | @@ -68,7 +66,7 @@ Customization and fine tunning For developers ============== - :doc:`Development ` | :doc:`Documentation ` | :doc:`Translations ` + :doc:`Development ` Credits ======= diff --git a/docs/releases/0.12.2.rst b/docs/releases/0.12.2.rst index 05335fa9b8..e8e4c83f35 100644 --- a/docs/releases/0.12.2.rst +++ b/docs/releases/0.12.2.rst @@ -16,7 +16,7 @@ check outs have been added too as per the feature request posted as `issue #26`_ The way the history events for a document are presented has been improved and it is now more useful as it provides filtering by event type. To improve the diagnosis of installation of runtime error a simple view showing the -number of internal interval jobs being used by Mayan EDMS as well as a +number of internal interval jobs being used by Mayan EDMS as well as a new app which shows a detail of the current installation enviroment were added. What's new in Mayan EDMS v0.12.2 @@ -35,9 +35,6 @@ created an administrator account of username 'admin' with a password of 'admin'. The new default is to randomize an initial password and show this password at the login screen until the administrator password is changed. -.. image:: mayan_first_login.png - :alt: First login dialog - Document check outs ~~~~~~~~~~~~~~~~~~~ As per the feature request filed under `issue #26`_, a new document @@ -47,7 +44,7 @@ editing conflicts. Document check outs have an expiration period after which **Mayan EDMS** will automatically check them back in to avoid a permanent document lockout. Only the user who has checked out a document can upload new versions of it or check the document back in before the expiration period, -unless being granted the ``Allow overriding check out restrictions`` or +unless being granted the ``Allow overriding check out restrictions`` or ``Forcefully check in documents`` permission respectively. Installation environment app @@ -109,7 +106,7 @@ Bugs fixed * `issue #26`_ "checkout feature request" Stuff removed -============= +============= * Feedback app diff --git a/docs/releases/mayan_first_login.png b/docs/releases/mayan_first_login.png deleted file mode 100644 index af31f23f80841b89f7855bbb15969b53d94857e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14727 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

Z;!ER#(4VTLhs< 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 OK=RTm;0j685C03cs?I+E diff --git a/docs/topics/contributors.rst b/docs/topics/contributors.rst index 2871425553..4dccce5123 100644 --- a/docs/topics/contributors.rst +++ b/docs/topics/contributors.rst @@ -8,7 +8,7 @@ Contributors How to contribute? ------------------ -You can help further the development of **Mayan EDMS** by reporting bugs, submitting documentation, patches, with monetary or hardware donations. +You can help further the development of **Mayan EDMS** by testing, reporting bugs, submitting documentation or code patches. Lead developer -------------- @@ -33,59 +33,3 @@ Contributors (in alphabetical order) * Sergey Glita (s.v.glita@gmail.com) * Simone Federici [https://twitter.com/aldaranalton] [https://github.com/simone] * Webfaction (https://www.webfaction.com) - -Translations ------------- -* Bulgarian - - - Iliya Georgiev (ikgeorgiev@gmail.com) - - Pavlin Koldamov (pkoldamov@gmail.com) - -* Dutch (Netherlands) - - - Lucas Weel - -* French - - - Pierre Lhoste (peter.cathbad.host@gmail.com) - - PatrickHetu (patrick.hetu@gmail.com) - -* German (Germany) - - - Tetja Rediske (tetja.rediske@googlemail.com) - - Tilmann Sittig (tilmann.sittig@web.de) - - Manticor (sl@suchreflex.de) - - Mathias Behrle - - Tobias Paepke - -* Italian - - - Pierpaolo Baldan (pierpaolo.baldan@gmail.com) - - SeeOpen.IT (Numero Verde: 800.910.125, E-mail: sales@seeopen.it) - - Carlo Zanatto - -* Polish - - - mic (diveaway12@gmail.com, winterfall24@gmail.com) - -* Portuguese - - - Vítor Figueiró (vfigueiro@gmail.com) - -* Portuguese (Brazil) - - - Emerson Soares (dev.emerson@gmail.com) - - Renata Oliveira (renatabels@gmail.com) - - Fábio (bnafta@gmail.com) - -* Russian - - - Sergey Glita (s.v.glita@gmail.com) - -* Slovenian (Slovenia) - - - kontrabant (kontrabant@gmail.com) - -* Spanish - - - Roberto Rosario diff --git a/docs/topics/development.rst b/docs/topics/development.rst index 5744691204..b01000866a 100644 --- a/docs/topics/development.rst +++ b/docs/topics/development.rst @@ -7,13 +7,235 @@ Development If you have a feature request, suggestion, or bug reports, please open a new issue on the `GitHub issue tracker`_. To submit patches, please send a pull -request on GitHub_. Contributors are credited accordingly on the :ref:`contributors` section. - -Follow the coding conventions document available at: https://github.com/mayan-edms/mayan-edms/wiki/Coding-conventions +request on GitHub_. Make sure to add yourself to the :ref:`contributors` file. .. _GitHub: https://github.com/mayan-edms/mayan-edms/ .. _`GitHub issue tracker`: https://github.com/mayan-edms/mayan-edms/issues +Coding conventions +------------------ + +Follow PEP8 +~~~~~~~~~~~ +Whenever possible, but don't obsess over things like line length. + +.. code-block:: bash + + $ flake8 --ignore=E501,E128,E122 |less + +Imports +~~~~~~~ + +Import order should be: + +- Standard Python modules +- Installed Python modules +- Core Django modules +- Installed Django modules +- Mayan EDMS modules +- Local imports + +Example: + +.. code-block:: bash + + from __future__ import absolute_import + + # Standard Python library + import base64 + + # 3rd party installed Python libraries + import requests + + # Django core modules + from django.db.models import Q + from django.template.defaultfilters import slugify + from django.utils.translation import ugettext + from django.utils.translation import ugettext_lazy as _ + + # 3rd party installed Django libraries + from rest_framework import APIView + + # Mayan apps + from metadata.classes import MetadataClass + + # Local app imports (relative) + from .conf.settings import ( + AVAILABLE_INDEXING_FUNCTIONS, + MAX_SUFFIX_COUNT, SLUGIFY_PATHS + ) + from .exceptions import MaxSuffixCountReached + from .filesystem import ( + fs_create_index_directory, fs_create_document_link, + fs_delete_document_link, fs_delete_index_directory, + assemble_suffixed_filename + ) + from .models import Index, IndexInstanceNode, DocumentRenameCount + +All local app module imports are in relative form, local app module name is to be referenced as little as possible, unless required by a specific feature, trick, restriction, ie: Runtime modification of the module's attributes. + +Incorrect: + +.. code-block:: bash + + + # documents app views.py model + from documents.models import Document + +Correct: + +.. code-block:: bash + + # documents app views.py model + from .models import Document + + +Dependencies +~~~~~~~~~~~~ +**Mayan EDMS** apps follow a hierarchical model of dependency. Apps import from their parents or siblings, never from their children. Think plugins. A parent app must never assume anything about a possible existing child app. The documents app and the Document model are the basic entities they must never import anything else. The common and main apps are the base apps. + + +Variables +~~~~~~~~~ +Naming of variables should follow a Major to Minor convention, usually including the purpose of the variable as the first piece of the name, using underscores as spaces. camelCase is not used in **Mayan EDMS**. + +Examples: + +Links: + +.. code-block:: bash + + link_document_page_transformation_list = ... + link_document_page_transformation_create = ... + link_document_page_transformation_edit = ... + link_document_page_transformation_delete = ... + +Constants: + +.. code-block:: bash + + PERMISSION_SMART_LINK_VIEW = ... + PERMISSION_SMART_LINK_CREATE = ... + PERMISSION_SMART_LINK_DELETE = ... + PERMISSION_SMART_LINK_EDIT = ... + +Classes: + +.. code-block:: bash + + class Document(models.Model): + class DocumentPage(models.Model): + class DocumentPageTransformation(models.Model): + class DocumentType(models.Model): + class DocumentTypeFilename(models.Model): + + +Strings +~~~~~~~ +Quotation character used in **Mayan EDMS** for strings is the single quote. Double quote is used for multiline comments or HTML markup. + + +General +~~~~~~~ + +Code should appear in their modules in alphabetic order or in their order of importance if it makes more sense for the specific application. +This makes visual scanning easier on modules with a large number of imports, views or classes. +Class methods that return a value should be prepended with a ``get_`` to differentiate from an object’s properties. +When a variable refers to a file it should be named as follows: + +- filename: The file’s name and extension only. +- filepath: The entire path to the file including the filename. +- path: A path to a directory. + +Flash messages should end with a period as applicable for the language. +Only exception is when the tail of the message contains an exceptions message as passed directly from the exception object. + +App anatomy +~~~~~~~~~~~ + +- __init__.py + + - Generic initialization code (should be empty if possible) + +- api.py + + - File to hold functions that are meant to be used by external apps. + - Interfaces meant to be used by other apps that are not models or classes. + +- classes.py + + - Hold python classes to be used internally or externally. + - Any class defined by the app that is not a model. + +- diagnostics.py + + - Define functions that will return the state of the data of an app. + - Does not fixes the problems only finds them. + +- events.py + + - Define history type events + +- exceptions.py + + - Exceptions defined by the app + +- icons.py + + - Defines the icons to be used by the links and views of the app. + - Imports from the icons app only. + +- links.py + + - Defines the links to be used by the app. + - Import only from the navigation app and the local icons.py file. + +- literals.py + + - Stores magic numbers, module choices (if static), settings defaults, and constants. + - Should contain all capital case variables. + - Must not import from any other module. + +- maintenance.py + + - Hold functions that the user may run periodically to fix errors in the app’s data. + +- permissions.py + + - Defines the permissions to be used by links and views to validate access. + - Imports only from permissions app. + - Link or view conditions such as testing for staff or super admin status are defined in the same file. + +- statistics.py + + - Provides functions that will computer any sort of statistical information on the app’s data. + +- tasks.py + + - Code to be execute as in the background or a as an process-of-process action. + +- utils.py + + - Hold utilitarian code that doesn't fit on any other app file or that is used by several files in the app. + - Anything used internally by the app that is not a class or a literal (should be as little as possible) + +Views behavior +~~~~~~~~~~~~~~ + +- Delete views: + + - Redirect to object list view if one object is deleted. + - Redirect to previous view if many are deleted. + - Previous view equals: + + - previous variable in POST or + - previous variable in GET or + - request.META.HTTP_REFERER or + - object list view or + - 'home' view + - fallback to ‘/’ + - if previous equal same view then previous should equal object list view or ‘/’ + Source Control -------------- @@ -36,11 +258,13 @@ Git branch structure Current production release (|version|). ``feature/`` Unfinished/unmerged feature. +``series/`` + Released versions. Each release is tagged and available for download on the Downloads_ section of the **Mayan EDMS** repository on GitHub_ -When submitting patches, please place your feature/change in its own branch prior to opening a pull request on GitHub_. +When submitting patches, please place your code in its own ``feature/`` branch prior to opening a pull request on GitHub_. .. _Git: http://git-scm.org .. _`Successful Git Branching Model`: http://nvie.com/posts/a-successful-git-branching-model/ @@ -148,6 +372,11 @@ lines to your ``settings_local.py`` file:: 'propagate': True, 'level':'DEBUG', }, + 'common': { + 'handlers':['console'], + 'propagate': True, + 'level':'DEBUG', + }, } } @@ -163,3 +392,35 @@ Likewise, to see the debug output of the ``tags`` app, just add the following in .. _`logging capabilities`: https://docs.djangoproject.com/en/dev/topics/logging + + +Documentation +------------- + +**Mayan EDMS**'s documentation is written in `reStructured Text`_ format. + +The documentation lives in the ``docs`` directory. In order to build it, you will first need to install Sphinx_. :: + + $ pip install sphinx + + +Then, to build an HTML version of the documentation, simply run the following from the **docs** directory:: + + $ make html + +Your ``docs/_build/html`` directory will then contain an HTML version of the documentation, ready for publication on most web servers. + +You can also generate the documentation in formats other than HTML. + +.. _`reStructured Text`: http://docutils.sourceforge.net/rst.html +.. _Sphinx: http://sphinx.pocoo.org + + +Translations +------------ + +Translations are now being handled online via the **Transifex** website: https://www.transifex.com/projects/p/mayan-edms/. +To create a translation team for a new language or contribute to an already +existing language translation, create a **Transifex** account and contact +the team coordinator of the respective language in which you are interested. + diff --git a/docs/topics/document_visualization.rst b/docs/topics/document_visualization.rst index 3deb63fe1b..9e7eb6a4c6 100644 --- a/docs/topics/document_visualization.rst +++ b/docs/topics/document_visualization.rst @@ -28,13 +28,6 @@ or frames, and text extraction and OCR is done per page not per document, thats why even text documents need to be rendered by LibreOffice_ before they can be previewed and text can be extracted. -Version 0.12.1 introduced a new method of converting office documents, this -new method doesn't require the use of the command line utility ``UNOCONV``. -This new method proved to continue working better than previous solution -and the use of ``UNOCONV`` have been removed. Existing conversion method -uses just one configuration option: :setting:`CONVERTER_LIBREOFFICE_PATH` -which defaults to '/usr/bin/libreoffice'. - .. _PDF: http://en.wikipedia.org/wiki/Portable_Document_Format .. _LibreOffice: http://www.libreoffice.org/ diff --git a/docs/topics/documentation.rst b/docs/topics/documentation.rst deleted file mode 100644 index 9c6af6e058..0000000000 --- a/docs/topics/documentation.rst +++ /dev/null @@ -1,21 +0,0 @@ -============= -Documentation -============= - -**Mayan EDMS**'s documentation is written in `reStructured Text`_ format. - -The documentation lives in the ``docs`` directory. In order to build it, you will first need to install Sphinx_. :: - - $ pip install sphinx - - -Then, to build an HTML version of the documentation, simply run the following from the **docs** directory:: - - $ make html - -Your ``docs/_build/html`` directory will then contain an HTML version of the documentation, ready for publication on most web servers. - -You can also generate the documentation in formats other than HTML. - -.. _`reStructured Text`: http://docutils.sourceforge.net/rst.html -.. _Sphinx: http://sphinx.pocoo.org diff --git a/docs/topics/faq.rst b/docs/topics/faq.rst index 7b9a9d3a37..d35da8698a 100644 --- a/docs/topics/faq.rst +++ b/docs/topics/faq.rst @@ -4,15 +4,12 @@ FAQ Frequently asked questions and solutions -Database related ----------------- - **Q: PostgreSQL vs. MySQL** Since Django abstracts database operations from a functional point of view **Mayan EDMS** will behave exactly the same either way. The only concern would be that MySQL doesn't support transactions for schema modifying -commands. The only moment this could cause problems is when running +commands. The only moment this could cause problems is when running South migrations during upgrades, if a migration fails the database structure is left in a transitory state and has to be reverted manually before trying again. @@ -49,16 +46,13 @@ When using ``MySQL`` and doing OCR on languages other than English - Ref: 2- http://markmail.org/message/bqajx2utvmtriixi -**Q: Error "django.db.utils.IntegrityError IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`...`.`...`, CONSTRAINT `..._refs_id_b0252274` FOREIGN KEY (`...`) REFERENCES `...` (`...`))') +**Q: Error "django.db.utils.IntegrityError IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`...`.`...`, CONSTRAINT `..._refs_id_b0252274` FOREIGN KEY (`...`) REFERENCES `...` (`...`))')** * Solution: - Convert all MySQL tables to the same type, either all MyISAM or InnoDB -Document sharing ----------------- - **Q: File system links not showing when serving content with ``Samba``** * Solution: @@ -82,9 +76,6 @@ Document sharing - Ref: 1- http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html -Document handling ------------------ - **Q: How do you upload a new version of an existing file?** * Solution: @@ -97,9 +88,6 @@ Document handling -Deployments ------------ - **Q: Is virtualenv required as specified in the documentation?** * It is not necessary, it's just a strong recommendation mainly to reduce @@ -125,9 +113,6 @@ and https://docs.djangoproject.com/en/1.2/howto/static-files/ or http://mayan-edms-ru.blogspot.com/2011/11/blog-post_09.html -Other ------ - **Q: Can you change the display order of documents...i.e can they be in alphabetical order?** A the moment no, but it is something being considered. diff --git a/docs/topics/features.rst b/docs/topics/features.rst index 91df08e290..41c0b33314 100644 --- a/docs/topics/features.rst +++ b/docs/topics/features.rst @@ -28,10 +28,6 @@ Features * Metadata fields can have an initial value, which can be static or determined by an user provided Python code snippet. -* Filesystem integration. - - * If enabled, the document database index can be mirrored in the filesystem of the host and shared via Samba_ or any other sharing method to client computers on a network. - * Documents can be uploaded from different sources. * Local file or server side file uploads, multifunctional copier, or even via email. @@ -40,7 +36,7 @@ Features * Clone a document's metadata for speedier uploads and eliminate repetitive data entry. -* Previews for a great deal of image formats, including PDF. +* Previews for a great deal of image formats. * **Mayan EDMS** provides different file conversion backends with different levels of functionality and requirements to adapt to different deployment environments. @@ -70,7 +66,7 @@ Features * Multilingual user interface. - * **Mayan EDMS** is written using the Django_ framework, which natively supports Unicode. Together with the use of text templates **Mayan EDMS** can be translated to practically any language spoken in the world. + * **Mayan EDMS** being written using the Django_ framework, can be translated to practically any language spoken in the world. For a list of translated languages have a look at Transifex_. * :doc:`Multilingual OCR support <../topics/ocr>`. diff --git a/docs/topics/index.rst b/docs/topics/index.rst index ca94d117fd..aa54ee9b10 100644 --- a/docs/topics/index.rst +++ b/docs/topics/index.rst @@ -8,24 +8,20 @@ Introductions to all the key parts of Mayan EDMS you'll need to know: contributors development - documentation document_visualization faq features file_storage getting_started indexes - initial_import installation license ocr overview permissions - requirements settings signatures smart_links tags transformations - translations versioning diff --git a/docs/topics/indexes.rst b/docs/topics/indexes.rst index a1c6bd66c9..edf3a23007 100644 --- a/docs/topics/indexes.rst +++ b/docs/topics/indexes.rst @@ -29,35 +29,6 @@ branch of the index evaluated against the metadata and properties of the documen .. image:: ../_static/index_instance.png :alt: index instance -Index serving -============= - -Indexes can be mirrored to the operating system filesystem -using the configuration option -:setting:`DOCUMENT_INDEXING_FILESYSTEM_SERVING`. - -``settings_local.py``:: - - # Supposing the 'Sample index' internal name is 'sample_index' - DOCUMENT_INDEXING_FILESYSTEM_SERVING = { - 'sample_index': '/var/local/document/sharing/invoices/', - } - -This creates an actual directory tree and links to the actual stored files but using -the filename of the documents as stored in the database. - -.. image:: ../_static/indexes.png - :alt: indexes diagram - -This filesystem mirror of the index can them be served with Samba_ across the -network. This access would be read-only, with new versions of the files -being uploaded from the web GUI using the document versioning support. - -The index cannot be edited manually to protect it's integrity, only changing -the rules or the metadata of the documents would cause the index to be -regenerated. For manual organization of documents there are the folders, -their structure is however flat, and they have to be manually updated and -curated. .. _Samba: http://www.samba.org/ diff --git a/docs/topics/initial_import.rst b/docs/topics/initial_import.rst deleted file mode 100644 index 1efdb3b829..0000000000 --- a/docs/topics/initial_import.rst +++ /dev/null @@ -1,24 +0,0 @@ -==================== -Initial data loading -==================== - -Bulk user import ----------------- - -As well as providing bulk document import functionality **Mayan EDMS** also -includes a management command to import a large number of users -from a CSV file. The command line options for this feature are as -follow:: - - $ mayan-edms.py import_users --noinput --password=welcome123 --skip-repeated user_list.csv - -The CSV field order must be: username, first name, last name and email, any columns after -those are ignored. - -**Optional arguments** - -* The ``--noinput`` argument skips confirmation and starts the import immediately. -* The ``--password`` argument allows specifing what default password will be assigned - to all the new users that are imported. -* The ``--skip-repeated`` tells the importer to not stop when finding - that a user already exists in the database. diff --git a/docs/topics/installation.rst b/docs/topics/installation.rst index 91b7588c9b..0a43c02cf4 100644 --- a/docs/topics/installation.rst +++ b/docs/topics/installation.rst @@ -2,24 +2,20 @@ Installation ============ -Ubuntu, Debian or Fedora server -------------------------------- - **Mayan EDMS** should be deployed like any other Django_ project and preferably using virtualenv_. Being a Django_ and a Python_ project familiarity with these technologies is required to understand why **Mayan EDMS** does some of the things it does the way it does them. -Before installing **Mayan EDMS**, the :doc:`binary requirements ` must be installed first: +Before installing **Mayan EDMS**, the binary requirements must be installed first. + +Ubuntu +------ If using a Debian_ or Ubuntu_ based Linux distribution getting the executable requirements is as easy as:: - $ sudo apt-get install python-dev gcc tesseract-ocr unpaper python-virtualenv ghostscript libjpeg-dev libpng-dev poppler-utils -y - -If using a Fedora_ based Linux distribution get the executable requirements using Yum:: - - $ sudo yum install -y git gcc tesseract unpaper python-virtualenv ghostscript libjpeg-turbo-devel libpng-devel poppler-util python-devel + $ sudo apt-get install libjpeg-dev libmagic1 libpng-dev libreoffice libtiff-dev gcc ghostscript gpgv python-dev python-virtualenv tesseract-ocr unpaper poppler-utils -y Initialize a ``virtualenv`` to deploy the project: @@ -128,11 +124,11 @@ Production use To create a custom settings file for **Mayan EDMS**, create a Python (.py) file in the directory: venv/lib/python2.7/site-packages/mayan/settings/ with the following basic content:: - # my_settings.py + # venv/lib/python2.7/site-packages/mayan/settings/my_settings.py - from __future__ import absolute_import + from __future__ import unicode_literals - from .local import * + from . import * @@ -142,7 +138,7 @@ To test your settings launch **Mayan EDMS** using:: After making sure everything is running correctly, stop the runserver command. Deploy **Mayan EDMS** using the webserver of your preference. For more information -on deployment instructions and examples checkout Django's official documentation +on deployment instructions and examples, checkout Django's official documentation on the topic https://docs.djangoproject.com/en/1.6/howto/deployment/ @@ -154,12 +150,10 @@ corresponding python database drivers and add the corresponding database setting to your settings file (see above) as shown here: https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-DATABASES -.. _Python: http://www.python.org/ -.. _Django: http://www.djangoproject.com/ -.. _Django: http://www.djangoproject.com/ .. _Debian: http://www.debian.org/ -.. _Ubuntu: http://www.ubuntu.com/ +.. _Django: http://www.djangoproject.com/ .. _Download: https://github.com/mayan-edms/mayan-edms/archives/master -.. _virtualenv: http://www.virtualenv.org/en/latest/index.html -.. _Fedora: http://fedoraproject.org/ +.. _Python: http://www.python.org/ .. _SQLite: https://www.sqlite.org/ +.. _Ubuntu: http://www.ubuntu.com/ +.. _virtualenv: http://www.virtualenv.org/en/latest/index.html diff --git a/docs/topics/requirements.rst b/docs/topics/requirements.rst deleted file mode 100644 index 39a516bba4..0000000000 --- a/docs/topics/requirements.rst +++ /dev/null @@ -1,50 +0,0 @@ -============ -Requirements -============ -**Mayan EDMS** supports various levels of functionality, because of this -requirements can vary for each individual deployment. - -Basic requirements -================== - -Python: - -* ``Django`` - A high-level Python Web framework that encourages rapid development and clean, pragmatic design. - -Execute pip install -r requirements/production.txt to install the python/django dependencies automatically. - -Executables: - -* ``gpg`` - The GNU Privacy Guard - -Optional requirements -===================== - -Improved OCR ------------- - -* ``unpaper`` - post-processing scanned and photocopied book pages - -Enhanced MIME detection ------------------------- - -* ``libmagic`` - MIME detection library, if not installed **Mayan EDMS** will fall back to using python's simpler mimetype built in library -* ``python-magic`` - A python wrapper for libmagic - - -OCR backends ------------- -** Mayan EDMS** can make use of different OCR engines via OCR backends. By default it will use the ``Tesseract OCR backend``. - -* ``tesseract-ocr`` - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google. Version 3.x or greater required. - - -Image conversion backends -------------------------- -**Mayan EDMS** has the ability to switch between different image conversion backends, at the moment these three are supported: - -* ``ImageMagick`` - Convert, Edit, Or Compose Bitmap Images. -* ``GraphicMagick`` - Robust collection of tools and libraries to read, write, and manipulate an image. -* Python only - Relies on ``Pillow`` to support a limited set of the most common graphics formats. - -By default the python backend is used. diff --git a/docs/topics/translations.rst b/docs/topics/translations.rst deleted file mode 100644 index e81f1b7d4a..0000000000 --- a/docs/topics/translations.rst +++ /dev/null @@ -1,8 +0,0 @@ -============ -Translations -============ - -Translations are now being handled online via the **Transifex** website: https://www.transifex.com/projects/p/mayan-edms/. -To create a translation team for a new language or contribute to an already -existing language translation, create a **Transifex** account and contact -the team coordinator of the respective language in which you are interested.