From 7fa8148d33c74e9a4ffa8bc957c6a1dd89c37c04 Mon Sep 17 00:00:00 2001 From: Prateeksha Singh Date: Fri, 28 Jul 2017 11:14:33 +0530 Subject: [PATCH 01/10] Graph additions (#3776) * remove hardcoded height and width * [graph] relative measures, offsets, generalise all base jobs * Multiple datasets! (individually colored) * [graph] Tooltips * [graph] animate and change values * [graph] percentage graph * [graph] custom height, window resize refresh * [graph] style changes * [graph] update docs * [graphs] make graphs.less * [graphs] prefix classes with 'graph-', nest inside parent class --- .eslintrc | 4 +- .../assets/img/desk/animated_line_graph.gif | Bin 0 -> 306915 bytes frappe/docs/assets/img/desk/bar_graph.png | Bin 30001 -> 27995 bytes frappe/docs/assets/img/desk/line_graph.png | Bin 39700 -> 0 bytes .../docs/assets/img/desk/line_graph_sales.png | Bin 0 -> 61751 bytes .../docs/assets/img/desk/percentage_graph.png | Bin 0 -> 17452 bytes .../docs/user/en/guides/desk/making_graphs.md | 149 +++-- frappe/public/build.json | 5 +- frappe/public/css/form.css | 74 --- frappe/public/css/graphs.css | 274 +++++++++ frappe/public/js/frappe/form/dashboard.js | 5 +- frappe/public/js/frappe/ui/graph.js | 308 ---------- frappe/public/js/frappe/ui/graphs.js | 569 ++++++++++++++++++ .../js/frappe/views/reports/query_report.js | 2 +- frappe/public/less/form.less | 109 +--- frappe/public/less/graphs.less | 319 ++++++++++ frappe/tests/test_goal.py | 2 +- frappe/utils/goal.py | 26 +- 18 files changed, 1291 insertions(+), 555 deletions(-) create mode 100644 frappe/docs/assets/img/desk/animated_line_graph.gif delete mode 100644 frappe/docs/assets/img/desk/line_graph.png create mode 100644 frappe/docs/assets/img/desk/line_graph_sales.png create mode 100644 frappe/docs/assets/img/desk/percentage_graph.png create mode 100644 frappe/public/css/graphs.css delete mode 100644 frappe/public/js/frappe/ui/graph.js create mode 100644 frappe/public/js/frappe/ui/graphs.js create mode 100644 frappe/public/less/graphs.less diff --git a/.eslintrc b/.eslintrc index 44af7b458f..ade1623262 100644 --- a/.eslintrc +++ b/.eslintrc @@ -118,6 +118,8 @@ "getCookie": true, "getCookies": true, "get_url_arg": true, - "QUnit": true + "QUnit": true, + "Snap": true, + "mina": true } } diff --git a/frappe/docs/assets/img/desk/animated_line_graph.gif b/frappe/docs/assets/img/desk/animated_line_graph.gif new file mode 100644 index 0000000000000000000000000000000000000000..0b0e7b212c6b7321d344c574a9d0a2b3e68ffc17 GIT binary patch literal 306915 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 T%D(@8-Be3m|6!%7UG#qd+0S45 literal 30001 zcmeFYWmKI@*DZ*ySuyl#@#)^odgT+?i$>KySqb^^S$$b`whxq^l1Ox;xDIuZ&1Oy5N1O!Y01@UHiVw-*Yf<0VdZ^ss+&a8RNRG>;vc zljBG60m$FKTaqo9i|6wg9Z!QRkPshM2e?@%o_@}vii!ykrSHkBHbw}Nc799jeARV( z)~haTS&?cgBv356{|aw6k3W(ZA`nZ2I0YpRkTg5dZUhYCO4lWn2>~G(a7S)^6cK2GAO1m`FS#kdkJLI}xuJ61NhRIE{8?kuF2-hZsG0MBQ9+AS>F? zXg4{z0gO!H%F0LI`SW}FuP46NC}DiQ=VNMhusY-PG%T@L&##=gucs(zSm#ACyb=Xh zq}U5qQP^qq7XYLwTIsO0K0Q}hDX=NRyRfX?x)%(*^C*U@)tRhIs43AMI0j${(hn?M?FfFZe5kLqV^2^o+cHd* z3lo0o{#`GTu*p{hHn%}{Af@OhmZmjR7%mquj!ci;ol{b>z9FDT`{-8f!|-A)QvD|N z)(&RbGv$0f1PvtpGQh0hcj71H6EiZFkFf&7#KaR~mPCe%0{O3l3>)P~T+|z0wXs*)HD2p-AMqWx!j@%T%b<%oT-QI}AwQwn1X=Y}hDiGeyj`)dQ4AKNY zBOH@mB*%aC!2@wrh(B8yEizYxF`Gl)pMo-x>C;E!@G9YB@%wCq90NJYV&-BVCB_4Y zZxGi|*KpS;tkDmV8USEvVCK%2O0ZJ6!>;5?*dzFaH4YB=v7m@`ss>>7UCc8M9>|L9 zA7&mbh#Da0GQ>5!i=f_6xFLK&ZJ~7HbJ10;&%aQ26V5h*&A>;r;|p9 z!uFGH(yiI7eX$2^pj>9k1R0M?>HWB-eb#vg=0*3y)dtNE$m*+zn}~&uEs0l;caIlM zFpf=%XN|p%mx(Kjn~H~x`<}2A_n3fBK2BUgbV}eW^^)N4Z-5vC6T}*XFUli|*Gn5t zj&@3^La|RFO6g3gO-W2KE~k@cmE$FIpCCX0g;E1W7iiaoEd-tu#UQ3um|GN|&s2Dk z&n1>5t1QeaaGmt!ZQV4!J^(qxIn!NhALtx#eqj0__(A&vkqnLupA7FP!zc(XZy8(} zsWs9u<>FzDthwo)os+-QgHxuHq!X!=wG-+U1229nT`QzFkvF9`Fw(5$LtyH&F$|UjU8F-M;)ddE$trdO&!@CeK+*C zCU&5=1~<)j({{JlST~~9TDz9Io9o2QVxBVtd1pMu?g#D@?_2Jx?ltar?i=q%?_(}h zFJho#p($YRVA3)7(9}@SP@K?sDAlMrh=O@dz5uv`OyDF{D`VN!ozb2C zUh1L(Z4Z3}{WDb!l@$dQWjxwt) zvX;^29#?n^KYov{L6F>S8;dXhW>abtfmdo;oKiTKCtGA&;VbVuq8H;ABUsSclHJpT8CN1-I8n)1^drPR=)5H?Ub0lOnX;gyY+rN=(InS|q#D98u`$d&`CbziI6^N% zLrTxwD$SVFg4D=);J}Y{c5#Sn^&u}Ra#a57XHAc#fVw$r%wwk`rlVi;uuJ0e^;~k? z4O~hbG@J*VnT|NF@ebk69y=pDN4r|P{*Lx`l#c52MeX#atBK$JEvpWH`s6%^-175w zxDcFmbO%gBhC!Y-=`Z7~lsA{5(uVc+fV&#rg50_zYR6pSW%1VXRP&m)PPdM^%XohG z%(~1xm%kmnNV}f78okcAoVsq_yIolwXdm#U>|k2c=rGAP)N@AS8=x)bOQqu=Xy6T` z-m;VMEmkvg*t;W~5#|ipku1!wVxX|{Rnz7Gz4$VPONe7nwBemEX5_QwkSIL8(p?i0 zfaoe7AyyZcclaq(d z!vkfEqIQw-=iQ87Je%Hy#dP>_0xo^b{WA?mxD9YIK zoSxm+VyiN(U!9dvlvTf_eVelN(?qW4TXAXTb?U$Re5k$Mtb7Z0g1%hTo}~ghBQiHK z_b?kh$2oUB_jS6St(bM$m*9R)gV@&aMYt~nTV_i}Qs(O@<0vd`4y|L17oJQFo|X61 z&NSP+&C0JS{l)XGADx?ZpO43O$PZ*cWPRf+J5@OO=3RJKTBw=x_~IC}d+UkjY2lIN zarmJ0@ZsV1h8^AvfyX1~cH=zze62bKgZ?q(C`1Ro86l?q!i)8i>+JeAZXm9f{oIz( zc1p}#%(0)NFMKtu^j8$G)pr#w~6f`1SC(VN{{ zTTo*>yM2MaoiwK0KeJz3?7ZypD|kSx+jeTzmOX%tT{w(nXAsSoUVTfIWt>U=z(-9fSe z=N&uQ!<}J-Z8<6-iIP0}ca^s5!pJgl+w$rmo4KHd=`mRN$}!5}iadoV72eA%os1LI zlutcjTSo~6l&*@JlTA}0pIfu$SFvdT(|t&2UC zR%d@+tO;&Dhs?;JkCM^`#W-k8Ek@Tpy3X^d92xCvxih`g)E}N#*PV!ufAsw3dHK-w z;0y@`O0Tnp=+Ul()ddHSn9?5ZRmSR%yD#!2wSIhMwv)Oz-_ty`X|b8Lis@aM1|a`N zeoU@fSj8XiYn54-mYL4UNX^Q9U-IO5mcG2)m2yylw`$hDl2!lZ_3n8OaR)!f*W?LC zhk(w5*oUQY@dsgJV`J-!*H79+ej3>EY+J*PAD=m#Tfowg8j*VOKAHPdC9&2*%HUWd zYok8X5W^=hF~^YxUE?ibL4p_I%<-MLWm30{dj2}2g_47EfTe``7|{?W7GWH=n!J~s z9w#<@HguBY7>B4Tp-Q9tP1UFTLhyP{ra+nHvX@a$a)zs1Fg(6N8PBHF#uBFDk<0&WB`BMji1HI@aT7&PNDdHi! z-W4FH#C*|hlRk+)jxXN8@P6om_np{;&^h_StPobUf&)@8;Rqcf&Ue@tV| zdL}icyFI+$hGoH2z6gLFg7Ku2K^xV{Y`Q4FbC&eoPxvll95vT8)ULH#w(Og?wsU9^ ztcg*t7`s>Npj*{f&DL&{4SXrkcD~k)Dq}nvMJp3iUY}_lVI6Z2>YF~HewV+sUr^3G zPSj+bC3ThUDdur{RdD-=sMh`yf7;iacZ(0_oNE7iFm9gxm#wq-g4k}~!D z;7`e4!ad@4Sgm2T!M!nrY4Q*g;H$YJps0xtxt8D_fy7Zw(N&>c`DE#AZ!+Q9j9w&w zbFN4Ce_M@w)3Ah}~xu&HxzEjku8XEA3ugi3O3AWa+D2K$AYh~B|=OHJuX zf2Fp4XxrVwd9lQ4gYtf= zVT#z)#yCF%et?BX-1WqMwym`BC>7^eE8~(9^9*z9f*e+zeh{NXOQkVajz*bCYsfRH zHuC0!JEuB0>xSe3`?5`DX_NZ%#_R*`dNbYa*ve^zaj|1Ly&0BG4-c9-la-4t=gppi zrQ%Za&1ip1Mw6^pX68ZDvsJNYo_M~i?&|%^56r57B3&QcI&WqEu17Lcr32iV$Kt`O zv^{zZehk&p`dQyy_J%TlWiSHRL1x^~#LgIi5e<@YFCZXhP9PO9pd%%q10!?+Y!zUN zwVu^WP$3jqo_I$lU>gFEtvKl^xCR3COa0hzqeONAR4gF;PA(D1FaZq-A1sIrv5QUw zGZ63`H+e1!*=b3V;g14kU0#)(IG`!r-DW%*=(vG&g6(}j^`+w?OW|SlYb(#^Rd66o z{kbDNgLZo%Hx38wjG~RUjlOT~Y^e^UP|#2eQBEYDBwB+33sJ38C*dj+$L||W0(}u? zNvIjCX?22dLflWa9 z9o%?t2QKyRf1RzO4cxM`bE$~XQ%PVxlzeo7aUbo zl2oifW}BYM@EfRwwkP-W5-S(0XN_2msT0OEfDa?g(T%u;F%7zaG61`xu_Y+TxKg>! zId3!(w^Qd==K|yGewAbMa1C{@&ps#uWK2^Misy0)?|rLPtLz=iL;1rYgcg(*^bHg? zhmn8W9d09;y#0N!)6Cs5^)14*!n7*ui7kfZ_6dWV!m`W)^>RB$DksfT)9Z18 z>n=Z>m(y46d!gIoKEyLA4|!vAM^fur8*97gPO-t$pE3o_PLV1C5CKMv?vpJYgon zOW9KsxL8nm(VYJ70QG(g1Joa~_ADHx%gW1$Eo^+SuW`~*G!a(O%RuUv&M@TRo)Toz zxi}=nNOX$wa=3+G3SA0Mau~DCb7r!w3#SSWbL$K6MVY3Q`{2mr3r$Bt)Kb+f)XLQP zt3<0&=cPDnILJ7e8>Jgc8pPdCE;1K3`-{5AyI$4Ta@N!dZS`@Hf#tavTR6l(=p{)- z$z`YmQqcMz?k61u)185Y)E+sCW2&H=QBUnaTsOPA^PfFWy&>b;Hrf;i)&IXsmHRiL# z*4JbiOZidrT1p;Te{A=uu&UsPS$M7iz)AqY>%q4O(hPvt3$WjT#R(e3a*Ft0WMk~1 zhC>&Gz=$X1i0Ns}V}175T!XLqzy+}a(CIfboMh-$Lq4)UqWBD|8ri=od=_9tWfZhU z;oy6bg64sSNTE!Dk6a3cUxHHXUZQEHWsYG!J}LQ=w+PXMfFY6jfT7Je++@e#M4z+! zV63p4Zm6^4M<3^qa=&*pdFY%~3=2Lif3mOWTJsuvPFB~)TqT324Gk2V_;ZDzNoOW{ zBj2HFN-SzJirNynZ%yA;6#5BIzsW3mI#pezUVVqtjx?8f7^Tw)R9jdYSd5-;=5XT1 z=4_weJ#O+Mn1Ck=Zfd_$x}Z8EyyQKR#gjuZ!UGYqlq6i&LbjGip2!q$>r3hr$H)Jq zCM%TDK|Yn9CPfa;YP54$nut@oeCm#liHH`9sY9*M^i-)=3zC`9OlGo>yT3$k<6hsz(06}s?kqT`r8{LjQ2MZd-i zbmuT>Fn-ZI(9zL}(v8x+ogU?Tqew^+Sr3fC8CVIbIeK05v!QSsB^bl%w0)*d!7R_GtoXfVjTQE$~^I z0a3Ws2Q`U^C%-5vqN@`AOGSXazw$^m|Mz#jVbZ*vmZ?_6S zKs;_-Zy&9Vo%9LZtgUPux!ib({%XPX_W8G&o`~SDCQg>TL~1f}1j4os#ssW%EOZP+ zd@uwA1UwE#CR_?4V*l;__Klaw%*n})i=N)q)s@bbnaUws2xXD41FqThl3`TNf}jor-ujb!8a z-)X%~kpA}*dPX`1`hR@Cb>;bO<&raZGqzF_F}F6haeRxx$Ii~i^H=--+mnAIzU!&} zZ%-!9KYG4<^5333^uH(YZbJWAt-q{q%f$!7L;ugx^TFH^T(JNF2>?lo2r9V&AFaS@ zDH*@;pUECdGeLow=|~a^OiQph_xdi<)6!bce4=(d&a5-hG;#SMGb&|nUYOKq{?)|B zf?sAr6jo}v62HMbEVo!9+n;EN6aw3-@A{Q@cZ8vPR0`TL_&$9uVtu5MZ~T$7{?t9w zap&9Rq#rIgg#a*&8~_9@8|e2(`+hKT9h4m( zz>2^h-}hd-27yCr@j)f{%lF@5(%+2f7)N>UjDR^<27$8&8353K$MIKNI~WE5JB`Yi z_mOqzJAgV5*?~d+9rItYfjZ4Q`TmaZdkk)^K%ih1t6)%n%&+Lp_&&^YYT}i+a zXkc{^=X~w;M-r>~$gNi#z(QJG#4WB&=aqP7@3&)4%&cU^_pb>6f{D(cN@XIKyO`Ym}7A4%QK^09m9+2=B@Ce=@dj=X1@Ep?2L=l z?t+l1=^&6%chJA^{3fdhB9d~L`8S_5!2jqo@Zxw?ZmHWbb)GyL*X^A`!6DdTYk69; zHuIo?PauyJtwJfOe80bdz}M`cdrN;wZFz>Rgz>{f4$$ad+FCHB>3!)v&|t1e^RT1;3|@ zJG18kk-vYcTemyRX_8iR?+z0^6qX(xs;D?(*l5(7gOV z*ajn)-3i;kDDczjdFfZ^D|X3KRA1sGsM_5?gqltb_8XDPo4Ju}Fm2-*pc%)zI<-e# zbhYsJH*BP6Sp)aZmc|5s)vYzf@NjPYVCriftydCf#{0xuYT1l^sAALCuHf6#j8En3 zcy?1&dzV$`HQm^0dptt$@AQ9XAO?Yv?+Xpyo!ZIHxK6bA3syeqbOmTG@z$saKZUNZ zs75XdPE99&+XHv*%;9b8{BIXF@dRH} z$vA54;rX5f8!vr73T-F1`-%|6eu*GuPF^p^>u`mgGssflnADOmm&peQ8v-i06t0-K z_%cnoy5Yx7rr&p2zdmwxdnVG?=!Q46l8jK%3-{Z+z5{L~v63e-+{us5t`ZutrfPl4A)kYnG zw4I|04R68CgFFjL7WG1&A70lpKE>vl)ddRRIZi%II)|I&|1Ry@MkfH_fJ&ab?DdnfYxz_tamNwfUs@8bM>kCqmsvb_ci?%Rmx@m z>|LKxJ6%}?yHyrk!WsIW26!MdG*AF{(PLM7bP}j8awIll2!C`VZ?G3 zCwIQ152@E*m_@YJ2In)Ztt5Aj`gF6ZI{;0ZPY4#i~Uw+9R$1ezpRZK)?iGVQ!8VBiaI*lmu`e$Mw^bY@=`| z0PdJCgq?o2&CzaG(R62V5f{@Ho9D-~6+c^g0~!W($!zjzh9l|OPWl`Jj)xUO%p;g-ngxzJpFfe_)LdN9%v6Q9l}X@{(83R5Xr&c13{eerf0q z9gptQ&LP9OyMavi=f^X$TkA2z|2KsJ{ZP|RGny4){3!`R-RLsGpNTl1r3Y{o{lVRUNvfLm7 zVk({%x`~|?QUF5g0)_!nWx;hlU-&h94CJ_p5y(i^Mb7E0hH8i`I;_!Iv02A^a{gGa zBEX{s(imm^)z@s}JZ6c9aeI-c_E`=`4s=e3+g3*j&YK1LvvJC)T8kjEq$d!hnFGXu zCuPgm3hAk0ZA`dx{!nMl_TKeSPb819x!WOwkCdIAaVvLj*FK&y{$8)jAn4H2bOncY z;)qWaqv0w(@<1#xa+WA`#(bZJ-;>%_=!Oai!B&8+zm6}Qh`h#!A<-TFL2#(hHsqYB z?=^QnAYn1PxNi?R1E1SpLYta!KF+=Xn4{>4h2$`3Mx(m&GzfW=9$~F*5=FGS!e>Nk zyR}Jjxxd!2SLUd6u{e1$Aqs zmPFHOFA-f&MCpu}IhA)LK9t`tJQPi(6%VO6{Qua(n0BkoP~W79Sw%wc46!~K<8{IN zMyiBR%`F}{0uQmT(z!Y4aq=yt2l;vtA<}%$K-Pvt=zzabji#~}=)Ic6Up6LaGV$@t z3a>4p_GJ^A*^Q~ar!>H> zj2e!1eNDh1JTYT*Kv6ZAtbwPvT$BM|7rom)0L6}OkU-Sbb~AFKJPo4xxR7Pqc?TY} z1k>ow%{<*M;q~4-8agT5kL?EBLLpD+^wCZD)kSc@oW{5}ntr8$&I8uGNRIu{Jl88n&{nq403OY>Ap0Ors(`WPo~bXQWUy zaNPQwg&_!6c6DbkN{KebAien4V!1~g!M%^$0r6c9kFGC&EXpkm77y9sy`)+TH&Vim zOW>(rD?n=KS(E+yK=9xi=y052r4R^s0DjjOZZT{%BTnEgLAY=B8TQK4D#`uBPn|&zakoFNU;$335jWBvIThUY%d{Ac48YTMd~5G z$Cei9j%~h{Oh+4$qPA9jTB?v<1%$78?r|gw_15B8L+r!_c2EysnEF$NIDv2qbT`iv zv_k;dHmUCJb#3|h&G?M*=n{04qC#Ae{Bs{Deij!l} z??Js?dF@SBdY(;NVO#a1Kl^kMmHMnE&I+xr$=~^Q?V;hI(QhytCae0~W-nkCVS{ksB47dqnUI*1U1{j4* zD3vQ|kSN0)WT&dN>lTixib3$`Ud#s*`_Dapia~J#-Oxxa#XnP(Vcsbc(@B63o_sCU zg58AaP&tKr~HoK_tjYjj z|L+iw?*pxE|JKL6K=p3^uu{EAT*?7|aLBg|hk(*)17>)9f1=o->jBojb^5%YlUw84 zi0D^=QoY|>8-7b^GkW}gWQW$tuj^)>c$}qi> zTX7VB$s|j_a`Sfk#3PNdjOj>5Cse0IT*G49nY@{ULc>GX3G&l?0?i8}B`6hHKU9~n zvop4RqgS&WJUCE)`O0~o|B5sfWtOo1T7U*;Not3p>nZHiK;}*Uz_Dqm3fq~aQ(rss zmHJVCb|{tkOB+>8XX@h|mS%(Hwbs99f3YKQ3^bC)O%p!-Cu_m6I714FC4Vbn3OqQV zp=bkYQkWYA%{nPgI9i+ z!`s_j$$xoG%A)Qq_jkT--x$_1bW{Wb4IF0qm$$ej1NyX>Iihe;W8G4gERXNq?t!2{)1^Hr2*Ql(CI%i zO6r}TGtt#)FcLF&>&`vlIR87x4o$G9rzak!@0pjeRmwKcAG;ZR4y01KUAZ2rBVpM_>$DglLbiRfXk}x1K!rRv= zf@v+`baHFKznnr+N~DfO#DehL&o)L*O@)M5HdE0|Jw95d-x}-Zvbtxs6=>#%b4v5u zo|E($=98hX(qwn6=OfL)nGM2|NygulYNuTt^-l54k{Pb#hXwKJx=XM?M>ogMsDqz0gt;&EJVNrsTaII-g@0-zXrfS&-^6!o`L_8V+II%)P(dJBY1f5t_C*RMN<7V;-GgH16XI3%Z*QwH-l z;+=%72e327X+(Py`Gvu5FubEs4kfjV*tpC9st{03bZBI6ej9Q@NW~}Ps<>f|1kFa)+*py3aXe;c6C*hvC%?mwE<-b zHh3|Qy(`DgK7!x$dxuJ%R)|>WQ#!cV^hFLTR+1_DAgS)t?7KPUKHVrk=_ICJBGp?V z_l-&kq_L?yj>vYEib|bNxGo~@d;_J0WbmCZNo@Gs|FTNc@gZQG`^rr1gSSJs;-AADLSQ`jX{+uyCTRR-LM)mqm=iTc&)z{b^0Z(E;b`>% zbZs->sK+RAg$bEabNuXSb_RGZh|zCRPK)8NT7{5q7}u26a1=-cS|*f{?H zE1MSQ+E!)n{m|g~*p?d8+~2$ua#+z~JAHc|@X|j1x=So-woC-~E$U@ELSWR4WSp{IwI%|Dwid-=@{B zY!OXjc(8G|-!u}Q#GZ{8^GLc4VKiRa0Ckp(fb$r_k1T-|c*m-5=!Z zWS5ASpiC+AT5&Jjz_=IvsrxSIErXo=sz7zudSk3pSzYsa^sGcB!{Cj@*$w)bjOTgP zUWaHBBR!DEMYw&j*o`O9O0V3JVDSz^^F^nAP)+SrbwNpIJ~C(wRl`*wbH!36fKODHnJDdUp)?e8pRbN%92s*h^oWXz}?^BwpIT|vljUd_7+HgLPV^7 z)AiowEm{%aZ3)Rwpo<8Ju%4&}p5O+ZRY~*w#&BHVK%|gtYs@9Qd#`g)9bf$1_VF2w zxgG{MvZ3&$y)dC6Y1|qzF0}pO@8K#nNUs>W%#?zEJkq`q4WEcFpLZk^=2)pto#q@d z^{o6LD}2SrC5;yU7ATA9feo<=pPUKE+S}1KQI4tM5Bw#44-0(E`JHHj(c5BzrizsE zi%-5LT)3^_sJ!jRBJ}0X;62$$ogmQlMC7CGO zJSOBvrTBJIJw6{W>`{QpNQRC(N&BWucwMW z1zpg)FH;ZkJ05?}@pqxV2K=@hJlV0SB7d*{@2Ar#08?|@)b6;0YVtb!J74q|XW2l6u(qE)@GTKC z`vzIubx-mU?Iqw*O4aynF);c~^S0bjc0Ol@D0#-}@x}wrZ7W2A8_}SLlh=}1u{Gp1 zlZ^?JkSa?+Wc5HT@6(1<~po7Eim*tYu{s#fBAzp0G;t>H~#Cqq$bw+}Q`)qkjr zv--HSH(uO@;)*2`wX&q!Iaz1vI|l1k{hK+o;l4?%B>^>6RXBZkUx70;9`j0z)pP;j{~6}BEh@6sk}zhuu+hl67gpsU@ju`&E~|9#oZYdVlMlN)3)o(UTdnNY|mk?RJgCz zkDV}Hy2}Cd1iL&PE4!z0tHp-L_b6S*qr~p&j-iC_P4dwY1hdwNtQHdkVg-kK+xVMA zvCjrw%`YyO{txQ7PvfXWe1>U<^oR$JUz-oUeWx3|_>=KGEDIg*E30nnD!)>f>sRkt`x_$`G=qPl+bU%~T6juCh5 zy%XfuKl!Ry`3ZaRjS|^RWO9ePUl9h%=!Dy&&Xr8vdS8ehs|W2pGSsZ#jHGgi;{GZe z7e*l{Zhd;Mt^rhkC;r;fx(-dcr)^Xa`s}Ga&5^N~pK>NGl-<3yjUiUwcqSbp0cPhK zKGg$NvgTO#M}P$9NPBwz zdx^PB+(9OGV!x~L4n`@mrQQyiy(+a-ir>C4G3Pa}SYPO0t0QFhb|^E$HP&~~?5_XX zYj&I;yumV+8MSaQO_}Cero$=M>XqZ?j^rafRnqCt+k zD{2$eV!xyZMhf{l9nQh(lNBYh^5dQlszX7wBR}U>IAYs_NJ8`HbnwGH+w6w|?PA@$ zttlOd_;|j7;}}i~;lmNG{j-*qp;gIv52Nybp$QS?tl>kTe~pZr&E%t6B?U4mRSo*# z?r7J>omC=^Y}fMOWvs=-rw$Ji;LTN?FgQm_lw{gYYD=ag;;OTqe9=&DjmY$#q*NAb z&>@~T@j>a2Wl8#d+$1|m>(+e~#y>{%#pjkh!LZ`Q3m;_eUpt?mU(Y!+cq>5*q9b*G z;N}Rwgky@Y#4IR6bf;G#JeCQlba8Ff;e|FDif^Qqj1y0`pjt8+gK@tP;nw&&L}7F) z_pP!y)ihk?!gMY*H5G(E(Yl%1&k|WMy<~lcyq{JA`FYq1|0`D0KM-6+T?k6*H$HQ} zzQ0B9@C4^M!3N7yP_aNIGM#+Zl1aI62Tc6vdx4+ZCsv6_ZLEAuCk3~aI2d0@%qS5x=|V% zQr6cmOc|1CO*-w2V6!l3wOA!uE1YIj+3J2;NayubIaQaRa;0=X4~>){Lca`7#Fw>i zkKebF=-;K@&kZqV&EKrLCA5crAw=}azG7f!gD&w_s_ zBF>I<72f@Q3Fq4V&T5<`@@nTkh3CWhVLuRuc5*#4dHqiZL zhGyJBzFM%pe)j)RiQ0-_X(ZK3RJd&RWZtfRQvDz%(#Saw{;%3p$^eGlvO7xq`GPX}UvE^@G z7VM~3Ou5?t^eV}Dv#I+KAD|sq)BTmh9S+q-nnXRH%}4SO39T*^BEL3#zCL~2idd|M znYh(AYvxR4v=8TMk;w`n5s>q|e^+1$09Rm~y@4B^N+xf$p=f8&wI>d&XPUfTk|`{R z)``o9H?82t$sMQ>3gVUEPG#ASUB6?Va!>oWzK1xcPK7b_j}V~8{Yrg7o7R+KcHoHn z;dOnZHneFR3RMCa7s|~9AcvYhh%cjU06HfL;vb;Zu5$Ie*i}(t^ymGXe-wk5S_RF! z9l@_y!oj&CTYv4@#8ci~Zc6IviK@e)42M^S3p4xsf< z5f1Kud;OgyXL@fO6;I1e`WkR78f5*<`);_)IlMR!(TK~ZK|8B5)4U@227w zLxv^Rf57mbJEd#kP!YfibzL&*{C>OwyKf_N(h-pUBiw=F+r5{!g`@WSN&Nh+NM>Ln zCA^=6-vip&FQ85j5Xtkel`qXsiPJ?KbE5BOi3{sy`gS4lzuqoP*%LCpDFgq?4{t?F z1su|UIqb+A5B`hA?qsMXn3vHzmWRAQrkl{uhJbQN+HtINg^q(z0^8*IC@5*>tO*(Q z{}-3^&p9lhU+Q2>8Q8u6{$Bvs9^?JY{~2sa4I;*jU+d=b@XfW~7nDzYj2TDx$j{F& zULpS6{^@h_1HYz@{^WGQ)Op%I;Rr5rA)WhS%l)#FOH+{w+j2VBR{m6@x#e3ay zoWu&H&nu*_9v8{;CT0EuSrCvzg(oH851uYlVi2G{NvP(+gO6!dOsw?qgaUSnmckSt zNd@HSTs{ctBs%<9u!5%&xT{!ZwxBR}yqVLTX<-Qj^6NM4mzQgQ{n+Kxy;<#3U-9rc z?M?9k{ufscR{mm#)9k!+?-L978QRSl0F=t0cZ7CD$JlLhB@W;T==kH70u88zMc`-n zFZOJQY9bq?_pkoU1-Qa%w4@%B>r(bzHu^1swOr7O)#}@EyvKqT?YFJ*s|}pt^}P?f zH_>X%f1S0Jl-!PDZkeD;(~bo9aFdOYkQ0{_o=DszpNw2zMhhf<^0S*+G|j+JX}rrY zrO~!WA7Z((DE%;h@G~S+P5X!;#dj`0NZ)!4JYkhK)8vRgx}`69R!6Uw7NcX(rCLqE zoK3X!un4%t`j1taT`wbwO)}R7BsApA!+9~|?(r`z7VT2stUT56e0k2E3}0c!}(>=llORibKVC!e+&IdR)vuhq{Z7`LC32G~*ze7inLe`&x{ zZ+Fc(NneeRW+xx(+_-C{VB97AJY>Gy5*U#VU^?6R_)+e7d3)B&$nYgs^p0S`U0yM{ z5!;a+$IkSd&t((y27h-~%$)vnVU${%5wuSF9T`gWvM?tZH{<|S`Np+tr%AESK}HPI+SI`<{uevHwy;N&V>E?@j7-K)~Y zHf%UC+}svsVy~&W2EMNvIEj+-8tczGk>IfoMCdri+I9Gca8sPR)e<>d!hE^e4?w!_ zl(%e?b|gUp^{9!rHz6ro2-Plv+ne1LQ@ikMd*I|*MGZYB~K+;rvEx4;b5h90Cii|IK-_Wr4mrcACq8J{#@ zy@U^&b(~jVHqAJa)&Lff&}`sEe?Oyt2wke%Dhfgb%5{qy>Vs<~p%xdqoI7=AB!d); zFemA=Rh(<3yllv+^fB8=ypA(qGbNZ-B5F0VXT+dpZxRym7YejmRi%$5=Sh>) zQr!?!LYy2{c=L?4+@{@XksJR5PiFXR-NUmzzCjLHVa6_BxefnJJu7L!4G&%t&##}5 z-J~%mtES&zKSc4NS5#3C%k+O(V282x+v7GPFj!2DO-YV~6DEL(_Z49KqW`l}(5xca z^xC-5GPINY1M`cEFYBtsHqlanyu;TY%-GE?!@W97I#`5DUn`nXbevl)9st_*gKiWa z0A7Ce&{gY%m45lpRod1`-n)8?{&^ny4LA|r_8^*XKPxTS4?I$wGgvOxnW6bs{*ABw z^i35dXlKgINR6!03^x1a5WV2h14&Ek8CO|>mho`a4>05GLmxT|Q25-)Pe9y2k9X>- z?M+rY>r5F!w{#+66m<~F;7mo0vN4%IZZ92>?ii1hl?ZGpM{YW6 z;Uj!3=4isxNsYZ1> zU52}bZ&wSaS}o$12<#~u2@o2=wCpauV7q|yWJGuB9 zP7_-0$Qy5u&e%qTgdI{ze`^#ht3Ll*_HHb1VvuOt&d9m8mVuS~hmoScC14egza?O% zw|@kZ(FqiBWbXO37Ep`d9yOpkEYJq@ZS?I)^F8m-#D{t-^C^|f zI*5F_BpxzJyym6L2C6&*AKq)FW$Ahoy{2g@jYVfst3v}CAJ-C%kFE-I;VP2HVWdxD zfr+O*{vU>>j_-dYZRXE}GewBL)Zomh&_Pi4_cS;Kx`c@c#!qw6-47lQR!9Jj*gqjz zQ!T3hz~AyFX9x0n(u;o<=H$WGxa7l-BEVfLqW+XW>!k9;7$zF=L(-z2FV35arKO$BM7ahE8t zXcViVElw+uvsEC0UHB#Y>?A&%>LVC7iIA)~rK*+}?@))f8?B zAVoY6<5x;wmHnhRm$P|+)_|;aTTDt;^ul5=flsllU1{Ie zawbb2^iv!-G_?C34;2V)_x4(y27=nG&K^lUTNGdUSASr!>yDJ5{7pVAW=j$Sqc42N zG?QBeYV3I4eSC<9%VItK6(SoNk}8LEsXY1&3L6L=)5Z)!GColI=uxx$mo~y1zgqve2i^>fWenS)9QftME zMTV2nEIB3%l3=N|YNma#2YA{(mqr0B$B1S5X=BV#J^YUjBN$sV4P`-kQD8HMCK7nY zO9!a9;llS^P4gv#(^z5H%$fazPYR6#C!uRSBI$`tN-pq0DwIL+9y95mq+}$Bq;|`4nnhx%bHe9~{Klh&V@IT(Sd!P2$bJto`YmGgs z#+WtNnj4x2?vZj1)i9=+!T+ZCnRR!iSjp=B()$W{Ku; z?96XE)35g55vN0i){9UHygoFsl?r$C2BjFpnf06kg^O>u&Ln)ri{GsRdbWYobO?;0 z*6Atg?Xc@a+cvuAhnaf8Jh+6_5?SPsGyW}gv5vC>aGByVm9H2Ui9=j$mUg(*Wa;*P zqU-cqcFB~2$^!rmjMjo77sFL|>ETezc{naaFN}x1XY4#GAy>{Apb*cq zSG;*RBwTmMVLNzDjgGWyMu$R1^|jrrL6{*$#d*b!m9m^f$zme0RmD0s8xz9KId`m0 z8GW?x_r_z0EW#M-TBVh{eZ^`h2$qX7QZ1kbc?_B&Bi{>0?7{~tmap3lcMNLki-GEK z$ed6j_iP70z|oIDky0#am~=p`l?IUp6nRNJeDKFFDWzuH`%g1OrPC?QLJ5MhJ!*`N z`ZHP|mY;AX=w}M$Kt_N9EjIwlTV<`xZ5AV*b4DpFwI(K8&z-+0g&4&9i~{L>jUUBg zUE6NBV132v0n@Ke7>=bx@J4Whw(3RbuEIF%&d(DihoT!Xr&=N7mq72!>6{`PYw4e2gQ! zBmkkB$4o3_!s&L-ZxO0FehuRtP^0Vf}mUYk~c1kANmqJJyMisQ3X zXo9KJ6oV{n?^0BzosEt6Bb&K>ltV?jfkU%9CvV2Fcr42IgZ5t03~8b=Koci?=<^(0 zCnkhfg~!$cv}d&xTUmyXmf?wsjZsH3SpuTX;$GIhwSif8x8;PixF({Ol8ac8Dewg>FAydqF^0UrHPkf*_ZAR zft$UIOze?o)}2h+=XPwSn#Id&UPYQ#)Scy)Qm7ecwk!~cNQ8afStjt9)g-DM3(?FC0hWjB6y`$L`kfDtPUwjIkS4S~Z*Zwol_v=AoTM1%< zD}uygj^36C$mxX4M|(_>Qe`a8Rfhh>(l>3ml=h%arL2jy+@rAAfttSST9>=z$U+v| zj`nO|`f<2*sI2KiJ1?CaBdp9uNyDC^kUVAUy_M3B=els_zc9QMMQx8y-Cz59? zZXO&tclID9Uz7EzLMuiB{7$~#fehzEL4ov3jU$+-eQYYq`-aC4?*XS7P8)*B?r8E? zgYJH_;pv!mkOd`gmqRI~K;82e>5Ml7Z*t<)eBGzz;QL>ReDXksk%>Q2$u6YG{1MQq z2D8$ReA~#?7`zG_1IOg3JOI;{MpfHzbYeKgjFww#a=DMfMuQeuuJzAZ|NCVUHt6J9 zMj~$=aD2mB&8xy!5;MdXeI!WCkH+$ej5xA&)Jg%j2Dw*S0!z)V*n-9!7vp#W(0go= zj%Z&o(a0-g#zOsqTKirhlSsk-bx1euADD8lH9#G0mCxw%^Vt5uqEc^Si5+%g!)WDAq=Po)i7+Z_S{$sfy*POxH4PHF z*bse3U3?^nj7&t%w^^kFf-d;UEJcVl9D;Y`h%^KLMz+RzByVRNxI$!jwe0ISmRPwg zmxwRvc3CHl|CW_Q$u_6&Kgx_H-3w3{4elRrpThauF)$;)6LO2|gICDc3C z7F?$HRRrIlpioImLEVKyP%T@K&9>;zrG8$5ze|t1Y2|D+ip!GI^zp zmNY&14xU2JHC9}%VP$Z{Ai}mC`0m$yZf|dj%ppR?Rt#f0JtIVf3gVfZ+pU$J#-nB2>ugYefxYP z^gj$mlJ=78L;FuIt|#D`i(9pxkl?VJG=1cZ= z9LhhT2lN+gI#H7O9AkbZblP`2Z62Ay{K7jqsF6$<_^e1<5@TIfVn?S)4f=5qOZ!p9 z%vRi@Tw+lhe|d{_U#>@u%YF+GSTCjXXGpK^CmFItN)%YbIF>{_Y-itH!SW>oV;a5+)e&% zFDc;)FUz-H>1UEUkR5Q7ui z@A-m!ZWF^2FAUXsLJ<+=HGi^{hIh+79U()T!3m%b>80njn_r_!%`BGlL0gs3jQ8#o ztV7Y9{7PF?$+fp9dUf?=%s=ZS-yKwZn2ehHA?6g!l zS%nU^?7=0sYP+Vj-&U-g0IU40rN!7oT{_MNSFF3IFYX<*udpN4SL^ z=kN|You8EKp8a&#rcx4NdL+Dlacjta2f)Eo3XEY|MF-*+eOW)CeNzHo=5&lcGzVB~ zd|i%mFSa*e_y8{zr~}yynkC?cp-R}Cq3eO3|8K7 zHQe=kJD=&Z-&s&rkY-jixdH?7))(6fJzkp+tj^oHn7*(J&Vrcy%P^FenfsY>V7E+lIWNb&CZf7&#+R4xu3v)R>e@wxB?j1^76IKj z%LGG0^z{yWPY0Su+f;(nI821o1F}WCHL6lJH@%lB$^6$grXbDcMXuS$x#8C*Y0|0L z-d9)N=>Y|&gAIfe?YKHec~YaBPY-rqIE+dQiOZfc@8hncmS!@?$-uXRrT zSURM&CmP@ts6}w>Fs}G*u8}Q>H_V7s%6IpTfet^`7-FIA(DuX)O)#`*s)|8Y@J%?M zNS1l353)t=A5~h1pD@UQbzz1|UWWm12VWjCjIs};f*zHXb2JzdQXupxiSUlvO zHmq{5KHhHB%A}&V66lG7Bs@L3DdVo@5;fcc8L<-E9}SwQq@tEqjE*nuFN7om8lqlV z2DK8SYsgF&>^HWu!{niyCHd6GSr06k0DavtZ%k2uqM43Ugq}u?^s%ATU~~Y2+?@yD zIChAB)AbiifR=sWS5sK+(ULHli5D&)cKJm1UD7B}g=9oh21h9!PWnyZBuCZSeB`ly zSV%jvYaBHtV#y~Vh={7=+6?-VHh$Bz>7kQ{@GqIR57o{GAKS7+#k%U%yBm|jUBy=W zw3q=+$$|Crq@|i_y>i?JJAUnzqGG^u$BO%Y=n&0q62d9qorXX~Zz#3=90gXA3C>F& z3u50zm$2%?8x@DtsMB@S6WJ&`T?8OI810n=7#Hivsi5_j)>l-Ip%k-;s>3NKmPO2B z6|c>4`7cGxj)KMk94cR7vq0D@teRZMhj!fltZR8u>xSzhht*Q(_O6+?ys~d2 zmG<}g_=?&>KnoR0w{#oh;1nx{b95R6r?n;>;Y$U)b{?X!XBSzFhug7j1z|9`w8CbS z-W{C%tlI+%0}p?9=Osz1rMA*=ajD2{Re{VV#f|2U{_b>L>D|e(0xk8SVm=3*{Y4l; zXlY(fV$lN{KeH)`gAG=|t?!xSo1AGcJD$|zhTKC79pAHJ%-$f8= zn5V}ST`byr?K>`eTR(2hTV6UIh5X32ud&#cxWDZ{57j>07C2n)c*)iT>$8i$@P7(t zWn&x2`R%MW)ggKZ=wkH%a@3lvbyAwov4Nzm$;of0`6^N`%u)~U;}0TRVp{jvnhpHPqHgu-4oDsDm~lJpmzt>w)ne`+&p@RjG%H=W?Hg!TXc?MzcA6)pkbP&q{B5>XJF)Uoc7G5uKR*Ar7>rWe~0T9|3L^oehvDGSp(Y8U2^}_x@7-V zugEGSdlB0op?vh&xHrLN%1)d%v*wx#EtHd8G+1CC-0x)l~H6L_86?$6tp$(l8% zg+6-aS4D+tHDO%69xw_y^?JDQ!^X2{$LXw!@Kw_5bjj%S9P`L7(&JDjZVu>1r44+u z;*m0;Z(Me)$uy%iIh`%$L9wh+{~20?yg~WVH0My$ne90q^spHV#0JMz&_!ivijnnAM+=4-Vak<~eo5B3@s z`$1}@%bF-@MqyN<)gsuE9kQFi$r5xRr&^l;Fhl_xFL^@nLDd`Hl|#mJbvAgf7(jyutb1L=3I7flfGTjwZ8=I z)9Q0=Jl|qO{8eTg_3w^lHZ{|fES0wn0Wz%_seXS7=h{YERc3A%o>+UO&1DTiF^6y8 zTAJj<5ijq(&?vl}6yTT&Ql7Y=^eXLb_cTq&`-GCmWKsmi?dG44!>%*Aawr=9F_6mD z)klL}CQvFkdI)>3h*vk?Fa1i^xcWHg?-GY>2J&u5qu7aeet-$wx|O2$8fT-ggBn=n zaPUSDUsoY~3Ja7Y1Q3-hSA@w2JS#AMS)aX{32kbs+B}?wd^GZJ$;UPJvu9loIKr!B zt$k>K5cl$@*MPs*L&#C4?sqjPt&Z z>6A?15q-6S#)QKBa;(%Fx^835U^k*FdvZLpDi4WX-{+|`=d}GoOimL#;b>ro!6Wu% z^Jlt%4?}3EJtogkAsF;isoKiOHurX6aUYrQa$yUS{mGB_kQ4`mb;E9^ZOgq1zf zD|@ZqW*I6?-XNW@KOiXzPzCW{P*%c~msN|Ee>d31<^8Oye_do2XGr($k|x%gmNpcd z>j9lhjF(FA-D@O`_M(MYTg67uUHuD3M& z!d4Yg8tVB3d?f>aSHvdTV$4~$gO}&t{M?J+++RHdZOpERj+Dk`?PF()Zr0JbG1Jfs zTdRB;c8bx*gC$)fFQEwD!+VPo$`2_60GP;nqY35cWGL4^M?oKhqbPQ3R}oGua>Ck) z?9+NJkXt{NgR=3cXl{Qb@m>bEe%o* zkbDB2lJxDD$gU;MS#kma@XwZlER(ms;-R;&c?%5Kq8?l?2Y$zOle{m$-dW6*vZwJ>rXWLeC}F1j%M=~_y%SG=6W97 z>I4$ZbfD4b=I>Wpq)D_joMwW>a7f+&;p})a^4>TJA~hz9%rb}M!z#Ttm)D^;8thIT z@^-3)9)0j^NTV#2@7y2&OGx1QPLFiaRXzBEG`nB{+y9{fH5`QLetD~3rVd?3A98fR zSL#~ylKw{jDr_`vv$L7xmkgpht`|r3`y5%(y}X<~DY7&~VZ&7N*8Z&>w5r9BZ{>vD zGuiXej+B^z6ee02sddbwRng7;4TyD!bZA4L zlEZuMjFO}cIbo}nDHUUMkfhIIJe^ZPjL+$#CFk_#{2cgeAr#b@tLUO{@UY)UvwW@I zvAk#*r0BfWMeJWMvtpvWxDiw$FG3^anehuyO+@u@l%#cajwrs*=}~Ka^UJ+!aU*sb zA2t$8!YVDrOU^J!{BT73iEC0P?lpwdi{w5ot)QM_N_V~00UkuRZ7Sd*(@^)xlei^F z>Z+4%De&=Ky#9Mx+hQysEE3Z?*NXrz z#rh?U3WSzEHr1WZgxUBh0Cc8d#Xc_6bm^XW;WkHVTqA-g>f@wwSr@JDwjvX!!OK#>Y7mN4p{X^Vm})!Hn_GwZ>xhY zt?4dQXk`;j2Z48uuIcZ0k)vs-Lezwvvp_1^D}1`yS_tDSI-PAAGud{HJqI{Z~^-Qmwfz=R4Nh^9XSwgu<|SE zHDH#|bNwyBd>34-xwGm{$Rx>g>x*cEvR};_%YEf)Bkh7td8<9ePDf4cFXW24m#wBX zCra7+$XQ)eUqiBJ17&F(9_w}5)dIBP^iY;xQ0=IMYl(=gkcJVZ$NX@u=jP5*C1{vj z<-Nh@55IA|E85*mYI6WGe^QAL7d=@%N9K-p9fgpR3uIsXRLo*( zQcWIn7PSPc{+tx+YfBDbV(ty{q>k15PDN%EE zdMYf=*^uw0v_C#JFZAHq>Xx~4coUk-UsQp-R`KQ*#{TBe^XoNqQa3jzT1OVHou!?0 z1dC_ypuKaR5~&b-;Cwsz*bJx_jL3ZBqGpGR|EDr8H9v-5mBuu68raOEVN9EBZgMyh z&|a%!td%FWYT%|D+j8qX(zat}Ym0H??v>_fkS*;~yo z4w8kuwBMpyxom(yc z1jlf=2jpuid*-# zU@rD!{7YvDt{c}|%$nZ~S{Hvm)z*#b#XaJ@B01KGBh@|`qeL`HQ8k6=(M{61+jHRS zIZKpIIGrc8M*?@q=jyT7lQIXmHZtN2q3De54QJx_;Hw~a?aA3eoa6g__ThxZVyAfK zG{@n{d8RQXBBb5N6SxhUI?nLhQbw!6trlvGC~Ju3PJc7APda?oUYm z_RyB+z04Unum}V5Tp-a88nBr?Z)vlVp@E~vqD%q@XALF`)<*}LC9kes^ym3OQ4CXy zI&3!Ya~N0g2LP-Njq`)7z@a4WyEvD$Y9XDcP zKF;_bLtVYf?C1k>f9JLy8fF`!UjLx%U&h0ivg#|^xJtgm)9N2nm5!ap{ zoM|Ent6+v#hSpL~uAo6>jeG0ITe_|WOib~Uqz$P0wHLI&5H|^G=z-S0^BP7!!*_~| zjg}miB<1k$sqjOIWW3zlJ7Xm@LMH9;&1e*}A zm{-juOGd}L=fMVv$pN(if?}eDAtJUrouFO0yN)Jc3Z=ev7EOvn>^;}5ufSQ%_D z>hPXL>GtVpP1$KyjR48?4I%bVqN}(2*lh<)rXx8AbWT0uLRgraFDqCR*!8{vO3^Mf zX38QI`_T$)E`8J!QftLGSUd*<10!rTtJ{tlt(<)Q2<=6W*E?eGiA}oQb0t*UC2}%a z^hDSNPlj^PauCs$sw;IFGKAru33pv%X*)&k!rm?%ICW8NpMLT2xBwNm-4M>Q52oZG z*trd4U)tK0X6L9rg6$=uwiE~#bCuf8*679&hmDoQgyFT*x{knLn5%(gRT(bFg|}n_ z{u7sA7Y?-8;CIqhIc8Yc7iW-Hz5j{Rpd?N0ipiJ#ErChk;l;9=%5;b7ihCr2aq!#I zW6zmsh~uZZ<{P#1mXVOBWAtF;U{8N1Qs<8dSHW2PJxWDU)xop&Y#a=qpX zrD?)(II8NqsVZ+VQKu~Ci;57r^M<=1s096U0{?V^y7yN=182?@_$oiLoos7qPOel? zD86OipuM7#3PM6gL0dr6*+8wE7i6j)@KxAELgT~2R6}e3?{8RhL^it9q#<6{cF=cO zna_rq9x1P%jj#y*u?|iS3QN{>`1;>(|G;y^Q*?6`)#CiwTv|I=D9=m(g?{|V{8W|vZa zwi#~&NB$cDNQK0Ic_sT_VgEBGuQ&)J-^$2R?*AZkOnK6uYOxvq6+Qu-nx<5UT76aB zzma&NDZ0WXG{S$S4~yW}yFBS%pLIX~8~KE7L!j~hTv~3>UkI68FyU){`KM>Of}DzM J)d$nB{|mG<7k2;v diff --git a/frappe/docs/assets/img/desk/line_graph.png b/frappe/docs/assets/img/desk/line_graph.png deleted file mode 100644 index 02c60c7c1868536060186648c666bd37e8e4de8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39700 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 diff --git a/frappe/docs/assets/img/desk/line_graph_sales.png b/frappe/docs/assets/img/desk/line_graph_sales.png new file mode 100644 index 0000000000000000000000000000000000000000..0e70ae00318bf724f6f2a5228ccdeb3dd08ab3ad GIT binary patch literal 61751 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%0Af8x*TGiRycvh{E#P%^kD2Wh>omjEn_WSE#5T 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 literal 0 HcmV?d00001 diff --git a/frappe/docs/assets/img/desk/percentage_graph.png b/frappe/docs/assets/img/desk/percentage_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3a25d594797d00e665502aaaf94c331c943509f3 GIT binary patch literal 17452 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 literal 0 HcmV?d00001 diff --git a/frappe/docs/user/en/guides/desk/making_graphs.md b/frappe/docs/user/en/guides/desk/making_graphs.md index 9234fa58b4..720c9217bf 100644 --- a/frappe/docs/user/en/guides/desk/making_graphs.md +++ b/frappe/docs/user/en/guides/desk/making_graphs.md @@ -1,61 +1,100 @@ # Making Graphs -The Frappe UI **Graph** object enables you to render simple line and bar graphs for a discreet set of data points. You can also set special checkpoint values and summary stats. +The Frappe UI **Graph** object enables you to render simple line, bar or percentage graphs for single or multiple discreet sets of data points. You can also set special checkpoint values and summary stats. ### Example: Line graph -Here's is an example of a simple sales graph: - - render_graph: function() { - $('.form-graph').empty(); - - var months = ['Aug', 'Sep', 'Oct', 'Nov', 'Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul']; - var values = [2410, 3100, 1700, 1200, 2700, 1600, 2740, 1000, 850, 1500, 400, 2013]; - - var goal = 2500; - var current_val = 2013; - - new frappe.ui.Graph({ - parent: $('.form-graph'), - width: 700, - height: 140, - mode: 'line-graph', - - title: 'Sales', - subtitle: 'Monthly', - y_values: values, - x_points: months, - - specific_values: [ - { - name: "Goal", - line_type: "dashed", // "dashed" or "solid" - value: goal - }, - ], - summary_values: [ - { - name: "This month", - color: 'green', // Indicator colors: 'grey', 'blue', 'red', - // 'green', 'orange', 'purple', 'darkgrey', - // 'black', 'yellow', 'lightblue' - value: '₹ ' + current_val - }, - { - name: "Goal", - color: 'blue', - value: '₹ ' + goal - }, - { - name: "Completed", - color: 'green', - value: (current_val/goal*100).toFixed(1) + "%" - } - ] - }); - }, - - - -Setting the mode to 'bar-graph': +Here's an example of a simple sales graph: + + // Data + let months = ['August, 2016', 'September, 2016', 'October, 2016', 'November, 2016', + 'December, 2016', 'January, 2017', 'February, 2017', 'March, 2017', 'April, 2017', + 'May, 2017', 'June, 2017', 'July, 2017']; + + let values1 = [24100, 31000, 17000, 12000, 27000, 16000, 27400, 11000, 8500, 15000, 4000, 20130]; + let values2 = [17890, 10400, 12350, 20400, 17050, 23000, 7100, 13800, 16000, 20400, 11000, 13000]; + let goal = 25000; + let current_val = 20130; + + let g = new frappe.ui.Graph({ + parent: $('.form-graph').empty(), + height: 200, // optional + mode: 'line', // 'line', 'bar' or 'percentage' + + title: 'Sales', + subtitle: 'Monthly', + + y: [ + { + title: 'Data 1', + values: values1, + formatted: values1.map(d => '$ ' + d), + color: 'green' // Indicator colors: 'grey', 'blue', 'red', + // 'green', 'light-green', 'orange', 'purple', 'darkgrey', + // 'black', 'yellow', 'lightblue' + }, + { + title: 'Data 2', + values: values2, + formatted: values2.map(d => '$ ' + d), + color: 'light-green' + } + ], + + x: { + values: months.map(d => d.substring(0, 3)), + formatted: months + }, + + specific_values: [ + { + name: 'Goal', + line_type: 'dashed', // 'dashed' or 'solid' + value: goal + }, + ], + + summary: [ + { + name: 'This month', + color: 'orange', + value: '$ ' + current_val + }, + { + name: 'Goal', + color: 'blue', + value: '$ ' + goal + }, + { + name: 'Completed', + color: 'green', + value: (current_val/goal*100).toFixed(1) + "%" + } + ] + }); + + + +`bar` mode yeilds: + +You can set the `colors` property of `x` to an array of color values for `percentage` mode: + + + +You can also change the values of an existing graph with a new set of `y` values: + + setTimeout(() => { + g.change_values([ + { + values: data[2], + formatted: data[2].map(d => d + 'L') + }, + { + values: data[3], + formatted: data[3].map(d => d + 'L') + } + ]); + }, 1000); + + diff --git a/frappe/public/build.json b/frappe/public/build.json index b350c8151a..054421286e 100755 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -52,7 +52,8 @@ "public/css/desktop.css", "public/css/form.css", "public/css/mobile.css", - "public/css/kanban.css" + "public/css/kanban.css", + "public/css/graphs.css" ], "css/frappe-rtl.css": [ "public/css/bootstrap-rtl.css", @@ -164,7 +165,7 @@ "public/js/frappe/query_string.js", "public/js/frappe/ui/charts.js", - "public/js/frappe/ui/graph.js", + "public/js/frappe/ui/graphs.js", "public/js/frappe/ui/comment.js", "public/js/frappe/misc/rating_icons.html", diff --git a/frappe/public/css/form.css b/frappe/public/css/form.css index 0d21271862..c56811e892 100644 --- a/frappe/public/css/form.css +++ b/frappe/public/css/form.css @@ -678,80 +678,6 @@ select.form-control { padding: 10px; margin: 10px; } -.graph-container .graphics { - margin-top: 10px; - padding: 10px 0px; -} -.graph-container .stats-group { - display: flex; - justify-content: space-around; - flex: 1; -} -.graph-container .stats-container { - display: flex; - justify-content: space-around; -} -.graph-container .stats-container .stats { - padding-bottom: 15px; -} -.graph-container .stats-container .stats-title { - color: #8D99A6; -} -.graph-container .stats-container .stats-value { - font-size: 20px; - font-weight: 300; -} -.graph-container .stats-container .stats-description { - font-size: 12px; - color: #8D99A6; -} -.graph-container .stats-container .graph-data .stats-value { - color: #98d85b; -} -.bar-graph .axis, -.line-graph .axis { - font-size: 10px; - fill: #6a737d; -} -.bar-graph .axis line, -.line-graph .axis line { - stroke: rgba(27, 31, 35, 0.1); -} -.data-points circle { - fill: #28a745; - stroke: #fff; - stroke-width: 2; -} -.data-points g.mini { - fill: #98d85b; -} -.data-points path { - fill: none; - stroke: #28a745; - stroke-opacity: 1; - stroke-width: 2px; -} -.line-graph .path { - fill: none; - stroke: #28a745; - stroke-opacity: 1; - stroke-width: 2px; -} -line.dashed { - stroke-dasharray: 5,3; -} -.tick.x-axis-label { - display: block; -} -.tick .specific-value { - text-anchor: start; -} -.tick .y-value-text { - text-anchor: end; -} -.tick .x-value-text { - text-anchor: middle; -} body[data-route^="Form/Communication"] textarea[data-fieldname="subject"] { height: 80px !important; } diff --git a/frappe/public/css/graphs.css b/frappe/public/css/graphs.css new file mode 100644 index 0000000000..a9fdf62dc9 --- /dev/null +++ b/frappe/public/css/graphs.css @@ -0,0 +1,274 @@ +/* graphs */ +.graph-container .graph-focus-margin { + margin: 0px 5%; +} +.graph-container .graph-graphics { + margin-top: 10px; + padding: 10px 0px; + position: relative; +} +.graph-container .graph-stats-group { + display: flex; + justify-content: space-around; + flex: 1; +} +.graph-container .graph-stats-container { + display: flex; + justify-content: space-around; + padding-top: 10px; +} +.graph-container .graph-stats-container .stats { + padding-bottom: 15px; +} +.graph-container .graph-stats-container .stats-title { + color: #8D99A6; +} +.graph-container .graph-stats-container .stats-value { + font-size: 20px; + font-weight: 300; +} +.graph-container .graph-stats-container .stats-description { + font-size: 12px; + color: #8D99A6; +} +.graph-container .graph-stats-container .graph-data .stats-value { + color: #98d85b; +} +.graph-container .bar-graph .axis, +.graph-container .line-graph .axis { + font-size: 10px; + fill: #6a737d; +} +.graph-container .bar-graph .axis line, +.graph-container .line-graph .axis line { + stroke: rgba(27, 31, 35, 0.1); +} +.graph-container .percentage-graph { + margin-top: 35px; +} +.graph-container .percentage-graph .progress { + margin-bottom: 0px; +} +.graph-container .graph-data-points circle { + stroke: #fff; + stroke-width: 2; +} +.graph-container .graph-data-points path { + fill: none; + stroke-opacity: 1; + stroke-width: 2px; +} +.graph-container line.graph-dashed { + stroke-dasharray: 5,3; +} +.graph-container .tick.x-axis-label { + display: block; +} +.graph-container .tick .specific-value { + text-anchor: start; +} +.graph-container .tick .y-value-text { + text-anchor: end; +} +.graph-container .tick .x-value-text { + text-anchor: middle; +} +.graph-container .graph-svg-tip { + position: absolute; + z-index: 99999; + padding: 10px; + font-size: 12px; + color: #959da5; + text-align: center; + background: rgba(0, 0, 0, 0.8); + border-radius: 3px; +} +.graph-container .graph-svg-tip.comparison { + padding: 0; + text-align: left; + pointer-events: none; +} +.graph-container .graph-svg-tip.comparison .title { + display: block; + padding: 10px; + margin: 0; + font-weight: 600; + line-height: 1; + pointer-events: none; +} +.graph-container .graph-svg-tip.comparison ul { + margin: 0; + white-space: nowrap; + list-style: none; +} +.graph-container .graph-svg-tip.comparison li { + display: inline-block; + padding: 5px 10px; +} +.graph-container .graph-svg-tip ul, +.graph-container .graph-svg-tip ol { + padding-left: 0; + display: flex; +} +.graph-container .graph-svg-tip ul.data-point-list li { + min-width: 90px; + flex: 1; +} +.graph-container .graph-svg-tip strong { + color: #dfe2e5; +} +.graph-container .graph-svg-tip::after { + position: absolute; + bottom: -10px; + left: 50%; + width: 5px; + height: 5px; + margin: 0 0 0 -5px; + content: " "; + border: 5px solid transparent; + border-top-color: rgba(0, 0, 0, 0.8); +} +.graph-container .stroke.grey { + stroke: #F0F4F7; +} +.graph-container .stroke.blue { + stroke: #5e64ff; +} +.graph-container .stroke.red { + stroke: #ff5858; +} +.graph-container .stroke.light-green { + stroke: #98d85b; +} +.graph-container .stroke.green { + stroke: #28a745; +} +.graph-container .stroke.orange { + stroke: #ffa00a; +} +.graph-container .stroke.purple { + stroke: #743ee2; +} +.graph-container .stroke.darkgrey { + stroke: #b8c2cc; +} +.graph-container .stroke.black { + stroke: #36414C; +} +.graph-container .stroke.yellow { + stroke: #FEEF72; +} +.graph-container .stroke.light-blue { + stroke: #7CD6FD; +} +.graph-container .stroke.lightblue { + stroke: #7CD6FD; +} +.graph-container .fill.grey { + fill: #F0F4F7; +} +.graph-container .fill.blue { + fill: #5e64ff; +} +.graph-container .fill.red { + fill: #ff5858; +} +.graph-container .fill.light-green { + fill: #98d85b; +} +.graph-container .fill.green { + fill: #28a745; +} +.graph-container .fill.orange { + fill: #ffa00a; +} +.graph-container .fill.purple { + fill: #743ee2; +} +.graph-container .fill.darkgrey { + fill: #b8c2cc; +} +.graph-container .fill.black { + fill: #36414C; +} +.graph-container .fill.yellow { + fill: #FEEF72; +} +.graph-container .fill.light-blue { + fill: #7CD6FD; +} +.graph-container .fill.lightblue { + fill: #7CD6FD; +} +.graph-container .background.grey { + background: #F0F4F7; +} +.graph-container .background.blue { + background: #5e64ff; +} +.graph-container .background.red { + background: #ff5858; +} +.graph-container .background.light-green { + background: #98d85b; +} +.graph-container .background.green { + background: #28a745; +} +.graph-container .background.orange { + background: #ffa00a; +} +.graph-container .background.purple { + background: #743ee2; +} +.graph-container .background.darkgrey { + background: #b8c2cc; +} +.graph-container .background.black { + background: #36414C; +} +.graph-container .background.yellow { + background: #FEEF72; +} +.graph-container .background.light-blue { + background: #7CD6FD; +} +.graph-container .background.lightblue { + background: #7CD6FD; +} +.graph-container .border-top.grey { + border-top: 3px solid #F0F4F7; +} +.graph-container .border-top.blue { + border-top: 3px solid #5e64ff; +} +.graph-container .border-top.red { + border-top: 3px solid #ff5858; +} +.graph-container .border-top.light-green { + border-top: 3px solid #98d85b; +} +.graph-container .border-top.green { + border-top: 3px solid #28a745; +} +.graph-container .border-top.orange { + border-top: 3px solid #ffa00a; +} +.graph-container .border-top.purple { + border-top: 3px solid #743ee2; +} +.graph-container .border-top.darkgrey { + border-top: 3px solid #b8c2cc; +} +.graph-container .border-top.black { + border-top: 3px solid #36414C; +} +.graph-container .border-top.yellow { + border-top: 3px solid #FEEF72; +} +.graph-container .border-top.light-blue { + border-top: 3px solid #7CD6FD; +} +.graph-container .border-top.lightblue { + border-top: 3px solid #7CD6FD; +} diff --git a/frappe/public/js/frappe/form/dashboard.js b/frappe/public/js/frappe/form/dashboard.js index d27aa619e0..ca2b4ab9bd 100644 --- a/frappe/public/js/frappe/form/dashboard.js +++ b/frappe/public/js/frappe/form/dashboard.js @@ -418,9 +418,8 @@ frappe.ui.form.Dashboard = Class.extend({ this.graph_area.empty().removeClass('hidden'); $.extend(args, { parent: me.graph_area, - width: 710, - height: 140, - mode: 'line-graph' + mode: 'line', + height: 140 }); new frappe.ui.Graph(args); diff --git a/frappe/public/js/frappe/ui/graph.js b/frappe/public/js/frappe/ui/graph.js deleted file mode 100644 index 2347f13b0d..0000000000 --- a/frappe/public/js/frappe/ui/graph.js +++ /dev/null @@ -1,308 +0,0 @@ -// specific_values = [ -// { -// name: "Average", -// line_type: "dashed", // "dashed" or "solid" -// value: 10 -// }, - -// summary_values = [ -// { -// name: "Total", -// color: 'blue', // Indicator colors: 'grey', 'blue', 'red', 'green', 'orange', -// // 'purple', 'darkgrey', 'black', 'yellow', 'lightblue' -// value: 80 -// } -// ] - -frappe.ui.Graph = class Graph { - constructor({ - parent = null, - - width = 0, height = 0, - title = '', subtitle = '', - - y_values = [], - x_points = [], - - specific_values = [], - summary_values = [], - - color = '', - mode = '', - } = {}) { - - if(Object.getPrototypeOf(this) === frappe.ui.Graph.prototype) { - if(mode === 'line-graph') { - return new frappe.ui.LineGraph(arguments[0]); - } else if(mode === 'bar-graph') { - return new frappe.ui.BarGraph(arguments[0]); - } - } - - this.parent = parent; - - this.width = width; - this.height = height; - - this.title = title; - this.subtitle = subtitle; - - this.y_values = y_values; - this.x_points = x_points; - - this.specific_values = specific_values; - this.summary_values = summary_values; - - this.color = color; - this.mode = mode; - - this.$graph = null; - - frappe.require("assets/frappe/js/lib/snap.svg-min.js", this.setup.bind(this)); - } - - setup() { - this.setup_container(); - this.refresh(); - } - - refresh() { - this.setup_values(); - this.setup_components(); - this.make_y_axis(); - this.make_x_axis(); - this.make_units(); - if(this.specific_values.length > 0) { - this.show_specific_values(); - } - this.setup_group(); - - if(this.summary_values.length > 0) { - this.show_summary(); - } - } - - setup_container() { - this.container = $('

') - .addClass('graph-container') - .append($(`
${this.title}
`)) - .append($(`
${this.subtitle}
`)) - .append($(`
`)) - .append($(`
`)) - .appendTo(this.parent); - - let $graphics = this.container.find('.graphics'); - this.$stats_container = this.container.find('.stats-container'); - - this.$graph = $('
') - .addClass(this.mode) - .appendTo($graphics); - - this.$svg = $(``); - this.$graph.append(this.$svg); - - this.snap = new Snap(this.$svg[0]); - } - - setup_values() { - this.upper_graph_bound = this.get_upper_limit_and_parts(this.y_values)[0]; - this.y_axis = this.get_y_axis(this.y_values); - this.avg_unit_width = (this.width-100)/(this.x_points.length - 1); - } - - setup_components() { - this.y_axis_group = this.snap.g().attr({ - class: "y axis" - }); - - this.x_axis_group = this.snap.g().attr({ - class: "x axis" - }); - - this.graph_list = this.snap.g().attr({ - class: "data-points", - }); - - this.specific_y_lines = this.snap.g().attr({ - class: "specific axis", - }); - } - - setup_group() { - this.snap.g( - this.y_axis_group, - this.x_axis_group, - this.graph_list, - this.specific_y_lines - ).attr({ - transform: "translate(60, 10)" // default - }); - } - - show_specific_values() { - this.specific_values.map(d => { - this.specific_y_lines.add(this.snap.g( - this.snap.line(0, 0, this.width - 70, 0).attr({ - class: d.line_type === "dashed" ? "dashed": "" - }), - this.snap.text(this.width - 95, 0, d.name.toUpperCase()).attr({ - dy: ".32em", - class: "specific-value", - }) - ).attr({ - class: "tick", - transform: `translate(0, ${100 - 100/(this.upper_graph_bound/d.value) })` - })); - }); - } - - show_summary() { - this.summary_values.map(d => { - this.$stats_container.append($(`
- ${d.name}: ${d.value} -
`)); - }); - } - - // Helpers - get_upper_limit_and_parts(array) { - let specific_values = this.specific_values.map(d => d.value); - let max_val = parseInt(Math.max(...array, ...specific_values)); - if((max_val+"").length <= 1) { - return [10, 5]; - } else { - let multiplier = Math.pow(10, ((max_val+"").length - 1)); - let significant = Math.ceil(max_val/multiplier); - if(significant % 2 !== 0) significant++; - let parts = (significant < 5) ? significant : significant/2; - return [significant * multiplier, parts]; - } - } - - get_y_axis(array) { - let upper_limit, parts; - [upper_limit, parts] = this.get_upper_limit_and_parts(array); - let y_axis = []; - for(var i = 0; i <= parts; i++){ - y_axis.push(upper_limit / parts * i); - } - return y_axis; - } -}; - -frappe.ui.BarGraph = class BarGraph extends frappe.ui.Graph { - constructor(args = {}) { - super(args); - } - - setup_values() { - super.setup_values(); - this.avg_unit_width = (this.width-50)/(this.x_points.length + 2); - } - - make_y_axis() { - this.y_axis.map((point) => { - this.y_axis_group.add(this.snap.g( - this.snap.line(0, 0, this.width, 0), - this.snap.text(-3, 0, point+"").attr({ - dy: ".32em", - class: "y-value-text" - }) - ).attr({ - class: "tick", - transform: `translate(0, ${100 - (100/(this.y_axis.length-1) * this.y_axis.indexOf(point)) })` - })); - }); - } - - make_x_axis() { - this.x_axis_group.attr({ - transform: "translate(0,100)" - }); - this.x_points.map((point, i) => { - this.x_axis_group.add(this.snap.g( - this.snap.line(0, 0, 0, 6), - this.snap.text(0, 9, point).attr({ - dy: ".71em", - class: "x-value-text" - }) - ).attr({ - class: "tick x-axis-label", - transform: `translate(${ ((this.avg_unit_width - 5)*3/2) + i * (this.avg_unit_width + 5) }, 0)` - })); - }); - } - - make_units() { - this.y_values.map((value, i) => { - this.graph_list.add(this.snap.g( - this.snap.rect( - 0, - (100 - 100/(this.upper_graph_bound/value)), - this.avg_unit_width - 5, - 100/(this.upper_graph_bound/value) - ) - ).attr({ - class: "bar mini", - transform: `translate(${ (this.avg_unit_width - 5) + i * (this.avg_unit_width + 5) }, 0)`, - })); - }); - } -}; - -frappe.ui.LineGraph = class LineGraph extends frappe.ui.Graph { - constructor(args = {}) { - super(args); - } - - make_y_axis() { - this.y_axis.map((point) => { - this.y_axis_group.add(this.snap.g( - this.snap.line(0, 0, -6, 0), - this.snap.text(-9, 0, point+"").attr({ - dy: ".32em", - class: "y-value-text" - }) - ).attr({ - class: "tick", - transform: `translate(0, ${100 - (100/(this.y_axis.length-1) - * this.y_axis.indexOf(point)) })` - })); - }); - } - - make_x_axis() { - this.x_axis_group.attr({ - transform: "translate(0,-7)" - }); - this.x_points.map((point, i) => { - this.x_axis_group.add(this.snap.g( - this.snap.line(0, 0, 0, this.height - 25), - this.snap.text(0, this.height - 15, point).attr({ - dy: ".71em", - class: "x-value-text" - }) - ).attr({ - class: "tick", - transform: `translate(${ i * this.avg_unit_width }, 0)` - })); - }); - } - - make_units() { - let points_list = []; - this.y_values.map((value, i) => { - let x = i * this.avg_unit_width; - let y = (100 - 100/(this.upper_graph_bound/value)); - this.graph_list.add(this.snap.circle( x, y, 4)); - points_list.push(x+","+y); - }); - - this.make_path("M"+points_list.join("L")); - } - - make_path(path_str) { - this.graph_list.prepend(this.snap.path(path_str)); - } - -}; diff --git a/frappe/public/js/frappe/ui/graphs.js b/frappe/public/js/frappe/ui/graphs.js new file mode 100644 index 0000000000..f45ced98ba --- /dev/null +++ b/frappe/public/js/frappe/ui/graphs.js @@ -0,0 +1,569 @@ +// specific_values = [ +// { +// name: "Average", +// line_type: "dashed", // "dashed" or "solid" +// value: 10 +// }, + +// summary = [ +// { +// name: "Total", +// color: 'blue', // Indicator colors: 'grey', 'blue', 'red', 'green', 'orange', +// // 'purple', 'darkgrey', 'black', 'yellow', 'lightblue' +// value: 80 +// } +// ] + +// Graph: Abstract object +frappe.ui.Graph = class Graph { + constructor({ + parent = null, + height = 240, + + title = '', subtitle = '', + + y = [], + x = [], + + specific_values = [], + summary = [], + + color = 'blue', + mode = '', + }) { + + if(Object.getPrototypeOf(this) === frappe.ui.Graph.prototype) { + if(mode === 'line') { + return new frappe.ui.LineGraph(arguments[0]); + } else if(mode === 'bar') { + return new frappe.ui.BarGraph(arguments[0]); + } else if(mode === 'percentage') { + return new frappe.ui.PercentageGraph(arguments[0]); + } + } + + this.parent = parent; + this.base_height = height; + this.height = height - 40; + + this.translate_x = 60; + this.translate_y = 10; + + this.title = title; + this.subtitle = subtitle; + + this.y = y; + this.x = x; + + this.specific_values = specific_values; + this.summary = summary; + + this.color = color; + this.mode = mode; + + this.$graph = null; + + // Validate all arguments + + frappe.require("assets/frappe/js/lib/snap.svg-min.js", this.setup.bind(this)); + } + + setup() { + this.bind_window_event(); + this.refresh(); + } + + bind_window_event() { + $(window).on('resize orientationChange', () => { + this.refresh(); + }); + } + + refresh() { + + this.base_width = this.parent.width() - 20; + this.width = this.base_width - 100; + + this.setup_container(); + + this.setup_values(); + + this.setup_utils(); + + this.setup_components(); + this.make_graph_components(); + + this.make_tooltip(); + + if(this.summary.length > 0) { + this.show_custom_summary(); + } else { + this.show_summary(); + } + } + + setup_container() { + // Graph needs a dedicated parent element + this.parent.empty(); + + this.container = $('
') + .addClass('graph-container') + .append($(`
${this.title}
`)) + .append($(`
${this.subtitle}
`)) + .append($(`
`)) + .append($(`
`)) + .appendTo(this.parent); + + this.$graphics = this.container.find('.graph-graphics'); + this.$stats_container = this.container.find('.graph-stats-container'); + + this.$graph = $('
') + .addClass(this.mode + '-graph') + .appendTo(this.$graphics); + + this.$graph.append(this.make_graph_area()); + } + + make_graph_area() { + this.$svg = $(``); + this.snap = new Snap(this.$svg[0]); + return this.$svg; + } + + setup_values() { + // Multiplier + let all_values = this.specific_values.map(d => d.value); + this.y.map(d => { + all_values = all_values.concat(d.values); + }); + [this.upper_limit, this.parts] = this.get_upper_limit_and_parts(all_values); + this.multiplier = this.height / this.upper_limit; + + // Baselines + this.set_avg_unit_width_and_x_offset(); + + this.x_axis_values = this.x.values.map((d, i) => this.x_offset + i * this.avg_unit_width); + this.y_axis_values = this.get_y_axis_values(this.upper_limit, this.parts); + + // Data points + this.y.map(d => { + d.y_tops = d.values.map( val => this.height - val * this.multiplier ); + d.data_units = []; + }); + + this.calc_min_tops(); + } + + set_avg_unit_width_and_x_offset() { + this.avg_unit_width = this.width/(this.x.values.length - 1); + this.x_offset = 0; + } + + calc_min_tops() { + this.y_min_tops = new Array(this.x_axis_values.length).fill(9999); + this.y.map(d => { + d.y_tops.map( (y_top, i) => { + if(y_top < this.y_min_tops[i]) { + this.y_min_tops[i] = y_top; + } + }); + }); + } + + setup_components() { + this.y_axis_group = this.snap.g().attr({ class: "y axis" }); + this.x_axis_group = this.snap.g().attr({ class: "x axis" }); + this.data_units = this.snap.g().attr({ class: "graph-data-points" }); + this.specific_y_lines = this.snap.g().attr({ class: "specific axis" }); + } + + make_graph_components() { + this.make_y_axis(); + this.make_x_axis(); + + this.y.map((d, i) => { + this.make_units(d.y_tops, d.color, i); + this.make_path(d); + }); + + if(this.specific_values.length > 0) { + this.show_specific_values(); + } + this.setup_group(); + } + + setup_group() { + this.snap.g( + this.y_axis_group, + this.x_axis_group, + this.data_units, + this.specific_y_lines + ).attr({ + transform: `translate(${this.translate_x}, ${this.translate_y})` + }); + } + + // make HORIZONTAL lines for y values + make_y_axis() { + let width, text_end_at = -9, label_class = '', start_at = 0; + if(this.y_axis_mode === 'span') { // long spanning lines + width = this.width + 6; + start_at = -6; + } else if(this.y_axis_mode === 'tick'){ // short label lines + width = -6; + label_class = 'y-axis-label'; + } + + this.y_axis_values.map((point) => { + this.y_axis_group.add(this.snap.g( + this.snap.line(start_at, 0, width, 0), + this.snap.text(text_end_at, 0, point+"").attr({ + dy: ".32em", + class: "y-value-text" + }) + ).attr({ + class: `tick ${label_class}`, + transform: `translate(0, ${this.height - point * this.multiplier })` + })); + }); + } + + // make VERTICAL lines for x values + make_x_axis() { + let start_at, height, text_start_at, label_class = ''; + if(this.x_axis_mode === 'span') { // long spanning lines + start_at = -7; + height = this.height + 15; + text_start_at = this.height + 25; + } else if(this.x_axis_mode === 'tick'){ // short label lines + start_at = this.height; + height = 6; + text_start_at = 9; + label_class = 'x-axis-label'; + } + + this.x_axis_group.attr({ + transform: `translate(0,${start_at})` + }); + this.x.values.map((point, i) => { + this.x_axis_group.add(this.snap.g( + this.snap.line(0, 0, 0, height), + this.snap.text(0, text_start_at, point).attr({ + dy: ".71em", + class: "x-value-text" + }) + ).attr({ + class: `tick ${label_class}`, + transform: `translate(${ this.x_axis_values[i] }, 0)` + })); + }); + } + + make_units(y_values, color, dataset_index) { + let d = this.unit_args; + y_values.map((y, i) => { + let data_unit = this.draw[d.type](this.x_axis_values[i], + y, d.args, color, dataset_index); + this.data_units.add(data_unit); + this.y[dataset_index].data_units.push(data_unit); + }); + } + + make_path() { } + + make_tooltip() { + this.tip = $(`
+ +
    +
+
`).attr({ + style: `top: 0px; left: 0px; opacity: 0; pointer-events: none;` + }).appendTo(this.$graphics); + + this.tip_title = this.tip.find('.title'); + this.tip_data_point_list = this.tip.find('.data-point-list'); + + this.bind_tooltip(); + } + + bind_tooltip() { + this.$graphics.on('mousemove', (e) => { + let offset = $(this.$graphics).offset(); + var relX = e.pageX - offset.left - this.translate_x; + var relY = e.pageY - offset.top - this.translate_y; + + if(relY < this.height) { + for(var i=this.x_axis_values.length - 1; i >= 0 ; i--) { + let x_val = this.x_axis_values[i]; + if(relX > x_val - this.avg_unit_width/2) { + let x = x_val - this.tip.width()/2 + this.translate_x; + let y = this.y_min_tops[i] - this.tip.height() + this.translate_y; + + this.fill_tooltip(i); + + this.tip.attr({ + style: `top: ${y}px; left: ${x-0.5}px; opacity: 1; pointer-events: none;` + }); + break; + } + } + } else { + this.tip.attr({ + style: `top: 0px; left: 0px; opacity: 0; pointer-events: none;` + }); + } + }); + + this.$graphics.on('mouseleave', () => { + this.tip.attr({ + style: `top: 0px; left: 0px; opacity: 0; pointer-events: none;` + }); + }); + } + + fill_tooltip(i) { + this.tip_title.html(this.x.formatted && this.x.formatted.length>0 + ? this.x.formatted[i] : this.x.values[i]); + this.tip_data_point_list.empty(); + this.y.map(y_set => { + let $li = $(`
  • + + ${y_set.formatted ? y_set.formatted[i] : y_set.values[i]} + + ${y_set.title ? y_set.title : '' } +
  • `).addClass(`border-top ${y_set.color}`); + this.tip_data_point_list.append($li); + }); + } + + show_specific_values() { + this.specific_values.map(d => { + this.specific_y_lines.add(this.snap.g( + this.snap.line(0, 0, this.width, 0).attr({ + class: d.line_type === "dashed" ? "graph-dashed": "" + }), + this.snap.text(this.width + 5, 0, d.name.toUpperCase()).attr({ + dy: ".32em", + class: "specific-value", + }) + ).attr({ + class: "tick", + transform: `translate(0, ${this.height - d.value * this.multiplier })` + })); + }); + } + + show_summary() { } + + show_custom_summary() { + this.summary.map(d => { + this.$stats_container.append($(`
    + ${d.name}: ${d.value} +
    `)); + }); + } + + change_values(new_y) { + let u = this.unit_args; + this.y.map((d, i) => { + let new_d = new_y[i]; + new_d.y_tops = new_d.values.map(val => this.height - val * this.multiplier); + + // below is equal to this.y[i].data_units.. + d.data_units.map((unit, j) => { + let current_y_top = d.y_tops[j]; + let current_height = this.height - current_y_top; + + let new_y_top = new_d.y_tops[j]; + let new_height = current_height - (new_y_top - current_y_top); + + this.animate[u.type](unit, new_y_top, {new_height: new_height}); + }); + }); + + // Replace values and formatted and tops + this.y.map((d, i) => { + let new_d = new_y[i]; + [d.values, d.formatted, d.y_tops] = [new_d.values, new_d.formatted, new_d.y_tops]; + }); + + this.calc_min_tops(); + + // create new x,y pair string and animate path + if(this.y[0].path) { + new_y.map((e, i) => { + let new_points_list = e.y_tops.map((y, i) => (this.x_axis_values[i] + ',' + y)); + let new_path_str = "M"+new_points_list.join("L"); + this.y[i].path.animate({d:new_path_str}, 300, mina.easein); + }); + } + } + + // Helpers + get_strwidth(string) { + return string.length * 8; + } + + get_upper_limit_and_parts(array) { + let max_val = parseInt(Math.max(...array)); + if((max_val+"").length <= 1) { + return [10, 5]; + } else { + let multiplier = Math.pow(10, ((max_val+"").length - 1)); + let significant = Math.ceil(max_val/multiplier); + if(significant % 2 !== 0) significant++; + let parts = (significant < 5) ? significant : significant/2; + return [significant * multiplier, parts]; + } + } + + get_y_axis_values(upper_limit, parts) { + let y_axis = []; + for(var i = 0; i <= parts; i++){ + y_axis.push(upper_limit / parts * i); + } + return y_axis; + } + + // Objects + setup_utils() { + this.draw = { + 'bar': (x, y, args, color, index) => { + let total_width = this.avg_unit_width - args.space_width; + let start_x = x - total_width/2; + + let width = total_width / args.no_of_datasets; + let current_x = start_x + width * index; + return this.snap.rect(current_x, y, width, this.height - y).attr({ + class: `bar mini fill ${color}` + }); + }, + 'dot': (x, y, args, color) => { + return this.snap.circle(x, y, args.radius).attr({ + class: `fill ${color}` + }); + } + }; + + this.animate = { + 'bar': (bar, new_y, args) => { + bar.animate({height: args.new_height, y: new_y}, 300, mina.easein); + }, + 'dot': (dot, new_y) => { + dot.animate({cy: new_y}, 300, mina.easein); + } + }; + } +}; + +frappe.ui.BarGraph = class BarGraph extends frappe.ui.Graph { + constructor(args = {}) { + super(args); + } + + setup_values() { + var me = this; + super.setup_values(); + this.x_offset = this.avg_unit_width; + this.y_axis_mode = 'span'; + this.x_axis_mode = 'tick'; + this.unit_args = { + type: 'bar', + args: { + space_width: this.y.length > 1 ? + me.avg_unit_width/2 : me.avg_unit_width/8, + no_of_datasets: this.y.length + } + }; + } + + set_avg_unit_width_and_x_offset() { + this.avg_unit_width = this.width/(this.x.values.length + 1); + this.x_offset = this.avg_unit_width; + } +}; + +frappe.ui.LineGraph = class LineGraph extends frappe.ui.Graph { + constructor(args = {}) { + super(args); + } + + setup_values() { + super.setup_values(); + this.y_axis_mode = 'tick'; + this.x_axis_mode = 'span'; + this.unit_args = { + type: 'dot', + args: { radius: 4 } + }; + } + + make_path(d) { + let points_list = d.y_tops.map((y, i) => (this.x_axis_values[i] + ',' + y)); + let path_str = "M"+points_list.join("L"); + d.path = this.snap.path(path_str).attr({class: `stroke ${d.color}`}); + this.data_units.prepend(d.path); + } +}; + +frappe.ui.PercentageGraph = class PercentageGraph extends frappe.ui.Graph { + constructor(args = {}) { + super(args); + } + + make_graph_area() { + this.$graphics.addClass('graph-focus-margin'); + this.$stats_container.addClass('graph-focus-margin').attr({ + style: `padding-top: 0px; margin-bottom: 30px;` + }); + this.$div = $(`
    +
    +
    `); + this.$chart = this.$div.find('.progress-chart'); + return this.$div; + } + + setup_values() { + this.x.totals = this.x.values.map((d, i) => { + let total = 0; + this.y.map(e => { + total += e.values[i]; + }); + return total; + }); + + // Calculate x unit distances for tooltips + } + + setup_utils() { } + setup_components() { + this.$percentage_bar = $(`
    +
    `).appendTo(this.$chart); + } + + make_graph_components() { + let grand_total = this.x.totals.reduce((a, b) => a + b, 0); + this.x.units = []; + this.x.totals.map((total, i) => { + let $part = $(`
    `); + this.x.units.push($part); + this.$percentage_bar.append($part); + }); + } + + make_tooltip() { } + + show_summary() { + let values = this.x.formatted.length > 0 ? this.x.formatted : this.x.values; + this.x.totals.map((d, i) => { + this.$stats_container.append($(`
    + + ${values[i]}: + ${d} + +
    `)); + }); + } +}; diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index 3162cd5db1..b3762fea6f 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -43,7 +43,7 @@ frappe.views.QueryReport = Class.extend({ this.wrapper = $("
    ").appendTo(this.page.main); $('\ \ -
    \ +
    \
    - +
    - ").appendTo(me.table.find("tbody")); - - $("
    + App Name @@ -37,10 +37,10 @@

    Contents

    diff --git a/frappe/templates/autodoc/docs_home.html b/frappe/templates/autodoc/docs_home.html index 602c9fb5b0..9d38b0605b 100644 --- a/frappe/templates/autodoc/docs_home.html +++ b/frappe/templates/autodoc/docs_home.html @@ -5,57 +5,15 @@ {% if app.style %} {{ app.style }} {% endif %} - -
    -
    -
    -
    -

    {{ app.headline }}

    -

    {{ app.sub_heading }}

    -
    -
    -
    - -
    -
    -
    -
    -
    - - -{% if app.long_description %} -
    -
    -
    - {{ app.long_description|markdown }} -
    -
    -
    +{% if app.headline %} +

    {{ app.headline }}

    +{% endif %} +{% if app.sub_heading %} +

    {{ app.sub_heading }}

    {% endif %} -{% if not app.hide_install %} -
    -
    -
    -

    Install

    -

    From your site

    -

    To install this app, login to your site and click on "Installer". Search for {{ app.title }} and click on "Install"

    -

    Using Bench

    -

    Go to your bench folder and setup the new app

    -
    $ bench get-app {{app.name}} {{app.source_link}}
    -$ bench new-site testsite
    -$ bench --site testsite install-app {{app.name}}
    -

    Login to your site to configure the app.

    -

    Detailed Installation Steps

    -
    -
    -

    Author

    - -

    {{ app.publisher }} ({{ app.email }})

    -
    -
    -
    +{% if app.long_description %} +{{ app.long_description|markdown }} {% endif %} diff --git a/frappe/templates/autodoc/doctype.html b/frappe/templates/autodoc/doctype.html index 3236f0c994..b851fc52e8 100644 --- a/frappe/templates/autodoc/doctype.html +++ b/frappe/templates/autodoc/doctype.html @@ -1,10 +1,12 @@ + {% from "templates/autodoc/macros.html" import automodule, version, source_link, doctype_link %} {% set doc = frappe.get_doc("DocType", doctype) %} {% set controller = autodoc.get_controller(doctype) %} +

    {{ doctype }}

    {{ version(doctype) }} {{ source_link(app, app.name + "/" + scrub(doc.module) @@ -22,7 +24,7 @@

    Fields

    - +
    diff --git a/frappe/templates/autodoc/macros.html b/frappe/templates/autodoc/macros.html index 29e1d520b8..1401454967 100644 --- a/frappe/templates/autodoc/macros.html +++ b/frappe/templates/autodoc/macros.html @@ -59,7 +59,7 @@ {% macro doctype_link(app, doctype) %} {% set module = frappe.db.get_value("DocType", doctype, "module") %} {% if doctype and module %} -{{ doctype }} {% endif %} {% endmacro %} diff --git a/frappe/templates/autodoc/models_home.html b/frappe/templates/autodoc/models_home.html index c9f960d416..44c5057ca2 100644 --- a/frappe/templates/autodoc/models_home.html +++ b/frappe/templates/autodoc/models_home.html @@ -1,6 +1,9 @@ + {% from "templates/autodoc/macros.html" import source_link, version %} + +

    {{ app.title }}: Models (DocTypes)

    {{ version(app.name) }} {{ source_link(app, app.name, True) }} diff --git a/frappe/templates/autodoc/module_home.html b/frappe/templates/autodoc/module_home.html index 3e75f3aeca..c10994841b 100644 --- a/frappe/templates/autodoc/module_home.html +++ b/frappe/templates/autodoc/module_home.html @@ -1,6 +1,9 @@ + {% from "templates/autodoc/macros.html" import source_link, version %} + +

    Module {{ name }}

    {{ version(app.name) }} {{ source_link(app, app.name + "/" + scrub(name), True) }} diff --git a/frappe/templates/autodoc/package_index.html b/frappe/templates/autodoc/package_index.html index 0381e07af0..9107996dfa 100644 --- a/frappe/templates/autodoc/package_index.html +++ b/frappe/templates/autodoc/package_index.html @@ -1,6 +1,9 @@ + {% from "templates/autodoc/macros.html" import source_link, version %} + +

    {{ title }}

    {{ version(app.name) }} {{ source_link(app, title, True) }} diff --git a/frappe/templates/autodoc/pymodule.html b/frappe/templates/autodoc/pymodule.html index ab6301ae85..537b37ead0 100644 --- a/frappe/templates/autodoc/pymodule.html +++ b/frappe/templates/autodoc/pymodule.html @@ -1,7 +1,10 @@ + {%- from "templates/autodoc/macros.html" import automodule, source_link, version -%} + +

    {{ name }}

    {{ version(app.name) }} {{ source_link(app, full_module_name.replace(".", "/") + ".py") }} diff --git a/frappe/templates/includes/blog/blog.html b/frappe/templates/includes/blog/blog.html index 18617a3cf7..01e3e44d6b 100644 --- a/frappe/templates/includes/blog/blog.html +++ b/frappe/templates/includes/blog/blog.html @@ -5,6 +5,25 @@ {% block hero %}{% endblock %} {% block page_content %} +
    diff --git a/frappe/templates/includes/comments/comment.html b/frappe/templates/includes/comments/comment.html index 2d7e1603ed..e0f923b2e0 100644 --- a/frappe/templates/includes/comments/comment.html +++ b/frappe/templates/includes/comments/comment.html @@ -1,4 +1,4 @@ -
    +
    diff --git a/frappe/templates/includes/full_index.html b/frappe/templates/includes/full_index.html index 1f798c66ed..a7443c482a 100644 --- a/frappe/templates/includes/full_index.html +++ b/frappe/templates/includes/full_index.html @@ -2,10 +2,12 @@
      {% for item in children_map[route] %}
    1. - {{ item.title }} + {{ item.title }} + {# {% if children_map[item.route] %} {{ make_item_list(item.route, children_map) }} {% endif %} + #}
    2. {% endfor %}
    diff --git a/frappe/templates/includes/web_sidebar.html b/frappe/templates/includes/web_sidebar.html index 764ce4d277..d452e8af3f 100644 --- a/frappe/templates/includes/web_sidebar.html +++ b/frappe/templates/includes/web_sidebar.html @@ -22,7 +22,7 @@ {% endif %} {% for item in sidebar_items -%}
    diff --git a/frappe/utils/jinja.py b/frappe/utils/jinja.py index 749a28479f..cccf4f079c 100644 --- a/frappe/utils/jinja.py +++ b/frappe/utils/jinja.py @@ -75,7 +75,7 @@ def get_allowed_functions_for_jenv(): import frappe.utils.data from frappe.utils.autodoc import automodule, get_version from frappe.model.document import get_controller - from frappe.website.utils import get_shade + from frappe.website.utils import (get_shade, get_toc, get_next_link) from frappe.modules import scrub import mimetypes from html2text import html2text @@ -128,11 +128,16 @@ def get_allowed_functions_for_jenv(): 'csrf_token': frappe.local.session.data.csrf_token if getattr(frappe.local, "session", None) else '' }, }, + 'style': { + 'border_color': '#d1d8dd' + }, "autodoc": { "get_version": get_version, "automodule": automodule, "get_controller": get_controller }, + 'get_toc': get_toc, + 'get_next_link': get_next_link, "_": frappe._, "get_shade": get_shade, "scrub": scrub, @@ -159,8 +164,10 @@ def get_jloader(): if frappe.local.flags.in_setup_help: apps = ['frappe'] else: - apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps(sort=True) - apps.reverse() + apps = frappe.get_hooks('template_apps') + if not apps: + apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps(sort=True) + apps.reverse() if not "frappe" in apps: apps.append('frappe') diff --git a/frappe/utils/setup_docs.py b/frappe/utils/setup_docs.py index 78f8a9602b..08092c472f 100644 --- a/frappe/utils/setup_docs.py +++ b/frappe/utils/setup_docs.py @@ -13,12 +13,12 @@ from frappe.utils import markdown from six import iteritems class setup_docs(object): - def __init__(self, app): + def __init__(self, app, target_app): """Generate source templates for models reference and module API and templates at `templates/autodoc` """ self.app = app - + self.target_app = target_app frappe.flags.web_pages_folders = ['docs',] frappe.flags.web_pages_apps = [self.app,] @@ -44,7 +44,6 @@ class setup_docs(object): "sub_heading": self.docs_config.sub_heading, "source_link": self.docs_config.source_link, "hide_install": getattr(self.docs_config, "hide_install", False), - "docs_base_url": self.docs_config.docs_base_url, "long_description": markdown(getattr(self.docs_config, "long_description", "")), "license": self.hooks.get("app_license")[0], "branch": getattr(self.docs_config, "branch", None) or "develop", @@ -59,7 +58,7 @@ class setup_docs(object): def build(self, docs_version): """Build templates for docs models and Python API""" - self.docs_path = frappe.get_app_path(self.app, "docs") + self.docs_path = frappe.get_app_path(self.target_app, 'www', "docs") self.path = os.path.join(self.docs_path, docs_version) self.app_context["app"]["docs_version"] = docs_version @@ -91,14 +90,50 @@ class setup_docs(object): #print parts module, doctype = parts[-3], parts[-1] - if doctype not in ("doctype", "boilerplate"): + if doctype != "boilerplate": self.write_model_file(basepath, module, doctype) # standard python module if self.is_py_module(basepath, folders, files): self.write_modules(basepath, folders, files) - self.build_user_docs() + #self.build_user_docs() + self.copy_user_assets() + self.add_sidebars() + self.add_breadcrumbs_for_user_pages() + + def add_breadcrumbs_for_user_pages(self): + for basepath, folders, files in os.walk(os.path.join(self.docs_path, + 'user')): # pylint: disable=unused-variable + for fname in files: + if fname.endswith('.md') or fname.endswith('.html'): + add_breadcrumbs_tag(os.path.join(basepath, fname)) + + def add_sidebars(self): + '''Add _sidebar.json in each folder in docs''' + for basepath, folders, files in os.walk(self.docs_path): # pylint: disable=unused-variable + with open(os.path.join(basepath, '_sidebar.json'), 'w') as sidebarfile: + sidebarfile.write(frappe.as_json([ + {"title": "Docs Home", "route": "/docs"}, + {"title": "User Guide", "route": "/docs/user"}, + {"title": "Server API", "route": "/docs/current/api"}, + {"title": "Models (Reference)", "route": "/docs/current/models"}, + {"title": "Improve Docs", "route": + "{0}/tree/develop/{1}/docs".format(self.docs_config.source_link, self.app)} + ])) + + + def copy_user_assets(self): + '''Copy docs/user and docs/assets to the target app''' + print('Copying docs/user and docs/assets...') + shutil.rmtree(os.path.join(self.docs_path, 'user'), + ignore_errors=True) + shutil.rmtree(os.path.join(self.docs_path, 'assets'), + ignore_errors=True) + shutil.copytree(os.path.join(self.app_path, 'docs', 'user'), + os.path.join(self.docs_path, 'user')) + shutil.copytree(os.path.join(self.app_path, 'docs', 'assets'), + frappe.get_app_path(self.target_app, 'www', 'docs', 'assets')) def make_home_pages(self): """Make standard home pages for docs, developer docs, api and models @@ -463,3 +498,9 @@ edit_link = '''
    ''' + +def add_breadcrumbs_tag(path): + with open(path, 'r') as f: + content = frappe.as_unicode(f.read()) + with open(path, 'w') as f: + f.write(('\n' + content).encode('utf-8')) diff --git a/frappe/website/context.py b/frappe/website/context.py index b800571aaa..99cb9371bc 100644 --- a/frappe/website/context.py +++ b/frappe/website/context.py @@ -16,15 +16,17 @@ def get_context(path, args=None): if args: context.update(args) - context = build_context(context) - if hasattr(frappe.local, 'request'): # for (remove leading slash) # path could be overriden in render.resolve_from_map - context["path"] = frappe.local.request.path[1:] + context["path"] = frappe.local.request.path.strip('/ ') else: context["path"] = path + context.route = context.path + + context = build_context(context) + # set using frappe.respond_as_web_page if hasattr(frappe.local, 'response') and frappe.local.response.get('context'): context.update(frappe.local.response.context) @@ -69,6 +71,9 @@ def build_context(context): if context.url_prefix and context.url_prefix[-1]!='/': context.url_prefix += '/' + # for backward compatibility + context.docs_base_url = '/docs' + context.update(get_website_settings()) context.update(frappe.local.conf.get("website_context") or {}) @@ -105,7 +110,21 @@ def build_context(context): update_controller_context(context, extension) add_metatags(context) + add_sidebar_and_breadcrumbs(context) + + # determine templates to be used + if not context.base_template_path: + app_base = frappe.get_hooks("base_template") + context.base_template_path = app_base[0] if app_base else "templates/base.html" + + if context.title_prefix and context.title and not context.title.startswith(context.title_prefix): + context.title = '{0} - {1}'.format(context.title_prefix, context.title) + return context + +def add_sidebar_and_breadcrumbs(context): + '''Add sidebar and breadcrumbs to context''' + from frappe.website.router import get_page_info_from_template if context.show_sidebar: context.no_cache = 1 add_sidebar_data(context) @@ -117,16 +136,12 @@ def build_context(context): context.sidebar_items = json.loads(sidebarfile.read()) context.show_sidebar = 1 - - # determine templates to be used - if not context.base_template_path: - app_base = frappe.get_hooks("base_template") - context.base_template_path = app_base[0] if app_base else "templates/base.html" - - if context.title_prefix and context.title and not context.title.startswith(context.title_prefix): - context.title = '{0} - {1}'.format(context.title_prefix, context.title) - - return context + if context.add_breadcrumbs and not context.parents: + if context.basepath: + parent_path = os.path.dirname(context.path).rstrip('/') + page_info = get_page_info_from_template(parent_path) + if page_info: + context.parents = [dict(route=parent_path, title=page_info.title)] def add_sidebar_data(context): from frappe.utils.user import get_fullname_and_avatar diff --git a/frappe/website/doctype/blog_post/templates/blog_post.html b/frappe/website/doctype/blog_post/templates/blog_post.html index 7ae1ed778e..24a128ddd6 100644 --- a/frappe/website/doctype/blog_post/templates/blog_post.html +++ b/frappe/website/doctype/blog_post/templates/blog_post.html @@ -1,6 +1,36 @@ {% extends "templates/web.html" %} {% block page_content %} +
    diff --git a/frappe/website/doctype/blog_post/templates/blog_post_row.html b/frappe/website/doctype/blog_post/templates/blog_post_row.html index 097feff8b9..42c1833920 100644 --- a/frappe/website/doctype/blog_post/templates/blog_post_row.html +++ b/frappe/website/doctype/blog_post/templates/blog_post_row.html @@ -12,11 +12,11 @@

    {{ _("By") }} {{ post.full_name }} - {{ frappe.format_date(post.published_on) }} - + {{ frappe.format_date(post.published_on) }} + {{ post.category.title }} - {{ post.comment_text }} + {{ post.comment_text }}

    diff --git a/frappe/website/purifycss.py b/frappe/website/purifycss.py new file mode 100644 index 0000000000..00ca06b0c4 --- /dev/null +++ b/frappe/website/purifycss.py @@ -0,0 +1,32 @@ +import frappe, re, os + +def purifycss(): + source = frappe.get_app_path('frappe_theme', 'public', 'less', 'frappe_theme.less') + target_apps = ['erpnext_com', 'frappe_io', 'translator', 'chart_of_accounts_builder', 'frappe_theme'] + with open(source, 'r') as f: + src = f.read() + + classes = [] + for line in src.splitlines(): + line = line.strip() + if not line: + continue + if line[0]=='@': + continue + classes.extend(re.findall('\.([^0-9][^ :&.{,(]*)', line)) + + classes = list(set(classes)) + + for app in target_apps: + for basepath, folders, files in os.walk(frappe.get_app_path(app)): + for fname in files: + if fname.endswith('.html') or fname.endswith('.md'): + #print 'checking {0}...'.format(fname) + with open(os.path.join(basepath, fname), 'r') as f: + src = f.read() + for c in classes: + if c in src: + classes.remove(c) + + for c in sorted(classes): + print c diff --git a/frappe/website/render.py b/frappe/website/render.py index a36013fa43..ed446065fb 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -6,14 +6,16 @@ import frappe from frappe import _ import frappe.sessions from frappe.utils import cstr -import mimetypes, json +import os, mimetypes, json from six import iteritems from werkzeug.wrappers import Response from werkzeug.routing import Map, Rule, NotFound +from werkzeug.wsgi import wrap_file from frappe.website.context import get_context -from frappe.website.utils import get_home_page, can_cache, delete_page_cache +from frappe.website.utils import (get_home_page, can_cache, delete_page_cache, + get_toc, get_next_link) from frappe.website.router import clear_sitemap from frappe.translate import guess_language @@ -21,14 +23,16 @@ class PageNotFoundError(Exception): pass def render(path=None, http_status_code=None): """render html page""" - path = resolve_path(path or frappe.local.request.path.strip('/ ')) + path = resolve_path(path or frappe.local.request.path) + path = path.strip('/ ') data = None # if in list of already known 404s, send it if can_cache() and frappe.cache().hget('website_404', frappe.request.url): data = render_page('404') http_status_code = 404 - + elif is_static_file(path): + return get_static_file_reponse() else: try: data = render_page_by_language(path) @@ -71,6 +75,32 @@ def render(path=None, http_status_code=None): return build_response(path, data, http_status_code or 200) +def is_static_file(path): + if ('.' not in path): + return False + extn = path.rsplit('.', 1)[-1] + if extn in ('html', 'md', 'js'): + return False + + for app in frappe.get_installed_apps(): + file_path = frappe.get_app_path(app, 'www') + '/' + path + if os.path.exists(file_path): + frappe.flags.file_path = file_path + return True + + return False + +def get_static_file_reponse(): + try: + f = open(frappe.flags.file_path, 'rb') + except IOError: + raise NotFound + + response = Response(wrap_file(frappe.local.request.environ, f), direct_passthrough=True) + response.mimetype = mimetypes.guess_type(frappe.flags.file_path)[0] or b'application/octet-stream' + return response + + def build_response(path, data, http_status_code, headers=None): # build response response = Response() @@ -143,6 +173,12 @@ def build_page(path): elif context.template: html = frappe.get_template(context.template).render(context) + if '{index}' in html: + html = html.replace('{index}', get_toc(context.route)) + + if '{next}' in html: + html = html.replace('{next}', get_next_link(context.route)) + # html = frappe.get_template(context.base_template_path).render(context) if can_cache(context.no_cache): @@ -221,7 +257,9 @@ def clear_cache(path=None): '''Clear website caches :param path: (optional) for the given path''' - frappe.cache().delete_value("website_generator_routes") + for key in ('website_generator_routes', 'website_pages', + 'website_full_index'): + frappe.cache().delete_value(key) delete_page_cache(path) frappe.cache().delete_value("website_404") if not path: diff --git a/frappe/website/router.py b/frappe/website/router.py index 4ce5655f78..38799b72ff 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -6,7 +6,6 @@ import frappe, os from frappe.website.utils import can_cache, delete_page_cache, extract_title from frappe.model.document import get_controller -from frappe import _ def resolve_route(path): """Returns the page route object based on searching in pages and generators. @@ -15,7 +14,7 @@ def resolve_route(path): The only exceptions are `/about` and `/contact` these will be searched in Web Pages first before checking the standard pages.""" if path not in ("about", "contact"): - context = get_page_context_from_template(path) + context = get_page_info_from_template(path) if context: return context return get_page_context_from_doctype(path) @@ -23,7 +22,7 @@ def resolve_route(path): context = get_page_context_from_doctype(path) if context: return context - return get_page_context_from_template(path) + return get_page_info_from_template(path) def get_page_context(path): page_context = None @@ -54,12 +53,12 @@ def make_page_context(path): return context -def get_page_context_from_template(path): +def get_page_info_from_template(path): '''Return page_info from path''' for app in frappe.get_installed_apps(frappe_last=True): app_path = frappe.get_app_path(app) - folders = frappe.local.flags.web_pages_folders or ('www', 'templates/pages') + folders = get_start_folders() for start in folders: search_path = os.path.join(app_path, start, path) @@ -68,14 +67,15 @@ def get_page_context_from_template(path): for o in options: option = frappe.as_unicode(o) if os.path.exists(option) and not os.path.isdir(option): - return get_page_info(option, app, app_path=app_path) + return get_page_info(option, app, start, app_path=app_path) return None def get_page_context_from_doctype(path): page_info = get_page_info_from_doctypes(path) if page_info: - return frappe.get_doc(page_info.get("doctype"), page_info.get("name")).get_page_info() + return frappe.get_doc(page_info.get("doctype"), + page_info.get("name")).get_page_info() def clear_sitemap(): delete_page_cache("*") @@ -120,57 +120,60 @@ def get_page_info_from_doctypes(path=None): def get_pages(app=None): '''Get all pages. Called for docs / sitemap''' - pages = {} - frappe.local.flags.in_get_all_pages = True - folders = frappe.local.flags.web_pages_folders or ('www', 'templates/pages') + def _build(app): + pages = {} - if app: - apps = [app] - else: - apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps() + if app: + apps = [app] + else: + apps = frappe.local.flags.web_pages_apps or frappe.get_installed_apps() - for app in apps: - app_path = frappe.get_app_path(app) + for app in apps: + app_path = frappe.get_app_path(app) - for start in folders: - path = os.path.join(app_path, start) - pages.update(get_pages_from_path(path, app, app_path)) - frappe.local.flags.in_get_all_pages = False + for start in get_start_folders(): + pages.update(get_pages_from_path(start, app, app_path)) - return pages + return pages + + return frappe.cache().get_value('website_pages', lambda: _build(app)) -def get_pages_from_path(path, app, app_path): +def get_pages_from_path(start, app, app_path): pages = {} - if os.path.exists(path): - for basepath, folders, files in os.walk(path): + start_path = os.path.join(app_path, start) + if os.path.exists(start_path): + for basepath, folders, files in os.walk(start_path): # add missing __init__.py if not '__init__.py' in files: open(os.path.join(basepath, '__init__.py'), 'a').close() for fname in files: fname = frappe.utils.cstr(fname) + if not '.' in fname: + continue page_name, extn = fname.rsplit(".", 1) if extn in ('js', 'css') and os.path.exists(os.path.join(basepath, fname + '.html')): # js, css is linked to html, skip continue if extn in ("html", "xml", "js", "css", "md"): - page_info = get_page_info(path, app, basepath, app_path, fname) + page_info = get_page_info(os.path.join(basepath, fname), + app, start, basepath, app_path, fname) pages[page_info.route] = page_info # print frappe.as_json(pages[-1]) return pages -def get_page_info(path, app, basepath=None, app_path=None, fname=None): +def get_page_info(path, app, start, basepath=None, app_path=None, fname=None): '''Load page info''' - if not fname: + if fname is None: fname = os.path.basename(path) - if not app_path: + if app_path is None: app_path = frappe.get_app_path(app) - if not basepath: + if basepath is None: basepath = os.path.dirname(path) page_name, extn = fname.rsplit(".", 1) @@ -187,9 +190,16 @@ def get_page_info(path, app, basepath=None, app_path=None, fname=None): if page_info.basename == 'index': page_info.basename = "" - page_info.route = page_info.name = page_info.page_name = os.path.join(os.path.relpath(basepath, path), - page_info.basename).strip('/.') + # get route from template name + page_info.route = page_info.template.replace(start, '').strip('/') + if os.path.basename(page_info.route) in ('index.html', 'index.md'): + page_info.route = os.path.dirname(page_info.route) + # remove the extension + if page_info.route.endswith('.md') or page_info.route.endswith('.html'): + page_info.route = page_info.route.rsplit('.', 1)[0] + + page_info.name = page_info.page_name = page_info.route # controller page_info.controller_path = os.path.join(basepath, page_name.replace("-", "_") + ".py") @@ -202,9 +212,11 @@ def get_page_info(path, app, basepath=None, app_path=None, fname=None): # get the source setup_source(page_info) - if page_info.only_content: - # extract properties from HTML comments - load_properties(page_info) + # extract properties from HTML comments + load_properties(page_info) + + # if not page_info.title: + # print('no-title-for', page_info.route) return page_info @@ -255,48 +267,14 @@ def setup_index(page_info): if os.path.exists(index_txt_path): page_info.index = open(index_txt_path, 'r').read().splitlines() -def make_toc(context, out, app=None): - '''Insert full index (table of contents) for {index} tag''' - from frappe.website.utils import get_full_index - if '{index}' in out: - html = frappe.get_template("templates/includes/full_index.html").render({ - "full_index": get_full_index(app=app), - "url_prefix": context.url_prefix or "/", - "route": context.route - }) - - out = out.replace('{index}', html) - - if '{next}' in out: - # insert next link - next_item = None - children_map = get_full_index(app=app) - parent_route = os.path.dirname(context.route) - children = children_map[parent_route] - - if parent_route and children: - for i, c in enumerate(children): - if c.route == context.route and i < (len(children) - 1): - next_item = children[i+1] - next_item.url_prefix = context.url_prefix or "/" - - if next_item: - if next_item.route and next_item.title: - html = ('

    '+_("Next")\ - +': {title}

    ').format(**next_item) - - out = out.replace('{next}', html) - - return out - - def load_properties(page_info): '''Load properties like no_cache, title from raw''' if not page_info.title: - page_info.title = extract_title(page_info.source, page_info.name) + page_info.title = extract_title(page_info.source, page_info.route) - if page_info.title and not '{% block title %}' in page_info.source: - page_info.source += '\n{% block title %}{{ title }}{% endblock %}' + # if page_info.title and not '{% block title %}' in page_info.source: + # if not page_info.only_content: + # page_info.source += '\n{% block title %}{{ title }}{% endblock %}' if "" in page_info.source: page_info.no_breadcrumbs = 1 @@ -304,13 +282,19 @@ def load_properties(page_info): if "" in page_info.source: page_info.show_sidebar = 1 + if "" in page_info.source: + page_info.add_breadcrumbs = 1 + if "" in page_info.source: page_info.no_header = 1 - else: - # every page needs a header - # add missing header if there is no

    tag - if (not '{% block header %}' in page_info.source) and (not ' tag + # if (not '{% block header %}' in page_info.source) and (not '" in page_info.source: page_info.no_cache = 1 @@ -346,7 +330,7 @@ def sync_global_search(): for app in frappe.get_installed_apps(frappe_last=True): app_path = frappe.get_app_path(app) - folders = frappe.local.flags.web_pages_folders or ('www', 'templates/pages') + folders = get_start_folders() for start in folders: for basepath, folders, files in os.walk(os.path.join(app_path, start)): @@ -374,3 +358,5 @@ def sync_global_search(): sync_global_search() +def get_start_folders(): + return frappe.local.flags.web_pages_folders or ('www', 'templates/pages') \ No newline at end of file diff --git a/frappe/website/utils.py b/frappe/website/utils.py index 31ff4acddc..9424ec722e 100644 --- a/frappe/website/utils.py +++ b/frappe/website/utils.py @@ -5,9 +5,9 @@ from __future__ import unicode_literals import frappe, re, os from six import iteritems - def delete_page_cache(path): cache = frappe.cache() + cache.delete_value('full_index') groups = ("website_page", "page_context") if path: for name in groups: @@ -184,38 +184,89 @@ def abs_url(path): path = "/" + path return path +def get_toc(route, url_prefix=None, app=None): + '''Insert full index (table of contents) for {index} tag''' + from frappe.website.utils import get_full_index + + full_index = get_full_index(app=app) + + return frappe.get_template("templates/includes/full_index.html").render({ + "full_index": full_index, + "url_prefix": url_prefix or "/", + "route": route.rstrip('/') + }) + +def get_next_link(route, url_prefix=None, app=None): + # insert next link + next_item = None + route = route.rstrip('/') + children_map = get_full_index(app=app) + parent_route = os.path.dirname(route) + children = children_map[parent_route] + + if parent_route and children: + for i, c in enumerate(children): + if c.route == route and i < (len(children) - 1): + next_item = children[i+1] + next_item.url_prefix = url_prefix or "/" + + if next_item: + if next_item.route and next_item.title: + html = ('

    ' + frappe._("Next")\ + +': {title}

    ').format(**next_item) + + return html + + return '' + def get_full_index(route=None, app=None): """Returns full index of the website for www upto the n-th level""" + from frappe.website.router import get_pages + if not frappe.local.flags.children_map: - from frappe.website.router import get_pages - children_map = {} - pages = get_pages(app=app) - - # make children map - for route, page_info in iteritems(pages): - parent_route = os.path.dirname(route) - children_map.setdefault(parent_route, []).append(page_info) - - if frappe.flags.local_docs: - page_info.extn = '.html' - - # order as per index if present - for route, children in children_map.items(): - page_info = pages[route] - if page_info.index: - new_children = [] - page_info.extn = '' - for name in page_info.index: - child_route = page_info.route + '/' + name - if child_route in pages: - new_children.append(pages[child_route]) - - # add remaining pages not in index.txt - for c in children: - if c not in new_children: - new_children.append(c) - - children_map[route] = new_children + def _build(): + children_map = {} + added = [] + pages = get_pages(app=app) + + # make children map + for route, page_info in iteritems(pages): + parent_route = os.path.dirname(route) + if parent_route not in added: + children_map.setdefault(parent_route, []).append(page_info) + + # order as per index if present + for route, children in children_map.items(): + if not route in pages: + # no parent (?) + continue + + page_info = pages[route] + if page_info.index or ('index' in page_info.template): + new_children = [] + page_info.extn = '' + for name in (page_info.index or []): + child_route = page_info.route + '/' + name + if child_route in pages: + if child_route not in added: + new_children.append(pages[child_route]) + added.append(child_route) + + # add remaining pages not in index.txt + _children = sorted(children, lambda a, b: cmp( + os.path.basename(a.route), os.path.basename(b.route))) + + for child_route in _children: + if child_route not in new_children: + if child_route not in added: + new_children.append(child_route) + added.append(child_route) + + children_map[route] = new_children + + return children_map + + children_map = frappe.cache().get_value('website_full_index', _build) frappe.local.flags.children_map = children_map @@ -223,12 +274,14 @@ def get_full_index(route=None, app=None): def extract_title(source, path): '''Returns title from `<!-- title -->` or <h1> or path''' + title = '' + if "', source)[0].strip() elif "

    " in source: match = re.findall('

    ([^<]*)', source) title = match[0].strip()[:300] - else: - title = os.path.basename(path).replace('_', ' ').replace('-', ' ').title() + if not title: + title = os.path.basename(path.rsplit('.', )[0].rstrip('/')).replace('_', ' ').replace('-', ' ').title() return title diff --git a/frappe/www/website_script.js b/frappe/www/website_script.js index 3b84bdd084..fd361f8986 100644 --- a/frappe/www/website_script.js +++ b/frappe/www/website_script.js @@ -1,7 +1,8 @@ +// website_script.js {% if javascript -%}{{ javascript }}{%- endif %} {% if google_analytics_id -%} - +// Google Analytics (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) @@ -9,5 +10,5 @@ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) ga('create', '{{ google_analytics_id }}', 'auto'); ga('send', 'pageview'); - +// End Google Analytics {%- endif %} diff --git a/frappe/www/website_script.py b/frappe/www/website_script.py index 2f5ee0d654..0db00bc3d8 100644 --- a/frappe/www/website_script.py +++ b/frappe/www/website_script.py @@ -10,7 +10,8 @@ no_sitemap = 1 base_template_path = "templates/www/website_script.js" def get_context(context): - context.javascript = frappe.db.get_single_value('Website Script', 'javascript') or "" + context.javascript = frappe.db.get_single_value('Website Script', + 'javascript') or "" theme = get_active_theme() js = strip(theme and theme.js or "") From 67277507f041e9905cadb991bc3754ee4cf4ca70 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Fri, 28 Jul 2017 14:30:18 +0530 Subject: [PATCH 05/10] [hotfix] Linked with and List item click (#3803) * [hotfix] Linked with and List item click * Run a single test using Test Runner * Add test for Linked With * [minor] List view fixes --- .../core/doctype/test_runner/test_runner.js | 3 ++- .../core/doctype/test_runner/test_runner.py | 5 +++-- frappe/public/js/frappe/list/list_renderer.js | 7 ++++++- frappe/public/js/frappe/ui/filters/filters.js | 1 + frappe/tests/ui/test_linked_with.js | 19 +++++++++++++++++++ frappe/tests/ui/tests.txt | 3 ++- 6 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 frappe/tests/ui/test_linked_with.js diff --git a/frappe/core/doctype/test_runner/test_runner.js b/frappe/core/doctype/test_runner/test_runner.js index d5cac7f8a5..87ea09fab7 100644 --- a/frappe/core/doctype/test_runner/test_runner.js +++ b/frappe/core/doctype/test_runner/test_runner.js @@ -11,7 +11,8 @@ frappe.ui.form.on('Test Runner', { // all tests frappe.call({ - method: 'frappe.core.doctype.test_runner.test_runner.get_test_js' + method: 'frappe.core.doctype.test_runner.test_runner.get_test_js', + args: { test_path: frm.doc.module_path } }).always((data) => { $("
    ").appendTo(wrapper.empty()); frm.events.run_tests(frm, data.message); diff --git a/frappe/core/doctype/test_runner/test_runner.py b/frappe/core/doctype/test_runner/test_runner.py index c09d75ae4f..2961e9f38b 100644 --- a/frappe/core/doctype/test_runner/test_runner.py +++ b/frappe/core/doctype/test_runner/test_runner.py @@ -10,9 +10,10 @@ class TestRunner(Document): pass @frappe.whitelist() -def get_test_js(): +def get_test_js(test_path=None): '''Get test + data for app, example: app/tests/ui/test_name.js''' - test_path = frappe.db.get_single_value('Test Runner', 'module_path') + if not test_path: + test_path = frappe.db.get_single_value('Test Runner', 'module_path') test_js = [] # split diff --git a/frappe/public/js/frappe/list/list_renderer.js b/frappe/public/js/frappe/list/list_renderer.js index 02940e1bec..65f52c910c 100644 --- a/frappe/public/js/frappe/list/list_renderer.js +++ b/frappe/public/js/frappe/list/list_renderer.js @@ -271,7 +271,10 @@ frappe.views.ListRenderer = Class.extend({ setup_filterable: function () { var me = this; + + this.list_view.wrapper && this.list_view.wrapper.on('click', '.result-list .filterable', function (e) { + e.stopPropagation(); var filters = $(this).attr('data-filter').split('|'); var added = false; @@ -294,7 +297,9 @@ frappe.views.ListRenderer = Class.extend({ me.list_view.refresh(true); } }); - this.wrapper.on('click', '.list-item', function (e) { + + this.list_view.wrapper && + this.list_view.wrapper.on('click', '.list-item', function (e) { // don't open in case of checkbox, like, filterable if ($(e.target).hasClass('filterable') || $(e.target).hasClass('octicon-heart') diff --git a/frappe/public/js/frappe/ui/filters/filters.js b/frappe/public/js/frappe/ui/filters/filters.js index b338d23f3d..0d74e61b84 100644 --- a/frappe/public/js/frappe/ui/filters/filters.js +++ b/frappe/public/js/frappe/ui/filters/filters.js @@ -87,6 +87,7 @@ frappe.ui.FilterList = Class.extend({ } var filter = this.push_new_filter(doctype, fieldname, condition, value); + if (!filter) return; if(this.wrapper.find('.clear-filters').hasClass("hide")) { this.wrapper.find('.clear-filters').removeClass("hide"); diff --git a/frappe/tests/ui/test_linked_with.js b/frappe/tests/ui/test_linked_with.js new file mode 100644 index 0000000000..aeaced2d19 --- /dev/null +++ b/frappe/tests/ui/test_linked_with.js @@ -0,0 +1,19 @@ +QUnit.module('form'); + +QUnit.test("Test Linked With", function(assert) { + assert.expect(2); + const done = assert.async(); + + frappe.run_serially([ + () => frappe.set_route('Form', 'Module Def', 'Contacts'), + () => frappe.tests.click_page_head_item('Menu'), + () => frappe.tests.click_dropdown_item('Links'), + () => frappe.timeout(4), + () => { + assert.equal(cur_dialog.title, 'Linked With', 'Linked with dialog is opened'); + const link_tables_count = cur_dialog.$wrapper.find('.list-item-table').length; + assert.equal(link_tables_count, 2, 'Two DocTypes are linked with Contacts'); + }, + done + ]); +}); \ No newline at end of file diff --git a/frappe/tests/ui/tests.txt b/frappe/tests/ui/tests.txt index de7d34fddb..b94f64aa63 100644 --- a/frappe/tests/ui/tests.txt +++ b/frappe/tests/ui/tests.txt @@ -2,4 +2,5 @@ frappe/tests/ui/test_number_format.js frappe/tests/ui/test_list/test_list_filter.js frappe/tests/ui/test_list/test_list_paging.js frappe/tests/ui/test_module_view.js -frappe/tests/ui/test_calendar_view.js \ No newline at end of file +frappe/tests/ui/test_calendar_view.js +frappe/tests/ui/test_linked_with.js \ No newline at end of file From f609a478ae4863cd2d0108235035e20bd078ce03 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 28 Jul 2017 14:33:31 +0530 Subject: [PATCH 06/10] [refactor] user permissions (#3713) * [refactor] user permissions * [fix] tests * [ux] user-permissions * [minor] cleanup system settings * [minor] end progress --- frappe/boot.py | 2 + frappe/core/doctype/communication/feed.py | 3 +- .../system_settings/system_settings.json | 112 ++++-- .../system_settings/system_settings.py | 1 + .../system_settings/test_system_settings.js | 23 ++ frappe/core/doctype/user/user.js | 6 +- .../core/doctype/user_permission/__init__.py | 0 .../user_permission/test_user_permission.js | 23 ++ .../user_permission/test_user_permission.py | 10 + .../user_permission/user_permission.js | 10 + .../user_permission/user_permission.json | 188 +++++++++ .../user_permission/user_permission.py | 80 ++++ .../permission_manager/permission_manager.js | 24 +- .../permission_manager/permission_manager.py | 16 +- frappe/core/page/user_permissions/README.md | 1 - frappe/core/page/user_permissions/__init__.py | 3 - .../page/user_permissions/user_permissions.js | 365 ------------------ .../user_permissions/user_permissions.json | 19 - .../page/user_permissions/user_permissions.py | 109 ------ frappe/defaults.py | 23 +- frappe/desk/form/load.py | 11 - frappe/model/create_new.py | 5 +- frappe/model/db_query.py | 2 +- frappe/model/delete_doc.py | 11 +- frappe/patches.txt | 1 + frappe/patches/v8_x/__init__.py | 0 frappe/patches/v8_x/update_user_permission.py | 25 ++ frappe/permissions.py | 75 +++- frappe/public/js/frappe/defaults.js | 6 +- frappe/public/js/frappe/list/list_view.js | 6 +- frappe/public/js/frappe/model/create_new.js | 6 +- frappe/public/js/frappe/model/model.js | 1 - .../js/frappe/views/reports/query_report.js | 2 +- .../js/frappe/views/reports/reportview.js | 4 +- frappe/test_runner.py | 4 +- frappe/tests/test_permissions.py | 108 ++++-- 36 files changed, 621 insertions(+), 664 deletions(-) create mode 100644 frappe/core/doctype/system_settings/test_system_settings.js create mode 100644 frappe/core/doctype/user_permission/__init__.py create mode 100644 frappe/core/doctype/user_permission/test_user_permission.js create mode 100644 frappe/core/doctype/user_permission/test_user_permission.py create mode 100644 frappe/core/doctype/user_permission/user_permission.js create mode 100644 frappe/core/doctype/user_permission/user_permission.json create mode 100644 frappe/core/doctype/user_permission/user_permission.py delete mode 100644 frappe/core/page/user_permissions/README.md delete mode 100644 frappe/core/page/user_permissions/__init__.py delete mode 100644 frappe/core/page/user_permissions/user_permissions.js delete mode 100644 frappe/core/page/user_permissions/user_permissions.json delete mode 100644 frappe/core/page/user_permissions/user_permissions.py create mode 100644 frappe/patches/v8_x/__init__.py create mode 100644 frappe/patches/v8_x/update_user_permission.py diff --git a/frappe/boot.py b/frappe/boot.py index d413d03fb6..1cc8202123 100644 --- a/frappe/boot.py +++ b/frappe/boot.py @@ -17,6 +17,7 @@ from frappe.utils.change_log import get_versions from frappe.translate import get_lang_dict from frappe.email.inbox import get_email_accounts from frappe.core.doctype.feedback_trigger.feedback_trigger import get_enabled_feedback_trigger +from frappe.core.doctype.user_permission.user_permission import get_user_permissions def get_bootinfo(): """build and return boot info""" @@ -30,6 +31,7 @@ def get_bootinfo(): # system info bootinfo.sysdefaults = frappe.defaults.get_defaults() + bootinfo.user_permissions = get_user_permissions() bootinfo.server_date = frappe.utils.nowdate() if frappe.session['user'] != 'Guest': diff --git a/frappe/core/doctype/communication/feed.py b/frappe/core/doctype/communication/feed.py index ded84a469c..2d939447cd 100644 --- a/frappe/core/doctype/communication/feed.py +++ b/frappe/core/doctype/communication/feed.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import frappe -import frappe.defaults import frappe.permissions from frappe.model.document import Document from frappe.utils import get_fullname @@ -68,7 +67,7 @@ def get_feed_match_conditions(user=None, force=True): conditions = ['`tabCommunication`.owner="{user}" or `tabCommunication`.reference_owner="{user}"'.format(user=frappe.db.escape(user))] - user_permissions = frappe.defaults.get_user_permissions(user) + user_permissions = frappe.permissions.get_user_permissions(user) can_read = frappe.get_user().get_can_read() can_read_doctypes = ['"{}"'.format(doctype) for doctype in diff --git a/frappe/core/doctype/system_settings/system_settings.json b/frappe/core/doctype/system_settings/system_settings.json index 87d85449ba..bbdf75c085 100644 --- a/frappe/core/doctype/system_settings/system_settings.json +++ b/frappe/core/doctype/system_settings/system_settings.json @@ -527,7 +527,7 @@ "bold": 0, "collapsible": 1, "columns": 0, - "fieldname": "security", + "fieldname": "permissions", "fieldtype": "Section Break", "hidden": 0, "ignore_user_permissions": 0, @@ -536,10 +536,11 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Security", + "label": "Permissions", "length": 0, "no_copy": 0, "permlevel": 0, + "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -556,10 +557,9 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "06:00", - "description": "Session Expiry in Hours e.g. 06:00", - "fieldname": "session_expiry", - "fieldtype": "Data", + "description": "If Apply User Permissions is checked for Report DocType but no User Permissions are defined for Report for a User, then all Reports are shown to that User", + "fieldname": "ignore_user_permissions_if_missing", + "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -567,11 +567,11 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Session Expiry", + "label": "Ignore User Permissions If Missing", "length": 0, "no_copy": 0, - "options": "", "permlevel": 0, + "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -588,10 +588,10 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "720:00", - "description": "In Hours", - "fieldname": "session_expiry_mobile", - "fieldtype": "Data", + "default": "0", + "description": "If Apply Strict User Permission is checked and User Permission is defined for a DocType for a User, then all the documents where value of the link is blank, will not be shown to that User", + "fieldname": "apply_strict_user_permissions", + "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -599,7 +599,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Session Expiry Mobile", + "label": "Apply Strict User Permissions", "length": 0, "no_copy": 0, "permlevel": 0, @@ -614,16 +614,45 @@ "set_only_once": 0, "unique": 0 }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 1, + "columns": 0, + "fieldname": "security", + "fieldtype": "Section Break", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Security", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, { "allow_bulk_edit": 0, "allow_on_submit": 0, "bold": 0, "collapsible": 0, "columns": 0, - "default": "0", - "description": "If enabled, the password strength will be enforced based on the Minimum Password Score value. A value of 2 being medium strong and 4 being very strong.", - "fieldname": "enable_password_policy", - "fieldtype": "Check", + "default": "06:00", + "description": "Session Expiry in Hours e.g. 06:00", + "fieldname": "session_expiry", + "fieldtype": "Data", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -631,11 +660,11 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Enable Password Policy", + "label": "Session Expiry", "length": 0, "no_copy": 0, + "options": "", "permlevel": 0, - "precision": "", "print_hide": 0, "print_hide_if_no_value": 0, "read_only": 0, @@ -652,10 +681,10 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "2", - "depends_on": "eval:doc.enable_password_policy==1", - "fieldname": "minimum_password_score", - "fieldtype": "Select", + "default": "720:00", + "description": "In Hours", + "fieldname": "session_expiry_mobile", + "fieldtype": "Data", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -663,10 +692,9 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Minimum Password Score", + "label": "Session Expiry Mobile", "length": 0, "no_copy": 0, - "options": "2\n4", "permlevel": 0, "precision": "", "print_hide": 0, @@ -685,8 +713,10 @@ "bold": 0, "collapsible": 0, "columns": 0, - "fieldname": "column_break_13", - "fieldtype": "Column Break", + "default": "0", + "description": "If enabled, the password strength will be enforced based on the Minimum Password Score value. A value of 2 being medium strong and 4 being very strong.", + "fieldname": "enable_password_policy", + "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -694,6 +724,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, + "label": "Enable Password Policy", "length": 0, "no_copy": 0, "permlevel": 0, @@ -714,9 +745,10 @@ "bold": 0, "collapsible": 0, "columns": 0, - "description": "Note: Multiple sessions will be allowed in case of mobile device", - "fieldname": "deny_multiple_sessions", - "fieldtype": "Check", + "default": "2", + "depends_on": "eval:doc.enable_password_policy==1", + "fieldname": "minimum_password_score", + "fieldtype": "Select", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -724,9 +756,10 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Allow only one session per user", + "label": "Minimum Password Score", "length": 0, "no_copy": 0, + "options": "2\n4", "permlevel": 0, "precision": "", "print_hide": 0, @@ -745,9 +778,8 @@ "bold": 0, "collapsible": 0, "columns": 0, - "description": "If Apply User Permissions is checked for Report DocType but no User Permissions are defined for Report for a User, then all Reports are shown to that User", - "fieldname": "ignore_user_permissions_if_missing", - "fieldtype": "Check", + "fieldname": "column_break_13", + "fieldtype": "Column Break", "hidden": 0, "ignore_user_permissions": 0, "ignore_xss_filter": 0, @@ -755,7 +787,6 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Ignore User Permissions If Missing", "length": 0, "no_copy": 0, "permlevel": 0, @@ -776,9 +807,8 @@ "bold": 0, "collapsible": 0, "columns": 0, - "default": "0", - "description": "If Apply Strict User Permission is checked and User Permission is defined for a DocType for a User, then all the documents where value of the link is blank, will not be shown to that User", - "fieldname": "apply_strict_user_permissions", + "description": "Note: Multiple sessions will be allowed in case of mobile device", + "fieldname": "deny_multiple_sessions", "fieldtype": "Check", "hidden": 0, "ignore_user_permissions": 0, @@ -787,7 +817,7 @@ "in_global_search": 0, "in_list_view": 0, "in_standard_filter": 0, - "label": "Apply Strict User Permissions", + "label": "Allow only one session per user", "length": 0, "no_copy": 0, "permlevel": 0, @@ -997,7 +1027,7 @@ "issingle": 1, "istable": 0, "max_attachments": 0, - "modified": "2017-06-23 07:48:10.453011", + "modified": "2017-07-20 22:57:56.466867", "modified_by": "Administrator", "module": "Core", "name": "System Settings", @@ -1032,4 +1062,4 @@ "sort_order": "ASC", "track_changes": 1, "track_seen": 0 -} +} \ No newline at end of file diff --git a/frappe/core/doctype/system_settings/system_settings.py b/frappe/core/doctype/system_settings/system_settings.py index 8f64feda9f..f7ecfc00bb 100644 --- a/frappe/core/doctype/system_settings/system_settings.py +++ b/frappe/core/doctype/system_settings/system_settings.py @@ -35,6 +35,7 @@ class SystemSettings(Document): frappe.cache().delete_value('system_settings') frappe.cache().delete_value('time_zone') + frappe.local.system_settings = {} @frappe.whitelist() def load(): diff --git a/frappe/core/doctype/system_settings/test_system_settings.js b/frappe/core/doctype/system_settings/test_system_settings.js new file mode 100644 index 0000000000..53edaba99d --- /dev/null +++ b/frappe/core/doctype/system_settings/test_system_settings.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: System Settings", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially('System Settings', [ + // insert a new System Settings + () => frappe.tests.make([ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/frappe/core/doctype/user/user.js b/frappe/core/doctype/user/user.js index aa7f7940e3..49c1f8b437 100644 --- a/frappe/core/doctype/user/user.js +++ b/frappe/core/doctype/user/user.js @@ -59,9 +59,13 @@ frappe.ui.form.on('User', { frappe.route_options = { "user": doc.name }; - frappe.set_route("user-permissions"); + frappe.set_route('List', 'User Permission'); }, null, "btn-default") + frm.add_custom_button(__('View Permitted Documents'), + () => frappe.set_route('query-report', 'Permitted Documents For User', + {user: frm.doc.name})); + frm.toggle_display(['sb1', 'sb3', 'modules_access'], true); } diff --git a/frappe/core/doctype/user_permission/__init__.py b/frappe/core/doctype/user_permission/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/core/doctype/user_permission/test_user_permission.js b/frappe/core/doctype/user_permission/test_user_permission.js new file mode 100644 index 0000000000..1770dddf81 --- /dev/null +++ b/frappe/core/doctype/user_permission/test_user_permission.js @@ -0,0 +1,23 @@ +/* eslint-disable */ +// rename this file from _test_[name] to test_[name] to activate +// and remove above this line + +QUnit.test("test: User Permission", function (assert) { + let done = assert.async(); + + // number of asserts + assert.expect(1); + + frappe.run_serially('User Permission', [ + // insert a new User Permission + () => frappe.tests.make([ + // values to be set + {key: 'value'} + ]), + () => { + assert.equal(cur_frm.doc.key, 'value'); + }, + () => done() + ]); + +}); diff --git a/frappe/core/doctype/user_permission/test_user_permission.py b/frappe/core/doctype/user_permission/test_user_permission.py new file mode 100644 index 0000000000..157fa44ae2 --- /dev/null +++ b/frappe/core/doctype/user_permission/test_user_permission.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies and Contributors +# See license.txt +from __future__ import unicode_literals + +#import frappe +import unittest + +class TestUserPermission(unittest.TestCase): + pass diff --git a/frappe/core/doctype/user_permission/user_permission.js b/frappe/core/doctype/user_permission/user_permission.js new file mode 100644 index 0000000000..fbd6ed5616 --- /dev/null +++ b/frappe/core/doctype/user_permission/user_permission.js @@ -0,0 +1,10 @@ +// Copyright (c) 2017, Frappe Technologies and contributors +// For license information, please see license.txt + +frappe.ui.form.on('User Permission', { + refresh: function(frm) { + frm.add_custom_button(__('View Permitted Documents'), + () => frappe.set_route('query-report', 'Permitted Documents For User', + {user: frm.doc.user})); + } +}); diff --git a/frappe/core/doctype/user_permission/user_permission.json b/frappe/core/doctype/user_permission/user_permission.json new file mode 100644 index 0000000000..2e67de5ce0 --- /dev/null +++ b/frappe/core/doctype/user_permission/user_permission.json @@ -0,0 +1,188 @@ +{ + "allow_copy": 0, + "allow_guest_to_view": 0, + "allow_import": 0, + "allow_rename": 0, + "beta": 0, + "creation": "2017-07-17 14:25:27.881871", + "custom": 0, + "docstatus": 0, + "doctype": "DocType", + "document_type": "", + "editable_grid": 1, + "engine": "InnoDB", + "fields": [ + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "user", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 1, + "label": "User", + "length": 0, + "no_copy": 0, + "options": "User", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "allow", + "fieldtype": "Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 1, + "label": "Allow", + "length": 0, + "no_copy": 0, + "options": "DocType", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 0, + "collapsible": 0, + "columns": 0, + "fieldname": "for_value", + "fieldtype": "Dynamic Link", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 1, + "in_standard_filter": 1, + "label": "For Value", + "length": 0, + "no_copy": 0, + "options": "allow", + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 1, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + }, + { + "allow_bulk_edit": 0, + "allow_on_submit": 0, + "bold": 1, + "collapsible": 0, + "columns": 0, + "default": "1", + "description": "If you un-check this, you will have to apply manually for each Role + Document Type combination", + "fieldname": "apply_for_all_roles", + "fieldtype": "Check", + "hidden": 0, + "ignore_user_permissions": 0, + "ignore_xss_filter": 0, + "in_filter": 0, + "in_global_search": 0, + "in_list_view": 0, + "in_standard_filter": 0, + "label": "Apply for all Roles for this User", + "length": 0, + "no_copy": 0, + "permlevel": 0, + "precision": "", + "print_hide": 0, + "print_hide_if_no_value": 0, + "read_only": 0, + "remember_last_selected_value": 0, + "report_hide": 0, + "reqd": 0, + "search_index": 0, + "set_only_once": 0, + "unique": 0 + } + ], + "has_web_view": 0, + "hide_heading": 0, + "hide_toolbar": 0, + "idx": 0, + "image_view": 0, + "in_create": 0, + "is_submittable": 0, + "issingle": 0, + "istable": 0, + "max_attachments": 0, + "modified": "2017-07-27 22:55:58.647315", + "modified_by": "Administrator", + "module": "Core", + "name": "User Permission", + "name_case": "", + "owner": "Administrator", + "permissions": [ + { + "amend": 0, + "apply_user_permissions": 0, + "cancel": 0, + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "if_owner": 0, + "import": 0, + "permlevel": 0, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "set_user_permissions": 0, + "share": 1, + "submit": 0, + "write": 1 + } + ], + "quick_entry": 1, + "read_only": 0, + "read_only_onload": 0, + "show_name_in_global_search": 0, + "sort_field": "modified", + "sort_order": "DESC", + "title_field": "user", + "track_changes": 1, + "track_seen": 0 +} \ No newline at end of file diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py new file mode 100644 index 0000000000..e14a900e19 --- /dev/null +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +# Copyright (c) 2017, Frappe Technologies and contributors +# For license information, please see license.txt + +from __future__ import unicode_literals +import frappe, json +from frappe.model.document import Document +from frappe.permissions import (get_valid_perms, update_permission_property) +from frappe import _ + +class UserPermission(Document): + def on_update(self): + frappe.cache().delete_value('user_permissions') + + if self.apply_for_all_roles: + self.apply_user_permissions_to_all_roles() + + def apply_user_permissions_to_all_roles(self): + # add apply user permissions for all roles that + # for this doctype + def show_progress(i, l): + if l > 2: + frappe.publish_realtime("progress", + dict(progress=[i, l], title=_('Updating...')), + user=frappe.session.user) + + + roles = frappe.get_roles(self.user) + linked = frappe.db.sql('''select distinct parent from tabDocField + where fieldtype="Link" and options=%s''', self.allow) + for i, link in enumerate(linked): + doctype = link[0] + for perm in get_valid_perms(doctype, self.user): + # if the role is applicable to the user + show_progress(i+1, len(linked)) + if perm.role in roles: + if not perm.apply_user_permissions: + update_permission_property(doctype, perm.role, 0, + 'apply_user_permissions', '1') + + try: + user_permission_doctypes = json.loads(perm.user_permission_doctypes or '[]') + except ValueError: + user_permission_doctypes = [] + + if self.allow not in user_permission_doctypes: + user_permission_doctypes.append(self.allow) + update_permission_property(doctype, perm.role, 0, + 'user_permission_doctypes', json.dumps(user_permission_doctypes), validate=False) + + show_progress(len(linked), len(linked)) + + def on_trash(self): # pylint: disable=no-self-use + frappe.cache().delete_value('user_permissions') + +def get_user_permissions(user=None): + '''Get all users permissions for the user as a dict of doctype''' + if not user: + user = frappe.session.user + + out = frappe.cache().hget("user_permissions", user) + + if not out: + out = {} + try: + for perm in frappe.get_all('User Permission', + fields=['allow', 'for_value'], filters=dict(user=user)): + out.setdefault(perm.allow, []).append(perm.for_value) + + # add profile match + if user not in out.get("User", []): + out.setdefault("User", []).append(user) + + frappe.cache().hset("user_permissions", user, out) + except frappe.SQLError, e: + if e.args[0]==1146: + # called from patch + pass + + return out \ No newline at end of file diff --git a/frappe/core/page/permission_manager/permission_manager.js b/frappe/core/page/permission_manager/permission_manager.js index 400043a5fd..020db1d16b 100644 --- a/frappe/core/page/permission_manager/permission_manager.js +++ b/frappe/core/page/permission_manager/permission_manager.js @@ -21,6 +21,7 @@ frappe.pages['permission-manager'].refresh = function(wrapper) { frappe.PermissionEngine = Class.extend({ init: function(wrapper) { this.wrapper = wrapper; + this.page = wrapper.page; this.body = $(this.wrapper).find(".perm-engine"); this.make(); this.refresh(); @@ -55,6 +56,10 @@ frappe.PermissionEngine = Class.extend({ .change(function() { me.refresh(); }); + + this.page.add_inner_button(__('Set User Permissions'), () => { + return frappe.set_route('List', 'User Permission'); + }); this.set_from_route(); }, set_from_route: function() { @@ -133,11 +138,11 @@ frappe.PermissionEngine = Class.extend({ refresh: function() { var me = this; if(!me.doctype_select) { - this.body.html("

    " + __("Loading") + "...

    "); + this.body.html("

    " + __("Loading") + "...

    "); return; } if(!me.get_doctype() && !me.get_role()) { - this.body.html("

    "+__("Select Document Type or Role to start.")+"

    "); + this.body.html("

    "+__("Select Document Type or Role to start.")+"

    "); return; } // get permissions @@ -247,10 +252,13 @@ frappe.PermissionEngine = Class.extend({ setup_user_permissions: function(d, role_cell) { var me = this; - d.help = frappe.render('', {}); + d.help = ``; var checkbox = this.add_check(role_cell, d, "apply_user_permissions") .removeClass("col-md-4") @@ -336,8 +344,8 @@ frappe.PermissionEngine = Class.extend({ var me = this; this.body.on("click", ".show-user-permissions", function() { - frappe.route_options = { doctype: me.get_doctype() || "" }; - frappe.set_route("user-permissions"); + frappe.route_options = { allow: me.get_doctype() || "" }; + frappe.set_route('List', 'User Permission'); }); this.body.on("click", "input[type='checkbox']", function() { diff --git a/frappe/core/page/permission_manager/permission_manager.py b/frappe/core/page/permission_manager/permission_manager.py index 626bb1c20d..ae3a3971e6 100644 --- a/frappe/core/page/permission_manager/permission_manager.py +++ b/frappe/core/page/permission_manager/permission_manager.py @@ -7,7 +7,7 @@ import frappe.defaults from frappe.modules.import_file import get_file_path, read_doc_from_file from frappe.translate import send_translations from frappe.permissions import (reset_perms, get_linked_doctypes, get_all_perms, - setup_custom_perms, add_permission) + setup_custom_perms, add_permission, update_permission_property) from frappe.core.doctype.doctype.doctype import (clear_permissions_cache, validate_permissions_for_doctype) from frappe import _ @@ -68,18 +68,8 @@ def add(parent, role, permlevel): @frappe.whitelist() def update(doctype, role, permlevel, ptype, value=None): frappe.only_for("System Manager") - - out = None - if setup_custom_perms(doctype): - out = 'refresh' - - name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, permlevel=permlevel)) - - frappe.db.sql("""update `tabCustom DocPerm` set `%s`=%s where name=%s"""\ - % (frappe.db.escape(ptype), '%s', '%s'), (value, name)) - validate_permissions_for_doctype(doctype) - - return out + out = update_permission_property(doctype, role, permlevel, ptype, value) + return 'refresh' if out else None @frappe.whitelist() def remove(doctype, role, permlevel): diff --git a/frappe/core/page/user_permissions/README.md b/frappe/core/page/user_permissions/README.md deleted file mode 100644 index e4fc779c6c..0000000000 --- a/frappe/core/page/user_permissions/README.md +++ /dev/null @@ -1 +0,0 @@ -Interface to set user defaults (DefaultValue). \ No newline at end of file diff --git a/frappe/core/page/user_permissions/__init__.py b/frappe/core/page/user_permissions/__init__.py deleted file mode 100644 index 0e57cb68c3..0000000000 --- a/frappe/core/page/user_permissions/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - diff --git a/frappe/core/page/user_permissions/user_permissions.js b/frappe/core/page/user_permissions/user_permissions.js deleted file mode 100644 index 5cb81900eb..0000000000 --- a/frappe/core/page/user_permissions/user_permissions.js +++ /dev/null @@ -1,365 +0,0 @@ -frappe.pages['user-permissions'].on_page_load = function(wrapper) { - var page = frappe.ui.make_app_page({ - parent: wrapper, - title: __("User Permissions Manager"), - icon: "fa fa-shield", - single_column: true - }); - - frappe.breadcrumbs.add("Setup"); - - $("\ -

    \ - " + __("Edit Role Permissions") + "\ -


    \ -

    "+__("Help for User Permissions")+":

    \ -
      \ -
    1. " - + __("Apart from Role based Permission Rules, you can apply User Permissions based on DocTypes.") - + "
    2. " - - + "
    3. " - + __("These permissions will apply for all transactions where the permitted record is linked. For example, if Company C is added to User Permissions of user X, user X will only be able to see transactions that has company C as a linked value.") - + "
    4. " - - + "
    5. " - + __("These will also be set as default values for those links, if only one such permission record is defined.") - + "
    6. " - - + "
    7. " - + __("A user can be permitted to multiple records of the same DocType.") - + "
    8. \ -
    ").appendTo(page.main); - wrapper.user_permissions = new frappe.UserPermissions(wrapper); -} - -frappe.pages['user-permissions'].refresh = function(wrapper) { - wrapper.user_permissions.set_from_route(); -} - -frappe.UserPermissions = Class.extend({ - init: function(wrapper) { - this.wrapper = wrapper; - this.body = $(this.wrapper).find(".user-settings"); - this.filters = {}; - this.make(); - this.refresh(); - }, - make: function() { - var me = this; - - $(this.wrapper).find(".view-role-permissions").on("click", function() { - frappe.route_options = { doctype: me.get_doctype() || "" }; - frappe.set_route("permission-manager"); - }) - - return frappe.call({ - module:"frappe.core", - page:"user_permissions", - method: "get_users_and_links", - callback: function(r) { - me.options = r.message; - - me.filters.user = me.wrapper.page.add_field({ - fieldname: "user", - label: __("User"), - fieldtype: "Select", - options: ([__("Select User") + "..."].concat(r.message.users)).join("\n") - }); - - me.filters.doctype = me.wrapper.page.add_field({ - fieldname: "doctype", - label: __("DocType"), - fieldtype: "Select", - options: ([__("Select DocType") + "..."].concat(me.get_link_names())).join("\n") - }); - - me.filters.user_permission = me.wrapper.page.add_field({ - fieldname: "user_permission", - label: __("Name"), - fieldtype: "Link", - options: "[Select]" - }); - - if(frappe.user_roles.includes("System Manager")) { - me.download = me.wrapper.page.add_field({ - fieldname: "download", - label: __("Download"), - fieldtype: "Button", - icon: "fa fa-download" - }); - - me.upload = me.wrapper.page.add_field({ - fieldname: "upload", - label: __("Upload"), - fieldtype: "Button", - icon: "fa fa-upload" - }); - } - - // bind change event - $.each(me.filters, function(k, f) { - f.$input.on("change", function() { - me.refresh(); - }); - }); - - // change options in user_permission link - me.filters.doctype.$input.on("change", function() { - me.filters.user_permission.df.options = me.get_doctype(); - }); - - me.set_from_route(); - me.setup_download_upload(); - } - }); - }, - setup_download_upload: function() { - var me = this; - me.download.$input.on("click", function() { - window.location.href = frappe.urllib.get_base_url() - + "/api/method/frappe.core.page.user_permissions.user_permissions.get_user_permissions_csv"; - }); - - me.upload.$input.on("click", function() { - var d = new frappe.ui.Dialog({ - title: __("Upload User Permissions"), - fields: [ - { - fieldtype:"HTML", - options: '

      '+ - "
    1. "+__("Upload CSV file containing all user permissions in the same format as Download.")+"
    2. "+ - "
    3. "+__("Any existing permission will be deleted / overwritten.")+"
    4. "+ - '

      ' - }, - { - fieldtype:"Attach", fieldname:"attach", - } - ], - primary_action_label: __("Upload and Sync"), - primary_action: function() { - var filedata = d.fields_dict.attach.get_value(); - if(!filedata) { - frappe.msgprint(__("Please attach a file")); - return; - } - frappe.call({ - method:"frappe.core.page.user_permissions.user_permissions.import_user_permissions", - args: { - filedata: filedata - }, - callback: function(r) { - if(!r.exc) { - frappe.msgprint(__("Permissions Updated")); - d.hide(); - } - } - }); - } - }); - d.show(); - }) - }, - get_link_names: function() { - return this.options.link_fields; - }, - set_from_route: function() { - var me = this; - if(frappe.route_options && this.filters && !$.isEmptyObject(this.filters)) { - $.each(frappe.route_options, function(key, value) { - if(me.filters[key] && frappe.route_options[key]!=null) - me.set_filter(key, value); - }); - frappe.route_options = null; - } - this.refresh(); - }, - set_filter: function(key, value) { - this.filters[key].$input.val(value); - }, - get_user: function() { - var user = this.filters.user.$input.val(); - return user== __("Select User") + "..." ? null : user; - }, - get_doctype: function() { - var doctype = this.filters.doctype.$input.val(); - return doctype== __("Select DocType") + "..." ? null : doctype; - }, - get_user_permission: function() { - // autosuggest hack! - var user_permission = this.filters.user_permission.$input.val(); - return (user_permission === "%") ? null : user_permission; - }, - render: function(prop_list) { - var me = this; - this.body.empty(); - this.prop_list = prop_list; - if(!prop_list || !prop_list.length) { - this.add_message(__("No User Restrictions found.")); - } else { - this.show_user_permissions_table(); - } - this.show_add_user_permission(); - if(this.get_user() && this.get_doctype()) { - $('').appendTo(this.body.find(".btn-area")).on("click", function() { - frappe.route_options = {doctype: me.get_doctype(), user:me.get_user() }; - frappe.set_route("query-report/Permitted Documents For User"); - }); - } - }, - add_message: function(txt) { - $('

      ' + txt + '

      ').appendTo(this.body); - }, - refresh: function() { - var me = this; - if(!me.filters.user) { - this.body.html("

      "+__("Loading")+"...

      "); - return; - } - if(!me.get_user() && !me.get_doctype()) { - this.body.html("

      "+__("Select User or DocType to start.")+"

      "); - return; - } - // get permissions - return frappe.call({ - module: "frappe.core", - page: "user_permissions", - method: "get_permissions", - args: { - parent: me.get_user(), - defkey: me.get_doctype(), - defvalue: me.get_user_permission() - }, - callback: function(r) { - me.render(r.message); - } - }); - }, - show_user_permissions_table: function() { - var me = this; - this.table = $("
    Sr
    \ - \ - \ -
    ").appendTo(this.body); - - $('

    ' - +__("These restrictions will apply for Document Types where 'Apply User Permissions' is checked for the permission rule and a field with this value is present.") - +'

    ').appendTo(this.body); - - $.each([[__("Allow User"), 150], [__("If Document Type"), 150], [__("Is"),150], ["", 50]], - function(i, col) { - $("
    ") - .html(col[0]) - .css("width", col[1]+"px") - .appendTo(me.table.find("thead tr")); - }); - - - $.each(this.prop_list, function(i, d) { - var row = $("
    ").html('' - +d.parent+'').appendTo(row); - $("").html(d.defkey).appendTo(row); - $("").html(d.defvalue).appendTo(row); - - me.add_delete_button(row, d); - }); - - }, - add_delete_button: function(row, d) { - var me = this; - $("") - .appendTo($("").appendTo(row)) - .attr("data-name", d.name) - .attr("data-user", d.parent) - .attr("data-defkey", d.defkey) - .attr("data-defvalue", d.defvalue) - .click(function() { - return frappe.call({ - module: "frappe.core", - page: "user_permissions", - method: "remove", - args: { - name: $(this).attr("data-name"), - user: $(this).attr("data-user"), - defkey: $(this).attr("data-defkey"), - defvalue: $(this).attr("data-defvalue") - }, - callback: function(r) { - if(r.exc) { - frappe.msgprint(__("Did not remove")); - } else { - me.refresh(); - } - } - }) - }); - }, - - show_add_user_permission: function() { - var me = this; - $("") - .appendTo($('

    ').appendTo(this.body)) - .click(function() { - var d = new frappe.ui.Dialog({ - title: __("Add A New Restriction"), - fields: [ - {fieldtype:"Select", label:__("Allow User"), - options:me.options.users, reqd:1, fieldname:"user"}, - {fieldtype:"Select", label: __("If Document Type"), fieldname:"defkey", - options:me.get_link_names(), reqd:1}, - {fieldtype:"Link", label:__("Is"), fieldname:"defvalue", - options:'[Select]', reqd:1}, - {fieldtype:"Button", label: __("Add"), fieldname:"add"}, - ] - }); - if(me.get_user()) { - d.set_value("user", me.get_user()); - d.get_input("user").prop("disabled", true); - } - if(me.get_doctype()) { - d.set_value("defkey", me.get_doctype()); - d.get_input("defkey").prop("disabled", true); - } - if(me.get_user_permission()) { - d.set_value("defvalue", me.get_user_permission()); - d.get_input("defvalue").prop("disabled", true); - } - - d.fields_dict["defvalue"].get_query = function(txt) { - if(!d.get_value("defkey")) { - frappe.throw(__("Please select Document Type")); - } - - return { - doctype: d.get_value("defkey") - } - }; - - d.get_input("add").click(function() { - var args = d.get_values(); - if(!args) { - return; - } - frappe.call({ - module: "frappe.core", - page: "user_permissions", - method: "add", - args: args, - callback: function(r) { - if(r.exc) { - frappe.msgprint(__("Did not add")); - } else { - me.refresh(); - } - } - }) - d.hide(); - }); - d.show(); - }); - } -}) diff --git a/frappe/core/page/user_permissions/user_permissions.json b/frappe/core/page/user_permissions/user_permissions.json deleted file mode 100644 index ab831e1919..0000000000 --- a/frappe/core/page/user_permissions/user_permissions.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "content": null, - "creation": "2013-01-01 18:50:55", - "docstatus": 0, - "doctype": "Page", - "icon": "fa fa-user", - "idx": 1, - "modified": "2014-05-28 16:53:43.103533", - "modified_by": "Administrator", - "module": "Core", - "name": "user-permissions", - "owner": "Administrator", - "page_name": "user-permissions", - "roles": [], - "script": null, - "standard": "Yes", - "style": null, - "title": "User Permissions Manager" -} \ No newline at end of file diff --git a/frappe/core/page/user_permissions/user_permissions.py b/frappe/core/page/user_permissions/user_permissions.py deleted file mode 100644 index 98d7e90095..0000000000 --- a/frappe/core/page/user_permissions/user_permissions.py +++ /dev/null @@ -1,109 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# MIT License. See license.txt - -from __future__ import unicode_literals -import frappe -from frappe import _ -import frappe.defaults -from frappe.permissions import (can_set_user_permissions, add_user_permission, - remove_user_permission, get_valid_perms) -from frappe.core.doctype.user.user import get_system_users -from frappe.utils.csvutils import UnicodeWriter, read_csv_content_from_uploaded_file -from frappe.defaults import clear_default - -@frappe.whitelist() -def get_users_and_links(): - return { - "users": get_system_users(), - "link_fields": get_doctypes_for_user_permissions() - } - -@frappe.whitelist() -def get_permissions(parent=None, defkey=None, defvalue=None): - if defkey and not can_set_user_permissions(defkey, defvalue): - raise frappe.PermissionError - - conditions, values = _build_conditions(locals()) - - permissions = frappe.db.sql("""select name, parent, defkey, defvalue - from tabDefaultValue - where parent not in ('__default', '__global') - and substr(defkey,1,1)!='_' - and parenttype='User Permission' - {conditions} - order by parent, defkey""".format(conditions=conditions), values, as_dict=True) - - if not defkey: - out = [] - doctypes = get_doctypes_for_user_permissions() - for p in permissions: - if p.defkey in doctypes: - out.append(p) - permissions = out - - return permissions - -def _build_conditions(filters): - conditions = [] - values = {} - for key, value in filters.items(): - if filters.get(key): - conditions.append("and `{key}`=%({key})s".format(key=key)) - values[key] = value - - return "\n".join(conditions), values - -@frappe.whitelist() -def remove(user, name, defkey, defvalue): - if not can_set_user_permissions(defkey, defvalue): - frappe.throw(_("Cannot remove permission for DocType: {0} and Name: {1}").format( - defkey, defvalue), frappe.PermissionError) - - remove_user_permission(defkey, defvalue, user, name) - -@frappe.whitelist() -def add(user, defkey, defvalue): - if not can_set_user_permissions(defkey, defvalue): - frappe.throw(_("Cannot set permission for DocType: {0} and Name: {1}").format( - defkey, defvalue), frappe.PermissionError) - - add_user_permission(defkey, defvalue, user, with_message=True) - -def get_doctypes_for_user_permissions(): - '''Get doctypes for the current user where user permissions are applicable''' - user_roles = frappe.get_roles() - - if "System Manager" in user_roles: - doctypes = set([p.parent for p in get_valid_perms()]) - else: - doctypes = set([p.parent for p in get_valid_perms() if p.set_user_permissions]) - - single_doctypes = set([d.name for d in frappe.get_all("DocType", {"issingle": 1})]) - - return sorted(doctypes.difference(single_doctypes)) - - -@frappe.whitelist() -def get_user_permissions_csv(): - out = [["User Permissions"], ["User", "Document Type", "Value"]] - out += [[a.parent, a.defkey, a.defvalue] for a in get_permissions()] - - csv = UnicodeWriter() - for row in out: - csv.writerow(row) - - frappe.response['result'] = str(csv.getvalue()) - frappe.response['type'] = 'csv' - frappe.response['doctype'] = "User Permissions" - -@frappe.whitelist() -def import_user_permissions(): - frappe.only_for("System Manager") - rows = read_csv_content_from_uploaded_file(ignore_encoding=True) - clear_default(parenttype="User Permission") - - if rows[0][0]!="User Permissions" and rows[1][0] != "User": - frappe.throw(frappe._("Please upload using the same template as download.")) - - for row in rows[2:]: - add_user_permission(row[1], row[2], row[0]) diff --git a/frappe/defaults.py b/frappe/defaults.py index b4c7ff6452..0e6e23ffdc 100644 --- a/frappe/defaults.py +++ b/frappe/defaults.py @@ -48,25 +48,10 @@ def is_a_user_permission_key(key): return ":" not in key and key != frappe.scrub(key) def get_user_permissions(user=None): - if not user: - user = frappe.session.user - - return build_user_permissions(user) - -def build_user_permissions(user): - out = frappe.cache().hget("user_permissions", user) - if out==None: - out = {} - for key, value in frappe.db.sql("""select defkey, ifnull(defvalue, '') as defvalue - from tabDefaultValue where parent=%s and parenttype='User Permission'""", (user,)): - out.setdefault(key, []).append(value) - - # add profile match - if user not in out.get("User", []): - out.setdefault("User", []).append(user) - - frappe.cache().hset("user_permissions", user, out) - return out + from frappe.core.doctype.user_permission.user_permission \ + import get_user_permissions as _get_user_permissions + '''Return frappe.core.doctype.user_permissions.user_permissions._get_user_permissions (kept for backward compatibility)''' + return _get_user_permissions(user) def get_defaults(user=None): globald = get_defaults_for() diff --git a/frappe/desk/form/load.py b/frappe/desk/form/load.py index 87e48b0450..ee7fffa242 100644 --- a/frappe/desk/form/load.py +++ b/frappe/desk/form/load.py @@ -70,7 +70,6 @@ def getdoctype(doctype, with_parent=False, cached_timestamp=None): if not docs: docs = get_meta_bundle(doctype) - frappe.response['user_permissions'] = get_user_permissions(docs) frappe.response['user_settings'] = get_user_settings(parent_dt or doctype) if cached_timestamp and docs[0].modified==cached_timestamp: @@ -102,16 +101,6 @@ def get_docinfo(doc=None, doctype=None, name=None): "rating": get_feedback_rating(doc.doctype, doc.name) } -def get_user_permissions(meta): - out = {} - all_user_permissions = frappe.defaults.get_user_permissions() - - for m in meta: - for df in m.get_fields_to_check_permissions(all_user_permissions): - out[df.options] = list(set(all_user_permissions[df.options])) - - return out - def get_attachments(dt, dn): return frappe.get_all("File", fields=["name", "file_name", "file_url", "is_private"], filters = {"attached_to_name": dn, "attached_to_doctype": dt}) diff --git a/frappe/model/create_new.py b/frappe/model/create_new.py index cc5c394d9f..846d8101e6 100644 --- a/frappe/model/create_new.py +++ b/frappe/model/create_new.py @@ -11,6 +11,7 @@ from frappe.utils import nowdate, nowtime, now_datetime import frappe.defaults from frappe.model.db_schema import type_map import copy +from frappe.core.doctype.user_permission.user_permission import get_user_permissions def get_new_doc(doctype, parent_doc = None, parentfield = None, as_dict=False): if doctype not in frappe.local.new_doc_templates: @@ -47,7 +48,7 @@ def make_new_doc(doctype): return doc def set_user_and_static_default_values(doc): - user_permissions = frappe.defaults.get_user_permissions() + user_permissions = get_user_permissions() defaults = frappe.defaults.get_defaults() for df in doc.meta.get("fields"): @@ -103,7 +104,7 @@ def get_static_default_value(df, user_permissions): def set_dynamic_default_values(doc, parent_doc, parentfield): # these values should not be cached - user_permissions = frappe.defaults.get_user_permissions() + user_permissions = get_user_permissions() for df in frappe.get_meta(doc["doctype"]).get("fields"): if df.get("default"): diff --git a/frappe/model/db_query.py b/frappe/model/db_query.py index eeee7f4bf7..56e4cc343d 100644 --- a/frappe/model/db_query.py +++ b/frappe/model/db_query.py @@ -388,7 +388,7 @@ class DatabaseQuery(object): # apply user permissions? if role_permissions.get("apply_user_permissions", {}).get("read"): # get user permissions - user_permissions = frappe.defaults.get_user_permissions(self.user) + user_permissions = frappe.permissions.get_user_permissions(self.user) self.add_user_permissions(user_permissions, user_permission_doctypes=role_permissions.get("user_permission_doctypes").get("read")) diff --git a/frappe/model/delete_doc.py b/frappe/model/delete_doc.py index 3bf49a5f6a..e242a48c88 100644 --- a/frappe/model/delete_doc.py +++ b/frappe/model/delete_doc.py @@ -11,7 +11,7 @@ from frappe.utils.file_manager import remove_all from frappe.utils.password import delete_all_passwords_for from frappe import _ from frappe.model.naming import revert_series_if_last -from frappe.utils.global_search import delete_for_document +from frappe.utils.global_search import delete_for_document def delete_doc(doctype=None, name=None, force=0, ignore_doctypes=None, for_reload=False, ignore_permissions=False, flags=None, ignore_on_trash=False): @@ -158,8 +158,13 @@ def update_flags(doc, flags=None, ignore_permissions=False): def check_permission_and_not_submitted(doc): # permission - if not doc.flags.ignore_permissions and frappe.session.user!="Administrator" and (not doc.has_permission("delete") or (doc.doctype=="DocType" and not doc.custom)): - frappe.msgprint(_("User not allowed to delete {0}: {1}").format(doc.doctype, doc.name), raise_exception=True) + if (not doc.flags.ignore_permissions + and frappe.session.user!="Administrator" + and ( + not doc.has_permission("delete") + or (doc.doctype=="DocType" and not doc.custom))): + frappe.msgprint(_("User not allowed to delete {0}: {1}") + .format(doc.doctype, doc.name), raise_exception=frappe.PermissionError) # check if submitted if doc.docstatus == 1: diff --git a/frappe/patches.txt b/frappe/patches.txt index 8adf636701..3347ae8287 100644 --- a/frappe/patches.txt +++ b/frappe/patches.txt @@ -189,3 +189,4 @@ frappe.patches.v8_1.enable_allow_error_traceback_in_system_settings frappe.patches.v8_1.update_format_options_in_auto_email_report frappe.patches.v8_1.delete_custom_docperm_if_doctype_not_exists frappe.patches.v8_5.delete_email_group_member_with_invalid_emails +frappe.patches.v8_x.update_user_permission diff --git a/frappe/patches/v8_x/__init__.py b/frappe/patches/v8_x/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frappe/patches/v8_x/update_user_permission.py b/frappe/patches/v8_x/update_user_permission.py new file mode 100644 index 0000000000..4ceb26e945 --- /dev/null +++ b/frappe/patches/v8_x/update_user_permission.py @@ -0,0 +1,25 @@ +import frappe + +def execute(): + frappe.reload_doc('core', 'doctype', 'user_permission') + frappe.delete_doc('core', 'page', 'user-permissions') + for perm in frappe.db.sql(""" + select + name, parent, defkey, defvalue + from + tabDefaultValue + where + parent not in ('__default', '__global') + and + substr(defkey,1,1)!='_' + and + parenttype='User Permission' + """, as_dict=True): + frappe.get_doc(dict( + doctype='User Permission', + user=perm.parent, + allow=perm.defkey, + for_value=perm.defvalue + )).insert(ignore_permissions = True) + + frappe.db.sql('delete from tabDefaultValue where parenttype="User Permission"') diff --git a/frappe/permissions.py b/frappe/permissions.py index 13da62d366..29f223d08e 100644 --- a/frappe/permissions.py +++ b/frappe/permissions.py @@ -7,7 +7,6 @@ import frappe, copy, json from frappe import _, msgprint from frappe.utils import cint import frappe.share - rights = ("read", "write", "create", "delete", "submit", "cancel", "amend", "print", "email", "report", "import", "export", "set_user_permissions", "share") @@ -25,6 +24,9 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None): """ if not user: user = frappe.session.user + if verbose: + print('--- Checking for {0} {1} ---'.format(doctype, doc.name if doc else '-')) + if frappe.is_table(doctype): if verbose: print("Table type, always true") return True @@ -40,7 +42,7 @@ def has_permission(doctype, ptype="read", doc=None, verbose=False, user=None): return False if user=="Administrator": - if verbose: print("Administrator") + if verbose: print("Allowing Administrator") return True def false_if_not_shared(): @@ -210,7 +212,10 @@ def get_role_permissions(meta, user=None, verbose=False): if p.user_permission_doctypes: # set user_permission_doctypes in perms - user_permission_doctypes = json.loads(p.user_permission_doctypes) + try: + user_permission_doctypes = json.loads(p.user_permission_doctypes) + except ValueError: + user_permission_doctypes = [] else: user_permission_doctypes = get_linked_doctypes(meta.name) @@ -247,8 +252,12 @@ def get_role_permissions(meta, user=None, verbose=False): return frappe.local.role_permissions[cache_key] +def get_user_permissions(user): + from frappe.core.doctype.user_permission.user_permission import get_user_permissions + return get_user_permissions(user) + def user_has_permission(doc, verbose=True, user=None, user_permission_doctypes=None): - from frappe.defaults import get_user_permissions + from frappe.core.doctype.user_permission.user_permission import get_user_permissions user_permissions = get_user_permissions(user) user_permission_doctypes = get_user_permission_doctypes(user_permission_doctypes, user_permissions) @@ -258,6 +267,10 @@ def user_has_permission(doc, verbose=True, user=None, user_permission_doctypes=N messages = {} + if not user_permission_doctypes: + # no doctypes restricted + end_result = True + # check multiple sets of user_permission_doctypes using OR condition for doctypes in user_permission_doctypes: result = True @@ -309,9 +322,9 @@ def has_controller_permissions(doc, ptype, user=None): def get_doctypes_with_read(): return list(set([p.parent for p in get_valid_perms()])) -def get_valid_perms(doctype=None): +def get_valid_perms(doctype=None, user=None): '''Get valid permissions for the current user from DocPerm and Custom DocPerm''' - roles = get_roles() + roles = get_roles(user) perms = get_perms_for(roles) custom_perms = get_perms_for(roles, 'Custom DocPerm') @@ -360,7 +373,8 @@ def get_roles(user=None, with_standard=True): def get_perms_for(roles, perm_doctype='DocPerm'): '''Get perms for given roles''' - return frappe.db.sql("""select * from `tab{doctype}` where docstatus=0 + return frappe.db.sql(""" + select * from `tab{doctype}` where docstatus=0 and ifnull(permlevel,0)=0 and role in ({roles})""".format(doctype = perm_doctype, roles=", ".join(["%s"]*len(roles))), tuple(roles), as_dict=1) @@ -386,22 +400,28 @@ def set_user_permission_if_allowed(doctype, name, user, with_message=False): if get_role_permissions(frappe.get_meta(doctype), user).set_user_permissions!=1: add_user_permission(doctype, name, user, with_message) -def add_user_permission(doctype, name, user, with_message=False): - '''Add user default''' - if name not in frappe.defaults.get_user_permissions(user).get(doctype, []): +def add_user_permission(doctype, name, user, apply=False): + '''Add user permission''' + from frappe.core.doctype.user_permission.user_permission import get_user_permissions + if name not in get_user_permissions(user).get(doctype, []): if not frappe.db.exists(doctype, name): frappe.throw(_("{0} {1} not found").format(_(doctype), name), frappe.DoesNotExistError) - frappe.defaults.add_default(doctype, name, user, "User Permission") - elif with_message: - msgprint(_("Permission already set")) + frappe.get_doc(dict( + doctype='User Permission', + user=user, + allow=doctype, + for_value=name, + apply_for_all_roles=apply + )).insert() -def remove_user_permission(doctype, name, user, default_value_name=None): - frappe.defaults.clear_default(key=doctype, value=name, parent=user, parenttype="User Permission", - name=default_value_name) +def remove_user_permission(doctype, name, user): + user_permission_name = frappe.db.get_value('User Permission', + dict(user=user, allow=doctype, for_value=name)) + frappe.delete_doc('User Permission', user_permission_name) def clear_user_permissions_for_doctype(doctype): - frappe.defaults.clear_default(parenttype="User Permission", key=doctype) + frappe.cache().delete_value('user_permissions') def can_import(doctype, raise_exception=False): if not ("System Manager" in frappe.get_roles() or has_permission(doctype, "import")): @@ -426,9 +446,10 @@ def apply_user_permissions(doctype, ptype, user=None): def get_user_permission_doctypes(user_permission_doctypes, user_permissions): """returns a list of list like [["User", "Blog Post"], ["User"]]""" - if cint(frappe.db.get_single_value("System Settings", "ignore_user_permissions_if_missing")): + if cint(frappe.get_system_settings('ignore_user_permissions_if_missing')): # select those user permission doctypes for which user permissions exist! - user_permission_doctypes = [list(set(doctypes).intersection(set(user_permissions.keys()))) + user_permission_doctypes = [ + list(set(doctypes).intersection(set(user_permissions.keys()))) for doctypes in user_permission_doctypes] if len(user_permission_doctypes) > 1: @@ -452,6 +473,22 @@ def get_user_permission_doctypes(user_permission_doctypes, user_permissions): return user_permission_doctypes +def update_permission_property(doctype, role, permlevel, ptype, value=None, validate=True): + '''Update a property in Custom Perm''' + from frappe.core.doctype.doctype.doctype import validate_permissions_for_doctype + out = setup_custom_perms(doctype) + + name = frappe.get_value('Custom DocPerm', dict(parent=doctype, role=role, + permlevel=permlevel)) + + frappe.db.sql(""" + update `tabCustom DocPerm` + set `{0}`=%s where name=%s""".format(ptype), (value, name)) + if validate: + validate_permissions_for_doctype(doctype) + + return out + def setup_custom_perms(parent): '''if custom permssions are not setup for the current doctype, set them up''' if not frappe.db.exists('Custom DocPerm', dict(parent=parent)): diff --git a/frappe/public/js/frappe/defaults.js b/frappe/public/js/frappe/defaults.js index 24ba5e630e..570ae61e2a 100644 --- a/frappe/public/js/frappe/defaults.js +++ b/frappe/public/js/frappe/defaults.js @@ -77,10 +77,6 @@ frappe.defaults = { }, get_user_permissions: function() { - return frappe.defaults.user_permissions; + return frappe.boot.user_permissions; }, - set_user_permissions: function(user_permissions) { - if(!user_permissions) return; - frappe.defaults.user_permissions = $.extend(frappe.defaults.user_permissions || {}, user_permissions); - } } diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js index 05facf346d..a7024a9fb7 100644 --- a/frappe/public/js/frappe/list/list_view.js +++ b/frappe/public/js/frappe/list/list_view.js @@ -599,9 +599,9 @@ frappe.views.ListView = frappe.ui.BaseList.extend({ }, true); } if (frappe.model.can_set_user_permissions(this.doctype)) { - this.page.add_menu_item(__('User Permissions Manager'), function () { - frappe.set_route('user-permissions', { - doctype: me.doctype + this.page.add_menu_item(__('User Permissions'), function () { + frappe.set_route('List', 'User Permission', { + allow: me.doctype }); }, true); } diff --git a/frappe/public/js/frappe/model/create_new.js b/frappe/public/js/frappe/model/create_new.js index 04496c6238..a25c3e70ca 100644 --- a/frappe/public/js/frappe/model/create_new.js +++ b/frappe/public/js/frappe/model/create_new.js @@ -127,8 +127,10 @@ $.extend(frappe.model, { var user_default = ""; var user_permissions = frappe.defaults.get_user_permissions(); var meta = frappe.get_meta(doc.doctype); - var has_user_permissions = (df.fieldtype==="Link" && user_permissions - && df.ignore_user_permissions != 1 && user_permissions[df.options]); + var has_user_permissions = (df.fieldtype==="Link" + && user_permissions + && df.ignore_user_permissions != 1 + && user_permissions[df.options]); // don't set defaults for "User" link field using User Permissions! if (df.fieldtype==="Link" && df.options!=="User") { diff --git a/frappe/public/js/frappe/model/model.js b/frappe/public/js/frappe/model/model.js index adb2e845a6..7b22c5fd47 100644 --- a/frappe/public/js/frappe/model/model.js +++ b/frappe/public/js/frappe/model/model.js @@ -112,7 +112,6 @@ $.extend(frappe.model, { localStorage["_doctype:" + doctype] = JSON.stringify(r.docs); } frappe.model.init_doctype(doctype); - frappe.defaults.set_user_permissions(r.user_permissions); if(r.user_settings) { // remember filters and other settings from last view diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index b3762fea6f..7e0bc14a13 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -103,7 +103,7 @@ frappe.views.QueryReport = Class.extend({ doctype: "Report", name: me.report_name }; - frappe.set_route("user-permissions"); + frappe.set_route('List', 'User Permission'); }, true); } diff --git a/frappe/public/js/frappe/views/reports/reportview.js b/frappe/public/js/frappe/views/reports/reportview.js index 93d6a1f1aa..b7fd287b02 100644 --- a/frappe/public/js/frappe/views/reports/reportview.js +++ b/frappe/public/js/frappe/views/reports/reportview.js @@ -821,12 +821,12 @@ frappe.views.ReportView = frappe.ui.BaseList.extend({ make_user_permissions: function() { var me = this; if(this.docname && frappe.model.can_set_user_permissions("Report")) { - this.page.add_menu_item(__("User Permissions Manager"), function() { + this.page.add_menu_item(__("User Permissions"), function() { frappe.route_options = { doctype: "Report", name: me.docname }; - frappe.set_route("user-permissions"); + frappe.set_route('List', 'User Permission'); }, true); } }, diff --git a/frappe/test_runner.py b/frappe/test_runner.py index a50febabf3..c4fa2f6f47 100644 --- a/frappe/test_runner.py +++ b/frappe/test_runner.py @@ -266,12 +266,12 @@ def make_test_records_for_doctype(doctype, verbose=0, force=False): frappe.local.test_objects[doctype] += test_module._make_test_records(verbose) elif hasattr(test_module, "test_records"): - frappe.local.test_objects[doctype] += make_test_objects(doctype, test_module.test_records, verbose) + frappe.local.test_objects[doctype] += make_test_objects(doctype, test_module.test_records, verbose, force) else: test_records = frappe.get_test_records(doctype) if test_records: - frappe.local.test_objects[doctype] += make_test_objects(doctype, test_records, verbose) + frappe.local.test_objects[doctype] += make_test_objects(doctype, test_records, verbose, force) elif verbose: print_mandatory_fields(doctype) diff --git a/frappe/tests/test_permissions.py b/frappe/tests/test_permissions.py index 6ad0e84f07..d54c484eba 100644 --- a/frappe/tests/test_permissions.py +++ b/frappe/tests/test_permissions.py @@ -9,9 +9,11 @@ import frappe.defaults import unittest import json import frappe.model.meta -from frappe.core.page.user_permissions.user_permissions import add, remove, get_permissions -from frappe.permissions import clear_user_permissions_for_doctype, get_doc_permissions +from frappe.permissions import (add_user_permission, remove_user_permission, + clear_user_permissions_for_doctype, get_doc_permissions, add_permission, + get_valid_perms) from frappe.core.page.permission_manager.permission_manager import update, reset +from frappe.test_runner import make_test_records_for_doctype test_records = frappe.get_test_records('Blog Post') @@ -24,6 +26,7 @@ class TestPermissions(unittest.TestCase): user = frappe.get_doc("User", "test1@example.com") user.add_roles("Website Manager") + user.add_roles("System Manager") user = frappe.get_doc("User", "test2@example.com") user.add_roles("Blogger") @@ -36,6 +39,8 @@ class TestPermissions(unittest.TestCase): reset('Contact') reset('Salutation') + frappe.db.sql('delete from `tabUser Permission`') + self.set_ignore_user_permissions_if_missing(0) frappe.set_user("test1@example.com") @@ -78,7 +83,7 @@ class TestPermissions(unittest.TestCase): def test_user_permissions_in_doc(self): self.set_user_permission_doctypes(["Blog Category"]) - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category 1", + add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") @@ -94,7 +99,7 @@ class TestPermissions(unittest.TestCase): def test_user_permissions_in_report(self): self.set_user_permission_doctypes(["Blog Category"]) - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") + add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") names = [d.name for d in frappe.get_list("Blog Post", fields=["name", "blog_category"])] @@ -103,7 +108,7 @@ class TestPermissions(unittest.TestCase): self.assertFalse("-test-blog-post" in names) def test_default_values(self): - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") + add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") frappe.set_user("test2@example.com") doc = frappe.new_doc("Blog Post") @@ -139,14 +144,14 @@ class TestPermissions(unittest.TestCase): def test_set_user_permissions(self): frappe.set_user("test1@example.com") - add("test2@example.com", "Blog Post", "-test-blog-post") + add_user_permission("Blog Post", "-test-blog-post", "test2@example.com") def test_not_allowed_to_set_user_permissions(self): frappe.set_user("test2@example.com") # this user can't add user permissions - self.assertRaises(frappe.PermissionError, add, - "test2@example.com", "Blog Post", "-test-blog-post") + self.assertRaises(frappe.PermissionError, add_user_permission, + "Blog Post", "-test-blog-post", "test2@example.com") def test_read_if_explicit_user_permissions_are_set(self): self.set_user_permission_doctypes(["Blog Post"]) @@ -165,13 +170,12 @@ class TestPermissions(unittest.TestCase): def test_not_allowed_to_remove_user_permissions(self): self.test_set_user_permissions() - defname = get_permissions("test2@example.com", "Blog Post", "-test-blog-post")[0].name frappe.set_user("test2@example.com") # user cannot remove their own user permissions - self.assertRaises(frappe.PermissionError, remove, - "test2@example.com", defname, "Blog Post", "-test-blog-post") + self.assertRaises(frappe.PermissionError, remove_user_permission, + "Blog Post", "-test-blog-post", "test2@example.com") def test_user_permissions_based_on_blogger(self): frappe.set_user("test2@example.com") @@ -181,7 +185,7 @@ class TestPermissions(unittest.TestCase): self.set_user_permission_doctypes(["Blog Post"]) frappe.set_user("test1@example.com") - add("test2@example.com", "Blog Post", "-test-blog-post") + add_user_permission("Blog Post", "-test-blog-post", "test2@example.com") frappe.set_user("test2@example.com") doc = frappe.get_doc("Blog Post", "-test-blog-post-1") @@ -199,9 +203,9 @@ class TestPermissions(unittest.TestCase): blog_post.get_field("title").set_only_once = 0 def test_user_permission_doctypes(self): - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category 1", + add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") - frappe.permissions.add_user_permission("Blogger", "_Test Blogger 1", + add_user_permission("Blogger", "_Test Blogger 1", "test2@example.com") frappe.set_user("test2@example.com") @@ -221,9 +225,9 @@ class TestPermissions(unittest.TestCase): def if_owner_setup(self): update('Blog Post', 'Blogger', 0, 'if_owner', 1) - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category 1", + add_user_permission("Blog Category", "_Test Blog Category 1", "test2@example.com") - frappe.permissions.add_user_permission("Blogger", "_Test Blogger 1", + add_user_permission("Blogger", "_Test Blogger 1", "test2@example.com") update('Blog Post', 'Blogger', 0, 'user_permission_doctypes', json.dumps(["Blog Category"])) @@ -231,11 +235,13 @@ class TestPermissions(unittest.TestCase): frappe.model.meta.clear_cache("Blog Post") def set_user_permission_doctypes(self, user_permission_doctypes): - set_user_permission_doctypes(doctype="Blog Post", role="Blogger", + set_user_permission_doctypes(["Blog Post"], role="Blogger", apply_user_permissions=1, user_permission_doctypes=user_permission_doctypes) def test_insert_if_owner_with_user_permissions(self): """If `If Owner` is checked for a Role, check if that document is allowed to be read, updated, submitted, etc. except be created, even if the document is restricted based on User Permissions.""" + frappe.delete_doc('Blog Post', '-test-blog-post-title') + self.set_user_permission_doctypes(["Blog Category"]) self.if_owner_setup() @@ -252,7 +258,7 @@ class TestPermissions(unittest.TestCase): self.assertRaises(frappe.PermissionError, doc.insert) frappe.set_user("Administrator") - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category", + add_user_permission("Blog Category", "_Test Blog Category", "test2@example.com") frappe.set_user("test2@example.com") @@ -273,8 +279,8 @@ class TestPermissions(unittest.TestCase): self.set_user_permission_doctypes(['Blog Category', 'Blog Post', 'Blogger']) frappe.set_user("Administrator") - frappe.permissions.add_user_permission("Blog Category", "_Test Blog Category", - "test2@example.com") + # add_user_permission("Blog Category", "_Test Blog Category", + # "test2@example.com") frappe.set_user("test2@example.com") doc = frappe.get_doc({ @@ -294,33 +300,73 @@ class TestPermissions(unittest.TestCase): self.assertTrue(doc.has_permission("write")) def test_strict_user_permissions(self): - """If `Strict User Permissions` is checked in System Settings, show records even if User Permissions are missing for a linked doctype""" - set_user_permission_doctypes(doctype="Contact", role="Sales User", + """If `Strict User Permissions` is checked in System Settings, + show records even if User Permissions are missing for a linked + doctype""" + + frappe.set_user("Administrator") + frappe.db.sql('delete from tabContact') + make_test_records_for_doctype('Contact', force=True) + + set_user_permission_doctypes("Contact", role="Sales User", apply_user_permissions=1, user_permission_doctypes=['Salutation']) - set_user_permission_doctypes(doctype="Salutation", role="All", + set_user_permission_doctypes("Salutation", role="All", apply_user_permissions=1, user_permission_doctypes=['Salutation']) - frappe.set_user("Administrator") - frappe.permissions.add_user_permission("Salutation", "Mr", "test3@example.com") + add_user_permission("Salutation", "Mr", "test3@example.com") self.set_strict_user_permissions(0) frappe.set_user("test3@example.com") - self.assertEquals(len(frappe.get_list("Contact")),2) + self.assertEquals(len(frappe.get_list("Contact")), 2) frappe.set_user("Administrator") self.set_strict_user_permissions(1) frappe.set_user("test3@example.com") - self.assertTrue(len(frappe.get_list("Contact")),1) + self.assertTrue(len(frappe.get_list("Contact")), 1) frappe.set_user("Administrator") self.set_strict_user_permissions(0) + def test_automatic_apply_user_permissions(self): + '''Test user permissions are automatically applied when a user permission + is created''' + # create a user + frappe.get_doc(dict(doctype='User', email='test_user_perm@example.com', + first_name='tester')).insert(ignore_if_duplicate=True) + frappe.get_doc(dict(doctype='Role', role_name='Test Role User Perm') + ).insert(ignore_if_duplicate=True) + + # add a permission for event + add_permission('DocType', 'Test Role User Perm') + frappe.get_doc('User', 'test_user_perm@example.com').add_roles('Test Role User Perm') -def set_user_permission_doctypes(doctype, role, apply_user_permissions, user_permission_doctypes): + + # add user permission + add_user_permission('Module Def', 'Core', 'test_user_perm@example.com', True) + + # check if user permission is applied in the new role + _perm = None + for perm in get_valid_perms('DocType', 'test_user_perm@example.com'): + if perm.role == 'Test Role User Perm': + _perm = perm + + self.assertEqual(_perm.apply_user_permissions, 1) + + # restrict by module + self.assertTrue('Module Def' in json.loads(_perm.user_permission_doctypes)) + + +def set_user_permission_doctypes(doctypes, role, apply_user_permissions, + user_permission_doctypes): user_permission_doctypes = None if not user_permission_doctypes else json.dumps(user_permission_doctypes) - update(doctype, role, 0, 'apply_user_permissions', 1) - update(doctype, role, 0, 'user_permission_doctypes', user_permission_doctypes) + if isinstance(doctypes, basestring): + doctypes = [doctypes] + + for doctype in doctypes: + update(doctype, role, 0, 'apply_user_permissions', 1) + update(doctype, role, 0, 'user_permission_doctypes', + user_permission_doctypes) - frappe.clear_cache(doctype=doctype) + frappe.clear_cache(doctype=doctype) From 50d06d120219623e03443a300dba5b0082a938b3 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 28 Jul 2017 14:41:58 +0530 Subject: [PATCH 07/10] [minor] sitemap.xml is also programmable --- frappe/website/render.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/render.py b/frappe/website/render.py index ed446065fb..846df30590 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -79,7 +79,7 @@ def is_static_file(path): if ('.' not in path): return False extn = path.rsplit('.', 1)[-1] - if extn in ('html', 'md', 'js'): + if extn in ('html', 'md', 'js', 'xml'): return False for app in frappe.get_installed_apps(): From df66dfe941e92cb2ba8f6bb4f52bdcefd6cc9eac Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 28 Jul 2017 15:16:24 +0530 Subject: [PATCH 08/10] [fix] render.py for home --- frappe/website/render.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frappe/website/render.py b/frappe/website/render.py index 846df30590..283862499e 100644 --- a/frappe/website/render.py +++ b/frappe/website/render.py @@ -23,8 +23,9 @@ class PageNotFoundError(Exception): pass def render(path=None, http_status_code=None): """render html page""" - path = resolve_path(path or frappe.local.request.path) - path = path.strip('/ ') + if not path: + path = frappe.local.request.path + path = resolve_path(path.strip('/ ')) data = None # if in list of already known 404s, send it From f0f16ff815ae2d826e3321c1c22dc7bcdce5bd12 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 28 Jul 2017 15:18:53 +0530 Subject: [PATCH 09/10] [fix] save last route on error so user logs in to the correct page, fixes frappe/erpnext#8174 --- frappe/www/message.html | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/frappe/www/message.html b/frappe/www/message.html index 0eb183fcfd..4697534a2e 100644 --- a/frappe/www/message.html +++ b/frappe/www/message.html @@ -3,7 +3,19 @@ {% block title %}{{ title or _("Message") }}{% endblock %} {% block page_content %} - +

    @@ -18,17 +30,11 @@ {% if error_code %}

    {{ _("Status: {0}").format(error_code) }}

    {% endif %} - + {% endblock %} From 04aa13fc9bac1679474f0cf15db37cbb963afc58 Mon Sep 17 00:00:00 2001 From: mbauskar Date: Fri, 28 Jul 2017 16:34:43 +0600 Subject: [PATCH 10/10] bumped to version 8.6.3 --- frappe/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/__init__.py b/frappe/__init__.py index 28fca585a7..cd5c0cd7f4 100644 --- a/frappe/__init__.py +++ b/frappe/__init__.py @@ -14,7 +14,7 @@ import os, sys, importlib, inspect, json from .exceptions import * from .utils.jinja import get_jenv, get_template, render_template, get_email_from_template -__version__ = '8.6.2' +__version__ = '8.6.3' __title__ = "Frappe Framework" local = Local()