From 6de253df584eee34b4befe68e3696a8188959301 Mon Sep 17 00:00:00 2001 From: wangyong <864072399@qq.com> Date: Mon, 9 Nov 2015 21:04:47 +0800 Subject: [PATCH 1/2] delete xlsx --- .gitignore | 1 + .../excels/cmdb_excel_2015_11_07_15_58.xlsx | Bin 5796 -> 0 bytes .../excels/cmdb_excel_2015_11_07_15_59.xlsx | Bin 5797 -> 0 bytes .../excels/cmdb_excel_2015_11_07_20_55.xlsx | Bin 4990 -> 0 bytes .../excels/cmdb_excel_2015_11_07_20_56.xlsx | Bin 4990 -> 0 bytes .../excels/cmdb_excel_2015_11_07_20_57.xlsx | Bin 4990 -> 0 bytes .../excels/cmdb_excel_2015_11_07_20_58.xlsx | Bin 5724 -> 0 bytes .../excels/cmdb_excel_2015_11_07_21_00.xlsx | Bin 6097 -> 0 bytes .../excels/cmdb_excel_2015_11_08_14_28.xlsx | Bin 5946 -> 0 bytes .../excels/cmdb_excel_2015_11_08_14_29.xlsx | Bin 4990 -> 0 bytes 10 files changed, 1 insertion(+) delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_15_58.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_15_59.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_20_55.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_20_56.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_20_57.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_20_58.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_07_21_00.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_08_14_28.xlsx delete mode 100644 static/files/excels/cmdb_excel_2015_11_08_14_29.xlsx diff --git a/.gitignore b/.gitignore index b749de2d9..1de104d56 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ nosetests.xml .mr.developer.cfg .project .pydevproject +*.xlsx node_modules logs keys diff --git a/static/files/excels/cmdb_excel_2015_11_07_15_58.xlsx b/static/files/excels/cmdb_excel_2015_11_07_15_58.xlsx deleted file mode 100644 index 9d595c848638a7118fcddfa590101bddc3ea7059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5796 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 A?f?J) diff --git a/static/files/excels/cmdb_excel_2015_11_07_20_55.xlsx b/static/files/excels/cmdb_excel_2015_11_07_20_55.xlsx deleted file mode 100644 index 426fdd6b188d521805837a9521018b773323236e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4990 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 diff --git a/static/files/excels/cmdb_excel_2015_11_07_20_57.xlsx b/static/files/excels/cmdb_excel_2015_11_07_20_57.xlsx deleted file mode 100644 index 3d3f3db3d359100f520efe3918cdfb40e7be7e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4990 zcmZ{o1yIy&*Txr+SZaw~q`SKWLAsj-2|*DBmIdhrN#P-+yF?lUM5F{^QE60aDG}+e zC8SgGTlITBUzzXSo%!E0J9C|x{athJ|G5rS8|NAr000mGgo@$nq@)?_vRD8B2{r&g zjrrBvQOL^$;oxougL$|M{W?Shy`3Cm6ZQ2!3KM_cdJ@&?HSTOpr{ly`XdjG2F~23{ zFePD5VH(-dUdN?Nqcq>fvAdW2kC5K(L6_Z5P#<44u1*s1wehG&unFw@mdLabW*P0f z+PYLk$10%pT~_&|iBr->PmyA!x4oy-1;N^Go*UBHV4hS$giKstyGV$Y=iFeTQ8 zO&?e1I*Zb`$MR?{w@dUYkGFM}&nF@h*_gwe*ii#(uxQX=ZMScJ70|$}`r2Ik z=pC_xD#A_%H-#MI>(dNVdA7{7ta8yTYiKT%5cDtP>1c86I~e4=804To$gNyl9Db2D zKf$s;kX|@n4{ZZUncEobF1*2AnpurzVw(h%ZSHyq2|^? z_Ln|i>03s@4KF0_b%BEuLDygv)M@qLoDs=1Q-zqKB!hhRm#!)}Z@*iO^EUot@JK)F zeg;^}VLcL^-tZ|ZBk{Gthcu_En{Edl`mmwf<$yC*Gm9-*tnhUB0H=I%93M*sYF$ZF*J&6*ZzOQR;&Hp5PEeZc zRK$BsYB8CUm}s1!-m{csbMxLqaG0j#n6A@JkW?G_W?t~TID=G7W zzL90FPk>uN`~x-cgtbXYiA*R%rO>Y&?7(`46GeJU)&<fZ8b@C|bV-@*n_Y2SSaOx}yOY2*Vn27scdwnv4$dS{l>^_ftW=R&z)! z;uC4L@)v8mgcl8aJB$thrB?jvaO(}~Od-TL5yef&E{jH6F}Y+I|Lo&h!^De3Z)v?r z_=AF&=+dS5I`l|gahg6&eBJp{^R_NjkR%bbQs;K$O(_vjLJ-F$%klYx33>NE(Z^1F zrF$u=Nc4bej!7}KDb&LRI# z)2v+(uwSkv^*+M%&eJV_!h(8%E>2x?B#u*8Ns!WQb6?6qPV(A-gdu64Q(nD!_JrH< zrRnFMo(8fLYl5e^Oer@=Uf?RyP(LgZUB_z_LjS<&R$5fs?W46DAjQt8^{RE%xdW=4 zmfki{?4;ujf`$U2Hf>9>0R~xz2{oZ?QzjAO?dYx5b-xu1br60K|NC% zD(Zz`w!!mbXMjdfJ`M>do(@q||1`n<@Jx~r#M}_?CjDeh&ZjSpB#*=o{Vn&uJ<$EZ zb8)YsfuwY~`@22|ptcsQ<30Q31lgXZDt)g*`CcJqCAhQ0V$h|5;kwj*P>&(NGs4eM z?sYMGiN2O2KRIhKODB!vVKPr?=SaY!@g>cxc;yRS87$KGmGX+G_T)GX(n-Z=4mlxdKfY)+@IclCp{~pXBCUl2$HzNpJ;PvIxj2 z-#I&av%yOXJEu9*i>ba_k$VD9XuK2*|31BQO!qf#+6LOLcnof9%)LYM`|@}9@NtB> z{{&r>Y~U~{Ox!VZ#1k_!G09L?#-_>Jv6V#NV}v-E(k1C|?r$l~-8UQy2F zzvMV)zw7zK!_6d%MP;E1^D2!62gZ)z)oV2|9D2j+j3iiQ#B4*VNba0waPAj3KD0Cs3Yoa&`z3YJp!jQZ=H!5* zt)U(u_6bthCo7CEPmtTd&4qzLPcax-dQH>>S z#3bdk{0vlZ4%1UEJF#~i9BXw_ei;QOr|KC)hY!~toHHKC|Lq+0iJH+HTmZn3?subL zCM6F$m=o;x^Vg8HVWt~Dp+eoX$EVg*7e{%kw<4olVyrN916ev%^Qt3KwyK!MuPnXG z*q90)WZyUy-RPX;YXeV1bS7J5x}&2siYJ!!|bx)&J@sFh;R+1U&D=a>P#R*Ns9 ztgfQbos3+%S78>xE(fxsK$hPMxhQ%TTG*x;NTaVYkwIZ^F>x}>J8eWB3B=x2ah^v) zcv79mk^2wnP$(G=;3S}ZmM^K!TXx;Z(Ft>_%=HCr|+S#Mvqzz;lTC7yL#~U z+c=OkR73rZ%4L%s+RJu|fP$~9-gJ;B)>R-Vd2%@ln4$81^$}m3lVXasVJoa4zchypNllTX255F!V}HmzCi( zpI$l2s-{2H0C>MV!I8wRrK{U@rbs2bvTSQWSd>e{6VBRQVX@jQqTBbVJw{0~U?v8> z?c^< zUuu3HD@)0G#i7A&1bn~xSNYpb!%mqKnu z!+hfP!Q|lvt}$Vbtfay#8&qQuD6l`~#E~UWX-ahGb*iOF>#C_Z?D2zVYVW>l3J4tH z$~5P!Csc|be208!&gY3G694SyrQ0QXy?t0Mf$7x)Vlrx&)Hw1TlssH8MQvz{h?*W@ zmUlh4y3{JpRtzPL)TQt|CXW*f^?&!({S+atM^VrsD5^isaB z^IjTp1avmvCVIZtLB-cOi`Wp8t9fHD*J#7eFSi#LDxN>-V+2tJPww@wRt)dgs<*aJ zl(_b(J54#dP2D{;$ZVU#fmsf`E7=~iYGT;NiIB_CPa&Y#F)Zb8{;^Ev;cVXyE4vsI zc|;yO9OZ4fxLqPuU)44SkM?ti`{7yo!RyEG3mV+L)wx(&B%gD=rT?gH=c3w}3Ob9@!^O4i0qmqeJ;5&?5`7ZUvWEKh31WHMrfttYCB zry0%~1o=hv%!N~&;&LtQ&UCf01)oATw;~f1h-2;X1vEOgJ^W(`6eFcJx0pvKIe-Ack83< zm3aDxRwF!H;`U!xYEX?vK${s=ItopAj0& z=4A%7J`)|}k{oyf_?yU*3SGfB3<-V=5!&Cw%5Nw?R|Nm&)!%>;`=hW$h{Lz!RJ;7S z#0XifI#AWK#`{=WTzmNN@j)A}?7BMc4}1~c+u#7;k6lHR^@V{_rl?7u;`~kobg`^b zdcu?}J(Ig@v4srI^)0-L^bU5aZ4`-4+97j2_y~K$)0@t$s~=j9!cW)hHk8Xc)P#4aipNfnAKv*1e&DK49*x$ zuzOca-Cxv60oktV+0PbD@?6zlq!;QfCVlHA{U*lWcSUzTsS>@j*|h|OYGYx8asKZbtMaQ+;g1{(@Ba-BR|{Mne*YA3#sBr!|BS*{rB|n~KT=-cFX`1;>}r9l w-TkKk5oQVVAH9B6c(n=s2pKSo1B_q)r6r)+xELw`01)$)!CUM@&ScRM)T!=3NfNr2be+39JbruzgxdC2w|gmyael!DR1$#zgDtpffkA-BtD z%+Z9>WKRWq@R7MHDW@Dg(js@-c4jzWcJriiyPq`I615_hr9h3vr})u3Vc||pVP7&e zr{+UN$!4aGN3wGp^SV`6_Y^Auv@}@7$SH^0-1sm!(QSQ70f1+~~ikq=O+ zaqmBA6CbXxMhQ(z$>8OMbPvVE@i?(ye)~eBYb~!zUWbf1;ep`@PkWx++jMy>TqMG* zOQ#c|_1=8w)>fkLN!o(7jm|r@>UIx-)Q$mtiEK+fL=x56etK&jJ&tJ^+i*o^?ikBj z;*g9pdO|F`IXe@OrdY1G>f@~8@D%CQ})U6S2cXKYdA=?|W1kxgi4>rN-kyPawW9;*GS+2sfvub9Oa z&6jyH@(oxtHGzkv0JSQisqWMXqu1j(XY$bPqvMqz{~_Q#F20z+PE0g`U*}m!vbAMu z0S-|W9oKXgt6Ekbl0}XoyY$lKsNbU*@W5>{6Ad#+8+B#Y^W#s`%ri+M!EW)#neUI# z9~x(%;hU{ITgm$+M|~yLWJiYA8j&>ESM6HNUK(<*n&H}ODQw&aK*t-8z!g)Yjy_KID zcc(7<#Ui3STHsagH602me90Oz=tK?GM6O7|sx#^l^fmrHFgk>>CWugw+=w$EwQASu zE)9ne!@jS#_sq_VbBo!Vcw&|eY!dxLR8aoXf`zy^(vUin!rRaJ5fmMJoXrwqEyM>; zA#K!#>s%HRuHs~)Ox9JAz{mojwp^`4JMi85040{r7JL&@cY)={WRpb(S8<;y2U>nk z+3|70;}FLK%tX%pWg@B8yD(EUlON8eI(=ubj{0023LRBIP2DAL8%ozKG6 z^(Ud3Izew7jZL#Rb53GN$PLW*x1XxIFPd(?GIKX1*Rkz7>L7#Ix;niw3hCD^Kk(S91 zSkcA4sNdgZa0JLT2@6#p-pl?xL7 zOSSkOL<>LplWqTq&Z9PgL@FcI*og?;IIg5OuSL=KP{YT{Rglx&*XY@#`FZYI2_?P;#!wBLHS;XBH>cmCGL4;0 zz#q&)n!GT>e`dM)ofN!pPans2SQrrbNCrKox6l6e?&NE*OrFK!6#NKkL&=XqyKt#~oZ>wMw3DwSx7 z!=cn#*lZ2Kx`jBr8f}k5aiMkt1 zAwkNoho)eM6^nfvj0E%%n-)AyMtM*Hi9(2*8E^e}#V*k&C`n0@5s`Ueq9;@8b~hgZ zMf^+ZZ*|djwsQ?cI^1Q`>|X#gtBqU@H9Kr0)`ttf>!_c5hCLyJtHCf10vV0Lr8`HM znlI)iZ#&d!v+`yt7>hTRD}PLpp?Qn-+U?`S0e!J!7v$>*U`C=$*u-0VCCsjBR9dJli+vckP=FWFve(gHh$WTGSXgt%k<6(L z()SI`*3IkNY<^nv*Dg?e&Zrsf>ljL=YPp_8Xo(n-VS8JlMr7GMY-Wk8scJ>9x?|lq zc?~3+(xy1VWl!>En8P{xNC0ZRjFm|cTBef$HY%za>_kZo&9TJe(~>K<80DoBRVnaG zhwgmA@l&L@k)k(&lMu^vYS?wrxpW6tC2AjDUM+Sd!ijN2hezENTA{rUSYs2C?)095 zc;t6wY|WgDH*@sT8Y+4nq>q>-EtE-}WG58NV<(Vg+9fQs(v>v8Op)KoHcNGCAIn!> zv&V*ST`(X zSW>Sc#QBuhT{s5t4d5FHq#91#_su^jH#vyP$-WoF1utNw1X}D&b z8}Qhsk^4M3BsMbACvO~x z|9(nF_ZTa|VLWc_Vz;Vcf7jWxb;41PEp^5&=5e|9wWiIUzs z8~{Lv?yru<7zPhJxHJ5(<1e@V)krgDQh~Z*|E5wybu^`9PjOn2$arq>*Q&zliq{?C zw@dSBeBY*aA>8G^QV@=*gi4Ni~V)<*llHl;d}8%6h6I0hQvcS-blI zkB+actXJX*$SW(TbSG3TnHC#`u}YKKfvSomgU<7w1?RS?2GVG&Os0YC%_dJ~xxVO8 zgcD%zDIn&nAe>2viK+t&Iy72}jbMt-jlv2?onqo~Q%94Cjpqjg#|eQ~;lUt!;OOK_ zif;t8*4#x!H2VxeB??_mt+w<1eQfJsaS>|C@tBNmUdmPc@+ur8c7PNkSz<8tGeSf~ zk@0!yW>Mi`Mpyx)g4XQLMWP3rEPwHe2Qz&yL1sgp8{D?H@!pPk`!}Bth`!W)G}hQr zvyLsn#-WLpZM!ZIl8mme6E0ac*rmN_2L-(Ryyi^@@w0mDmAq4A{CT?AaAym9n`dKY ze9JQ(QeWL9n!Iy%lTNcbqED9MWtTTW=0|siRB`LJaT1n#oShMFEGiBYbTLXAR*2+j zKYG6kWF+G?5R!FBi>Elm8vVEng=P>mrC)LMir_Klb%vM49^h!|Po8jmgi;W77Ovc> z_c;fD@Ht;xoGVWVy^}5FvFP5R-E?qIUdM9jcTrKp*8%Xm7)t6 zOcUkUYT8z;!C8?9q)(KnwG z`#}*}mmAKRjBE2#kokI|Fdb)3wL_$MS#GUd$MYn^Bksk83g@Ty<56faoB%;bnUrAF z$vu7hZpX;)70t^P9u7B2io;Zb^(5~q;phiA9mGZcb9 zxc^M4W>b}i=MYD#F>52XMCjWlq_#1K^C^+gM_(_^F2SqqBTBK?U*9Jtr-qA9RMkK! zLU|LFhPH{Q>5)dyucFF2_2jsHXEN5*qN)4~XJJC``E~Gw6i{;cx^axw=1HCnA*s5f z*(JA>;Mu8#H$TsNsYK(`Sr1Qs+N_2OZLsIDAg9)zkH1={4LQ5mSzIVi@#|$Eqe4yX ze_}2kIjB@_Zl5f0?NxT3c5<6G`2kCBnFGSj`)dkz#w{DJ?Eu51)3g)uLAyGI+>PIt z$vqJE?eMqf;{py8sF4V7^TnM4@w(EMaob2=cUxavb6?xKiF>>-6UolS!n`|K$2-!U zUmgbyKH)T~*Yp7>_iSzQ0cWlFRI1N${~Yjp*{Tz37^|R;u?<9+vpEv(z$ zjEUsLGTVNNi$Bs3D)>2hb&R>w>_XB_tO&Zwr!U)rwzk7#Wr&~J<3+n|uGpeCdZeDN zKh-&;C+04s1>>N5LwlRh=k{)7Ttv8`EO>&hxy0$qHfI_vY6V>%VvHavowz=6$Il;B z-PTOG84d2%M%&AA_6@Ctc{W8KyeZ!HIOz&peo|1?D>G5c_WDdFbXK zvah2Ip%6Cw1NO1rYC>r*mzX}ru*&LMG6qPL%DaN=Bimz+y|)%?RhUD)b!Jl*A``9Y zNz)?82UfD#b7kG16(qsZKOkVd-FvF9>~V(-Q!O1KxkW`Xo9$s2U8I_yY5Yi*9cB7N zxfZ=te34-p@(Ag0{$`T1N(uFgsRNO23XzWM8&s#!gC#AtDvunuXy18ldEqjkgb z5y{N{0N3tOk-U_NM*h9^`E?ekIu3`xIUfscQl{%xywxyt2*&|ftGfWXIR zm@f(c7r0{=QYh12yIko?;Fp5bpmoxlj^yT>Y8y$u5-v2}Y9VRcs zF9)UH@HxDHj7^sdTz2}u3s?~R_5c6p`!7Q;Te{!Sa?Aku2ZMLHz~zzgyFel)N&nvf lxeUDAS-*j=K) z{J#7BUb*+qto1x=X1)8&yn8?Ayk{Sn0`Lwo006)QV0>jo@kx2&5?>R|=_D{7rXUon?o>=84+MAe}i#dR;@V2&VtW!)Z@N?G|N*@ z^(|_(IEUqk|J&N!`Ip0iLI$544U*B!RhA>hE=waFVUbb)14^OKYEe5nngrA;MFF2w zz;umyA9_oSTE%Lx;u6d1ZDyP!@$NLD~8_Jsz&8j)CfFrRY z+v_kryljVJWXFMc)I=>Qhjo3hOx476ML%XDQ6RmasWRh8BS^+1x>G~PDPa}uks~is~01@UG|y1?w1QP{(#B=!Js79SC-9VqV{1Jnp_qv ze1-5yttW->F|GPS_^g&kA$(NptPnn}b*B(Mt`%4apVxvEcG$7NmEZ(hTC{!|cOzHr zi{I#fjm~|rmE<-_f|F+OwRlyi-YL*@(nW!y+Lh1)^W_~Be*%d>s&N-|A(L?4KClHE z-zWxOM;ml2y?mW-jtIln;0`6~LkV9h2my5{Z$|rW`KMG97uxa)(eesGv{@B=GSDn6 z&F=N%Zp=pWlLk7Ux$uIxHna0KGm=R~ zCE)zM|M-tzhY}tH^Y-mPpF4X$cgC?P&GWmNzI`MAy66)6yjGNx99Z?0=lPIQU6+L3 zeZP=483HOyLI@_j<}n>-v78OgK!fL%SS(OU*0opOZq}xC}o`o^(hJfz>Eq2;Qvk`xV^pg zUzwwdQ10X;XgUIq&s$Q;)9CURjNOCKJqsCqtJGv!Ea+w;lyij{b&0-QbcUC%!Q`+~ zEwqyHdB{^xNW;JBJ)eFbv41T79n(^hq(&@FHE^nW5tTn*JaGI6uw-@`0|f#zE+eh$RSTuiV7sPvQ6DB} z7bLjg@|Y4>ji<-Kp2lo+E5hB|(>EdxmgApNvVBs!CNn1CH0ji*ktRv<5kZMT+$BEU zvfyN8R{cN-TEJB!(b6g8Or|b9-CQ4o0C4fLzbp_TVF5sO& z+(xVAR4nF3Jp>vRLE%c_d^wj|J0VTx2R5ca7_~B&szk=?a|yt1iyqeVGU1T|!^A(O+AQ6-!^opwfr{x*1+Y&Ls!FiX5uiVZ6yrdtGuG1&3228Hmh7^ z!vgL^Kjzx@xo;Ak*LM$gjjrX_GA`qT-KE^Vlh#Ck{DG{m7RfoIsjTup{TW~Duy3fe z2u*CZ%d4S%Y2Pu%Q5R(LjvFu#@xi}jYSby;^LGq#sYxw8++;q@e}0)*^YBj>~*Y%pz^Hw^X!Q5qHoc4>l1bPNh+k#bywe750qf+xUu*fb&jVVclmq@ zFr#Qi=sq=Q5%wQrclKgP>gU;fb~~3YnZ4Jaz2=;)=R4CGhuE}<%l~q75qtO2_}w?5 zKSe`-EBNLSQZyK{ei8n=XvX$Vrhlmxhp<9cFzM4Ptn6mCzD;Z+p^-PmWQ;tySwhrG zM5^0f)>jan&{^4e zT_EqYg!q@WJfbMj_R^pphA1GBDj|>n&Px=HWK0@F3&|X7j2K>OH86W@*Lh)oq4tzx#(Iy&B_dSUJ~{(1bt2Cs_0;$fX*p8rhfLu;@%{O_RECj!`?qZ zsbYUpYGfcMsDh+4`VIha7fGp}l)ascshx|V#tR2iXM?i#Yaj)PQsP84oN-=YYLwwy5e*n`{&Gc6)HrbnX?uim6VIxmsqsqc*skRD+r~?2K2* zRKqhbkILS&S+5{~;UGbMn>si^=EK;m>PhwL@HQ2QB5cQq%|<5|#wAz;b~Ipb`YGMV zALuV6ggef+%!?g3t6;(M3drYO*7UfKthbx_bGX%0I;D{nVjB7J`ymD=T{xPiyyZPj zOK(u8#nBZhr-+DjCQU_q$En+ImS#k(8dV;#XFzlX+NxweC5w|5qkM4uG<}Sja`wvq zN7XC7)+zziOB~A+!j7HM&RXlwjN2-U?(l>;r|U7XfSt?e2QNy9lKJId;_6?nwtCq+ z_wI?3`k?&D|AQ#CEC%FpW4`qyKiS;IDbjFaGcuMG3&o@--%xcrRN zeJuYl2bMEl+b?`ENpU#}Uaj+eh+2_76HUC+PB*hd;bBFyI1~5y#SO(8Bl)!_%~M7Y z(-JcJMv9v!iDe5$CakfzOY)->!()q$%bI381DoC|1=5*RN>N_cA^39et+!ZkyD@RP z;%a$pc>7laIJ%OYF@@ZLN$bo5B8lWK>2YRD+`_Mnwo#{CFq1Wu3{Xg=S~{^#N&RTA zzwp=+Z5$>UflP-^ZVGlSgi|!+U>@zIG$BK>#xz=d4E3dU-%al~F?898Bh#w7CwIbZ zsK(XU6dYjHDo21#Iv&wpk6ExweqZ|D!nHs<;}Ds)wEJ<|xIyAdrSSQ?_=08Bc-#z& z_?1rbvKCc+r=R#c6>1HBQZ)}OF~OwyC1?$12Ky~qxa=X7S|Cm`s30B49mF2NcK2sM zlJU$%z}+AL` zYLmkwR`pSPWBQ5~c02)!4(ZogY!>z=_BV3(ly=|W2)Q*>p6VeNLQ-_mB<39s&o-TA zmAAF$4+XY!GLwR1!oxjtr+}CrXEddJgSUBWUbQweptV2<<#sO2>Z75JkXSDzr^`W+ zsF&(;yxevvFU^WGrxdp#SA}%oruOJcU#OHGx09FdJ?ExrL(5L+cOMCFb8}N#tD4q& zuUN{LXxmbTm#BZ9D3WuiMmZV)pho_8MkD(R7YkEc)4$ihEYhxyQuGXjq~(YO+EN#F zS7@*_wS;dfCup~}Xs-H0&ufv2d{VFCls-FWsa--4NR{CJBRdKLSV3Zaf?*Zxj`Wt{ z;t!d)?`D;Qwc&sofk$t@ANjmGd$7J$gTW;w1Ci~Iul=T9suTK16yJiVwnQl4I`>Ub zPKTT?sfz4ODv_nZ%=seoyawTG5b7bsZn+lBlxR0ydu&9GKnT-;X2~51jnNbcr~TS` z+W5@enzgK_x$<5I5m5jqX0i!?fXGZ(OG-$OCHX|? zH!!Pe(VS3ygsJcof=J$A*;SY5URUgt6rH4p7J#eC48(2{T<9b?OV?d!D26~8Esc(* z=0mN|4h*}0csAP&ryLOgQ3qN$O$Y)$Js*-bZ*PxhBh4|4EJ zV?Xz#gA&~@bEVn`d#L+t+Y3{BZfW4Ax;Fl#gDVztrMj?T3Bv3?4^YM@XUY@-lddUT z+9tGvaaNRjjCzPte^J#UC${d>j~hTLe0D7!39HmN!V{E z)5@4*G$qZMbH-0FLhRn6b+IPTYvN|l>($kzs`wDGcfy`7hX)M6CEWBt!6n4L=*@PT z%E&vFR_~u@3Xh*{oh|rW9#0syZ~_zYUVi@?zwl1v#rGfPuU_6v0v7IheCWjBp(mQ7 z>Dln@d7dT#APqZG#i3DTA%23IgEFbEisoS*mI9if)?A+hj{p?gw&O3r2KcmGs$+oJ z$Ym^tXy@^z4vQf>dIf&-xInWd`1=(+PEqc@y|-Al_HmN*>UR-#5N4~r$Dw?9a+1XT zd*8XJ(JQ?Yv@RQDyxZv>GPy**$IF8z;cUQCUfYe3EOYZRVP=({neDT0Ihes)rJ@RD z88HVGSwThh-v!??Qjqg@bA5^BuLx6=r&JCybgb7P*o@(f@-#y&h&qIqzUMIjXiuO3cR1wAW?vB7n0>+5$|$c1E- z74MI5ax=)fnbY)_8f><5DGgb5M@aJfEJTcY2;&xWU=M6zb>%%3{?CAU1&=pfUcS58(3OeCy%m|4!JjM@yQ!EiCnF<#~Ca6qKGpF{lz_R#`#p0W!= zxI0joj8{o;9m%X4N`82jS&s6N*)!N?P;D;Hf|r}HL)C1VnScPLjUnF55v`i0)fVgjw$nSFK2TvbVD!m z#_4D5s(M1bt3|nDZ_f@yd*}TEMgy62nv^^NGJ|_N9Kc0m4%xbE^gj#y;XAqMO=PQ} zfNUGEk-MRjsf{xS`>(Ymt{v&%am4puO0Qm|+R0*O483f4w6;{Qmt{ag&Q>-&nkp9duFtEB-(MHaq&hqM%5Tx_~ zGYjKgSHxrrM&tJ2@JKk2e#>7Q2ByP2rk@zw>|ss2+GLr`L=_< zjlOLjf1`nz|Azj@O5TRwHcG$YTA=@Gn{EfV-Rb`hFpl;2{r`X8e;azcrTYzKM0$q* z(%{_=aJyvu4gf-$zJDtqw}H1a>o<@bdAN|j{6F#xrhtZ&1OUK7zI~BdDFpuY>Hh$X CY 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 diff --git a/static/files/excels/cmdb_excel_2015_11_08_14_29.xlsx b/static/files/excels/cmdb_excel_2015_11_08_14_29.xlsx deleted file mode 100644 index 3bb50f408af6a143d7ef652e4ea1847750589b8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4990 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 Date: Tue, 10 Nov 2015 00:11:54 +0800 Subject: [PATCH 2/2] asset alert history --- jasset/asset_api.py | 50 +++++++++++++++++++++++++++++++++++++-------- jasset/views.py | 27 +++++++----------------- 2 files changed, 49 insertions(+), 28 deletions(-) diff --git a/jasset/asset_api.py b/jasset/asset_api.py index 94f941b8f..b0f3c9b8c 100644 --- a/jasset/asset_api.py +++ b/jasset/asset_api.py @@ -1,7 +1,7 @@ # coding: utf-8 import ast import xlsxwriter - +from django.db.models import AutoField from jumpserver.api import * from jasset.models import ASSET_STATUS, ASSET_TYPE, ASSET_ENV, IDC, AssetRecord @@ -46,7 +46,7 @@ def db_update_group(**kwargs): group = get_object(AssetGroup, id=group_id) for asset_id in asset_id_list: - group_add_asset(group, asset_id) + group_add_asset(group, asset_id) AssetGroup.objects.filter(id=group_id).update(**kwargs) @@ -99,6 +99,7 @@ def db_asset_update(**kwargs): asset_id = kwargs.pop('id') Asset.objects.filter(id=asset_id).update(**kwargs) + # # # def batch_host_edit(host_alter_dic, j_user='', j_password=''): @@ -223,6 +224,13 @@ def asset_diff(before, after): return alter_dic +def asset_diff_one(before, after): + print before.__dict__, after.__dict__ + fields = Asset._meta.get_all_field_names() + for field in fields: + print before.field, after.field + + def db_asset_alert(asset, username, alert_dic): """ asset alert info to db @@ -233,8 +241,8 @@ def db_asset_alert(asset, username, alert_dic): print field field_name = Asset._meta.get_field_by_name(field)[0].verbose_name if field == 'idc': - old = IDC.objects.filter(id=value[0]) - new = IDC.objects.filter(id=value[1]) + old = IDC.objects.filter(id=value[0]) if value[0] else u'' + new = IDC.objects.filter(id=value[1]) if value[1] else u'' old_name = old[0].name if old else u'' new_name = new[0].name if new else u'' alert_info = [field_name, old_name, new_name] @@ -250,12 +258,30 @@ def db_asset_alert(asset, username, alert_dic): for group_id in value[1]: group_name = AssetGroup.objects.get(id=int(group_id)).name new.append(group_name) - alert_info = [field_name, ','.join(old), ','.join(new)] + if old == new: + continue + else: + alert_info = [field_name, ','.join(old), ','.join(new)] elif field == 'use_default_auth': - pass + if unicode(value[0]) == 'True' and unicode(value[1]) == 'on' or \ + unicode(value[0]) == 'False' and unicode(value[1]) == '': + continue + else: + name = asset.username + alert_info = [field_name, u'默认', name] if unicode(value[0]) == 'True' else \ + [field_name, name, u'默认'] + + elif field in ['username', 'password']: + continue + elif field == 'is_active': - pass + if unicode(value[0]) == 'True' and unicode(value[1]) == '1' or \ + unicode(value[0]) == 'False' and unicode(value[1]) == '0': + continue + else: + alert_info = [u'是否激活', u'激活', u'禁用'] if unicode(value[0]) == 'True' else \ + [u'是否激活', u'禁用', u'激活'] else: alert_info = [field_name, unicode(value[0]), unicode(value[1])] @@ -285,7 +311,7 @@ def write_excel(asset_all): group_all = '/'.join(group_list) status = asset.get_status_display() alter_dic = [asset.hostname, asset.ip, asset.idc.name, asset.mac, asset.remote_ip, asset.cpu, asset.memory, - asset.disk, asset.system_type, asset.cabinet, group_all, status, asset.comment] + asset.disk, asset.system_type, asset.cabinet, group_all, status, asset.comment] data.append(alter_dic) format = workbook.add_format() format.set_border(1) @@ -311,3 +337,11 @@ def write_excel(asset_all): workbook.close() ret = (True, file_name) return ret + + +def copy_model_instance(obj): + initial = dict([(f.name, getattr(obj, f.name)) + for f in obj._meta.fields + if not isinstance(f, AutoField) and\ + not f in obj._meta.parents.values()]) + return obj.__class__(**initial) \ No newline at end of file diff --git a/jasset/views.py b/jasset/views.py index bde27c68e..232f9cda7 100644 --- a/jasset/views.py +++ b/jasset/views.py @@ -211,29 +211,12 @@ def asset_edit(request): # if not asset_id: # return HttpResponse('没有该主机') asset = get_object(Asset, id=asset_id) + asset_old = copy_model_instance(asset) af = AssetForm(instance=asset) if request.method == 'POST': af_post = AssetForm(request.POST, instance=asset) ip = request.POST.get('ip', '') - - # ip = request.POST.get('ip') - # port = request.POST.get('port') - # groups = request.POST.getlist('groups') - # use_default_auth = True if request.POST.getlist('use_default_auth', []) else False - # is_active = True if request.POST.get('is_active') else False - # comment = request.POST.get('comment') - - # if not use_default_auth: - # username = request.POST.get('username') - # password = request.POST.get('password') - # if password == asset.password: - # password_encode = password - # else: - # password_encode = CRYPTOR.encrypt(password) - # else: - # username = None - # password_encode = None - + use_default_auth = request.POST.get('use_default_auth') try: asset_test = get_object(Asset, ip=ip) if asset_test and asset_id != unicode(asset_test.id): @@ -244,10 +227,14 @@ def asset_edit(request): else: if af_post.is_valid(): af_save = af_post.save(commit=False) + if use_default_auth: + af_save.username = '' + af_save.password = '' af_save.save() af_post.save_m2m() + asset_new = get_object(Asset, id=asset_id) + asset_diff_one(asset_old, asset_new) info = asset_diff(af_post.__dict__.get('initial'), request.POST) - print info db_asset_alert(asset, username, info) msg = u'主机 %s 修改成功' % ip