From 38130f3ae33a6ee9073adf427a6e6fbf87f4253b Mon Sep 17 00:00:00 2001 From: Arief <arief.pratama01@ui.ac.id> Date: Fri, 30 Oct 2020 05:54:04 +0700 Subject: [PATCH] Add default book cover --- app/services.py | 14 ++++++++++++++ app/static/images/book-cover-placeholder.png | Bin 0 -> 4529 bytes app/tests.py | 9 ++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 app/static/images/book-cover-placeholder.png diff --git a/app/services.py b/app/services.py index 311cb97..ab9d563 100644 --- a/app/services.py +++ b/app/services.py @@ -1,6 +1,7 @@ import datetime import os import random +import shutil from functools import cmp_to_key from django.contrib import messages @@ -377,6 +378,8 @@ class UploadMateriService: @staticmethod def upload_materi_excel(categories, excel, request, row): + default_cover = 'book-cover-placeholder.png' + for i in range(row): materi = Materi( title=excel["Title"][i], @@ -385,11 +388,22 @@ class UploadMateriService: descriptions=excel["Description"][i], uploader=request.user, ) + + materi.cover.name = default_cover + materi.content.name = default_cover + + # Check if file exists in /media + if not os.path.exists(os.path.join(settings.MEDIA_ROOT, default_cover)): + shutil.copy( + os.path.join('app','static','images',default_cover), + os.path.join(settings.MEDIA_ROOT,default_cover)) + materi.save() for c in excel["Categories"][i].split(","): materi.categories.add(categories.get(name=c)) + class EditProfileService: @staticmethod diff --git a/app/static/images/book-cover-placeholder.png b/app/static/images/book-cover-placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8df02103c48555475d42e34d6660cfc9514697 GIT binary patch literal 4529 zcmeAS@N?(olHy`uVBq!ia0y~yVANq?V0^&A%)r2)(Yc_5fq@|^z$e5tH!pAdwrzLr z+-YrT-MeRZaY;#GQBhS@)!Mad7R;MhS64r2;>1lGH!NSaw5Pj!#*7(Lr%Wj?FTZ;A z%Hl<fHmqBB=Je?~vuCebxw5&bslTtUp}wJ`qvPn2!wcpwIM%#kJ_CcGkf)1dNX4x; zmkqO+0vTK{e)MnhQ&_U8`2TC4eP*7!xEJ-z3EunbP&5Mr!-M{V_DOfOuN~4)>MT_a zQyAp%1J}lFhi{*qp|`w0RbNj2_1_Y?@aKoiUVq*B=16efj^3BA)7MV7y;|k9=JAYc zme&nsr^o(Cd;f0sZI*`&egA(jvM$Lw{c0Ec?|=87F+Fr#bknO`{OIG~$Nh3A?XL0D z?992%$}J?eBRfc6!QFhx$%kSUDckJiu1}X;Dv~H-rFK>I+Tm5jiH5sZUTSE|sJbfc zVyw4vhP58=qbED9Qa?<ZC}ZI$EtznYb0gaa2DZXyV!3WEhYl|9y)XQ2M@x3C)O!gf z!3`HVH}o9t%4=g^z2mI<YSA?pBya8Tj1tlB{nshA&5Bv9JEF=krEv1L!~&s<0+|io z>5DklA9^1(m(81z!L&ndPhe*Uo73dGj~`wX{$a7qw*Tn!-C@rUE^2l$3DQv);c+rL zcl6PPDZE9T-FLTJ@m@2%nHn6*dQ&fQg>HN4&I6O`H(POw1$#;P6f;gszF4r=_neA* z3a9s?z{L%3{hCu_Ej*ulI(bIC@O+o-n_>N#p}+9X!(f?-8)QzK@r(UA65M|D_w@|n zhi9aU*ZiCxq4iJd?z@l(ndU&L&65`KbU61dy);8KMl+{WZ_Vp%Ui+UpX-Q0!3A}Yz z?{L%a`=95CuJ*osHb-mK=bzU_zVG^>bw)nATu)~fTlKT^lH&V+inSl!s%NVaTYJPl zDfVx~o#dmdv;5{Wo=keT^1$LBZyzjDJnS|7&8}Y?Gi0tLZi!yTyk1oGOVOW8C(G{q zS>yZhUTK82*mC1r%jyC)-+po6`psHZ2Mw3S;=3l>o^up%F<zq2qJP$8-l|E5bGIgQ zHlOB^wp{Y1CvH;ufn<wyKRy{JefwGX*lUd}x7DfjSyO(k)$!9Wl|J!pM}x$7|7A9B zN<_l0_J!v2u1?%373RphdO=%gz+tTwiK16FaAifXnyzW`YbuRxaSdT-nA;Y0i`o0f z((P=8L5Cz(ES23*vWHi<%4N-qsCt`e$F|(!$~e3$_>p0ar@Dg4mov+(3Iunr)vFic zGq@4>ZWI69Q_>7~3=h@(W!SiC<BpT>nVMXdG-f%?nOgLHYm2qR1=lULY58x`*kuo9 z8_)hAR2-3a`AgT6_z>r_5nQ=8mlsdubx)rXwj=g_Rgvt$Wy%)e4~?E(JR4!kcs=Xb zqqI_aH|5^2S7n+@9HJZg{CgtKEo*+`w))h&obaBd7nd2?D;<iSbKv-+9d2Ugap_C4 zbuO$hUi0T%+1ZGqY{O8S)?a5ro@q~VRB80tBX71LZAX}~n6vcVFrVX=$6Q@9JHNlU z5aT$fdLK{rmwoGIZTuiN?d0)VVR^G-@@HN?f4H3MdPI%gX@+|K)y}t%S$REpsPify zO@Fb@6RFd8_ssJ*EZwo4VamOuOfS#RkjwmLbUCMfg8k7ASMR>*+L*RwrI606>4AR1 zdFP&NIW+5yp)zaBs$)tS$@33i%KUnZ<M5;#=MNu~*4b^HvOMo<gjDRG_=wH(<CaR! zaG97K$i3y`?SRzzw%NxXNjFcEIFxYhY4fEbE;EHj(`g3TIup;!XdPqfJlClI=T3r) z(P6!}Kj%wck&ZZU@UP^?ON)ZzuSVQi;H$TON8#48_2-{Gu<{EmUK5}%99GbtU7E~z z)Ti5c%0>1}AycLK8^3vf<ndnI74e#NS!i;r;k?qk^sXGEy2ew_x12F?>XNZ}*?aG- z@16YVP1pNa@3yS#G%WsI{%jdz!VJNgC+1DuUwP`nGS+}wx5YOfP`)*VBmT93dW7w? zXp2{qy+ssxcg=`9n=0-uanGc^`*wW2?XjyD)DJK{2+=eR+839<Yv+Y2t7-~Y)~{IK zy!Ot;;DoD@hqEHqVI)=@X&AS#`jM(%3-|BeZ#y~t=fAh9KaM`!@wVsdug&V_d-wmT zXiDCuE%w)K+wTSKUvBZg&YbY1?!5l`f*oat7ft%JxIeyNL)oFKzY6nT+&=hEdSmT| zI{V4zzZS0OF63Xc{QZ;9e_I}JVZQd-TJz;!i|dabZ#*Kc`NrUX#M#3ej~HvdyY0B_ zYyYvTTIKi`ZzVQ&uqPLK?z_go{^DSS?awUz4fXv;s}$qkTfe#Iys>WL|Ch<%`LFjM zshafU|CR+CW^Jq!iar|tNdDWovT#2Ejs?bsJYj;S0``x8?@zn@?VXkuhxx_U+4Jh( zKFd24Dbb#Iqc%W{^N-S1jsFXDI;AI_QIMOm^x}f>RfiJPI22+dn-jCtemGy`;BngW zz<<}KteBOYaRJSaAt26|W1=~lC0dUE3?p^-oy`0m)Tb!&z<1Rqwi;u37cQO!>K{}h zBbE0Fuv9NI>1ymhnKftkG&bjqgZ(L~SI;SP2x;b2%T2!eu$#wE!;pn9PDOilnf=)) zo`>Q;CazlZDJkj+r_b8sDXHSju^$}T!?Hdog+{)W+FX;mQE;un2gT6H3A?%H*~&?H z9xq+>f6kg?Gt~s;F7^pU@X0OF?taXj%Actw`82Tg$MclNqO}Y8`~wW!Lu)Dm!XB>R zGrs-h<V7d`>nb|g*40v<tbVLi?9Ocdu|!AhgRh<>L$iKPzpdki#jTR-JR`(-mT?9i z6yJQ;Lo6`v*9x5p(>^}?*0sAdD|3fRZshJ=R|{$volxw49`YtKGEHUuwT`E!1U_Y) ztDHBD_3-VUJlj)Cn%*$3m3sPSpTyK%ItzmSYz;789~8#6<f3bwc!FwaBtyuVNJqC{ zsn4gofA^i=*!m@PrpSx78m=#^T8-;w>Abpl_D$(GWj2e4%TH>3WO~|@^{(e%`^iTY zoXi0)4l=OU%~*3P`xMWM#s?dor=OIvJ-@d^#8;sIG}n6$L6!iwi!2`_Bj@J#2THp} zKX6Yi{Nl7LY4+}%$%}N9z8@*N{A0V7v4Mx5*kmt-MFFXdYPk-VeWVYoKD?bebw?2I z{j5_#?amSJA0JtgvQ<>7<V)|oHLup+<gjwfoA5Me?b@(t$+i<xN*N3Hgo=f(TOI2? zK}XDS_Mf$zyso!RXL`@c@uexj*=f^^15@|iKl(s1AngB7y`Q^NW(s?IFezwmyV__K z5cc(Fb#nQsOTVieZs%WmV;2zCC-46#f6CF1ttMvYY7<TzvQtUZyfLXqr&E8%P9tai z&=>2MKRkZ<l5}e6>x8qie64XamQ7g0W41(jwbkzp_cvL6N&k19>-)z$58WbvrKDZ_ zJzw<KVs^7*1sk8cMW)Mt`;u31MZ!hoJEz>lqrFQ{mh&I}zlkUE<~EJXYbsqC0%J<{ z22ML5e)ibZMYYd9#7~>J=zI3P4Hr(H`|#hWCG~&Htbm?u@k|SO{loV)R^OX`?DotD zd66sCmI~efqOO0>Y18ewOySGgQ&e|PREr7hKbe)_Y_+N9Z49HD@x3Dq(n6C|FUoB- z+QZ4Ft$8x5u=x)A7Hf~6CGHQq609edPx!QRq2LTLg9FtWiOxZr&M^P_xyNM2Ijudx z(`FudAAMG8PcskCq)DMS?7uPY_fW0fA1n6cTFb->@}?#)j`FZ|o|JkkncP0F<GL*O z(hI))YMm#uE;@Ypke__|r}mFtpT)v_)|V!+W|<d>{jv#p^VjUCtCsblc}G&tW&{P^ zxRP~EXzPv}s-+v$O(V}3F5z2$;qbFq5sO^SCg#qQOsU&lEqATVwC41F9)958rvlfF zr=?_1w{n*(*zr?sePq~U&P&TBBaZ217wFD7lyy3XIld=XKEB}irK-Pnk#f7&@brKA zW1Dx{E9CM+j-VTL1;OSrdJq54TR!o0)(4h}2gO6?@7X0^TR5pu=zL1#wB%zCrS8?T z9^8>S@j$SY5!)uET|It}<Jj+~R_Nch$%`~y7cos~!_L$HJEKl@J~)x2``R$>Pvhrl z4^Di1{j>7SCbcb>1=a+dmbA3qt1=@XEPRKf{$oE@(IUYNh2&{VFEmbLvAf{un)vDi z%feTI=RWHkUlu0Se?{<g(hIfkmyYt6?p=B4{X(T_rjJDzJ)F1lR>7Z{mkNG$q+X3< zme8;9EKU=Z+TYt35%$!&Ese=~siJoEUtjZ6L5T{2r-feh=0%mqY4=WDyX@`bZ|WzK zB#s#EOfj8ZIo1D|*LU|L+N+N`tU9Q-I=a7G%qWgWp+8*gxNXmK@m*ZA*Kje+u*<0t zX$v^2oqfpm@>hMKzgfE9#p1VymhSuhC-j438PnVn&67eh5v}4=N+wzD+20y`Iq=D^ z`%|uluB*O!A~@IAYg0gRL*RnhHCEc4o~QWLzqF<{8b&^pEDqWfAi}U_=cUlghF^3a zJ90gpZC|N-zf8k7I5R|+Ys=Krny*cEUAU>pELhLW|Ls)Lx{%PPFPa`rJ^E4P>b_M* z&Y9uYE=J~QGfj@0to7*8{rqp|O0S0sa4a^?lvo?2KanHr*T40ZenH>2<>mAIV@$Pm z5S~8m^ci=79er;yw#qKsv~SMWx6@BIf4Z{w%Fg4P7`6xOlt^7^|M&Z@*l&+N_cDa_ z@$AWu$hfoYrBB+f63I;`zuaFo^CpM#{)z2hc8Ok7;x>-GZ1r2atM~ZT6N|q@g|+Lj zNxZzeCv(~(kK(MF_j{*J-MO#w;u*H5S+%>HY=ZVTD?a&WB3s94H2IwHCa(Rdh3yZd z)T%m_^A~;HJJ*SClFjtc4eV<>qx>f)ZT^*NdSc-x+xe;=j(ol#?0&24>kPM6o+Te* z#XdjX-yftZG-vadx&KevH_Lo^cz;LvUS$i_|EZ2ud7Xc6=$1~)=;c%lj#6N^`eX9C zGV<^=qYehWmBpJDOt<#`>tb!fs>scjqL7fJTrta{CTbI(@~yM81&$V$?kbG1o#9aQ z;q+^kAF1)1YnM$hkuz>7%4jIP6nFDalhU)*5>1wg2Ulfm3oFh#xhm&`-JHi7Yids( zekcCxXvxmrb<9?~KQFY770=if{<!*QXP1-J3zJEE{POO5<m(%*JW?9x8L|9O-AixX z^Evm0b{eOtpPi*8d`obbq>9jF^FGy2iQ89B4dL2<v64w(%NqVt)wxy+p4#+nR*+ov z-Fx}V)o11BC;nyH#PF(3a&A=F`pez-1OBn@6<@dGtdj178Qv$Ds&<K-@J^|VzCM99 z;6!BAS*{?P=;;$#AEo~blHEB~D3pmk#_d}DrbVlEo!RT9E5G6N(v-RSs_$;^+NtAV znYwrPX)TM${@tgA=Ipw6H}&9T!4-S=>NE>)kFwg~aLR69L3QK=f5S=2i*yq2r}k}9 z*nUsaEz)6q_0`Si9M|S>>U3;c)455)C6Z^64qKpDvqrb$l%oo#ejVqN<z`@DVBq<* zUGDHdr;G`vC!|t%H?c)FuW`JlkWF3gs#>cpj0_Bn65sw`&nPfn@vTLb`v}*-z<J3V hJ47vb85kOp8IIiA?J4u_(Kb*(c)I$ztaD0e0ss*Ocb)(M literal 0 HcmV?d00001 diff --git a/app/tests.py b/app/tests.py index 8758a3d..d58073e 100644 --- a/app/tests.py +++ b/app/tests.py @@ -1303,7 +1303,12 @@ class UploadExcelPageTest(TestCase): response = self.client.post("/unggah_excel/", {'excel': fp}) title = data_frame['Title'][0] - self.assertTrue(Materi.objects.get(title=title)) + materi = Materi.objects.get(title=title) + default_path = 'book-cover-placeholder.png' + + self.assertTrue(materi) + self.assertEquals(materi.cover.name, default_path) + self.assertTrue(os.path.exists(os.path.join(settings.MEDIA_ROOT, default_path))) def test_upload_excel_download_template(self): self.client.login(email="kontributor@gov.id", @@ -1314,6 +1319,8 @@ class UploadExcelPageTest(TestCase): self.assertEquals(response['Content-Type'],'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') self.assertEquals(response['Content-Disposition'],'attachment; filename=template.xlsx') + + class DashboardKontributorViewTest(TestCase): -- GitLab