From 62d3e2119d9fb750c4f93015a1b98c6e7a605f7a Mon Sep 17 00:00:00 2001 From: "St.Huang" Date: Mon, 2 Jul 2018 20:52:38 +0800 Subject: [PATCH] fix updater bug --- 2.0.x.zip | Bin 151008 -> 151156 bytes src/fastwq/libs/ankihub.py | 36 +++++++++++++++++++++++++++--------- src/fastwq/ui.py | 4 +++- 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/2.0.x.zip b/2.0.x.zip index 75fd313b339fe0ed5c2b91615290a657d108c7b9..079dff59db55be82fe637762d346837c9530404c 100644 GIT binary patch delta 9909 zcmZX)1ymf}(lrc&ySpd26I_A>*B}W5cXt>(FgU@T#sUN4UcdQSU z#uK=Qobhz!a=h|EKOH+r)Uk$A%otjHP(g}YP8I^04RvD)Y`0F=YN8AuGw9Q3seTR9 zny$#+N{*GA9H)!Ue9w8IODP-R`4{Y$>bH)GT<6SRkZ&0GvoQ zKGn`CFC?+@K?I}3EO%=c&CtM!lrDqAyA`FiV8Jc*XAc9Nr=Y4yQHOjR$bmUE!vs0* z29S5r$H_CkLClKY(>p6p-`;qQA#!tz70WhUZ*MC{+h)O4l3IhHPFkQHm_g|0Z5d*x zyq3Kk|4{A(hJq$B%3;2RHYb6hdJ5J(9{x6^S3Sw!Aw<;l)woFl%=kNlJ1vx03hKRh z*dyBPZ zW{|SN);M6&$)K9{Hd~p{%$*Ie+o`_sTBEkvOUWZeJ&bK{^4AHI=pQbTYj$v|y3yS5CK%sn{lZBfHbdLM95Z$9 zu33nc9}%HML&2_{!_T)Mmkh$_kXO+78WI!K4s%;**cez`WCofSJ9R`4raLRIEhxeJ zambv%l)2T6Nx@HBIJnrF&XAUXviyIpcJNfTtW~ zW;k5LW3Tw`z3#I|QaGR0Pl606uh zpCsez^kOLQg0D1ZDP&2Q#hiTpJS$#=$27iau1q$!xpiA7r!bW7Y_LVdoTW} zOZus6Y7P=tE+q6&?p%v-&+@6m=_{MIjbo!`oKd6Z7a7z7tPNa#Jp&;)xk#i?fA!Be zJe)6nB>Z8wUXah5f4&ry%96%$Wi;7EjjoHMny!dM)Z(*7g2$9f6G$Z8 zg4Hn;x=3V~mT#t6e(u$(lIhEtbfv!A^KPaJQZ=&5sf`aawnkS>Z`L%vQtkPY1L^2v z>wJG8L(9;dtrLCy@~de1MNh}nh8UT516ZtR{){80F6~Gzt|)pe?-zmB2J4qYKfMus zoar|ccN|#2@i1Mv?slH#F#T@AYy>DT1dzm4ajXKV;YZxnu<|-o`Zm?v@GV<2;tRni zkRErfme00oD}8sz44>m5uV?z%Nm>$B004bt=_?`n@W)3gmhaLo%yc+^5Yz3Q-S9NCWK1yTi!6di|}= z+un@7|77H01N$2wpYjXa&AHaM?kW*{{tE6p`SNz)NRp&q59-O_Q14QsW?0zR4Dpy- zh5D7S$bFxCXH%j@*Mz%qSU1+W{bH1EBX;0h3{55H3ontJe}7a$lo z5`7v>nB)##ov0$32Y1D+xw>llXG#IY>C3U+$c-E}%LiX3Ce{*SxIEE$(Psxp`+mD< zJief9X)@bEm~$!d85l0Wh3Nr!a$%=RIL&I|=3al2wan@NQM!20{+pY_xZG9zCu4xR zl}89M`t9`;MS^KQmmQ9*^yKT-3t|WgdNz9?-}2Br^NyNl1#|i}>lnqgRd=($)D|NP zbAn<&!ch=oKoUkm$r+t&{79fyIL$e`COCKhIygVE8w;mf2Md>4p1Z{A&yO;XjfD&= zc(qa=+gOjOSohIbkN#w-5$~_8T&y!7SxY{{)Pe{&1^x^U9iO53{TH=ouQMTkw$FF4 zvJHMe5w!~tPbA%w&1-WoS=e9)$mC#_OXn!@1=y=+=u{J@fNN26W zE{-B9j$}e~#G^e|gH=^Ug2Q(H}~@+hV6$D4{r4fG24UBeiRDw)Li1__)|ZMOM+j9K;WB1e=?1~kin_n z-^x)ck8e6kCs6Jva0oGsm1{SbXSYnOF5R!=nhBtRC)?({sTgi8?W3vnxZhn<2J;8sibLJbZQ~q00_rkOg-mszs zsZvL;O?_W`)pX<6<%Cc(WKOqIdY+;!k+DqpaDXeH*Pv|z|JTP?`bmYyORonDjv|dX za{G?5p322SiX{{YsKg4`Z4WF(uhtxYprWVkKJ}?3Q?;41ubdONmN|4xdoI`Fz1gfP z#2Gj~*#e=pZ(+s@g9XFRy2pEzhis8|h%56MbMvYFOTRpG?r%TkApAyn znHVNBf2P#F+|6o)zhKMW{HX4ww9CwK?#6qCb!fP0xak{Pa+2{>Lp*_oWyI0;Vx#i2 zMZg!Av~s!TOU(F3Ltcn)u?~f73VqY_J7XCM`0di%hH=`YfSGEqvwAYK{c1lo#wnWGg(0lNorLDUZ!w38W%m1yRr zez&R{zc40i{9A+V(xOG?kmB60>gg%}o6G{+7!ct&b}SVv=!IZJlS zy=zX_duvPD+rBN(GOrf@g;(!fX~1=c`|B$F7ygq5)-f@uTf~%`cd*DvhKo9qI)T9P z3V3+XFM3_kasCQb&jBUIu(}l^;l`5vhS|i?bcT=ZhEd$CkAa^orMl`aq0|{2dA^hS zp|)&3%=BPzDph|U@_%k8QWFXMp!X3Cl{l~^*AQ6fjRaTzl35`h3`~L|3=H&s0>;AF z73|^6;bzV56PX5Ej%&?YO z3Iv|j;Nr~g>9;NjV?4XfAF{=$ZLePc!D377>2s^k`BnCx^GZmN*q=9jiAUB){b*;) z>3zer2CS!hSdjyk#vUnBt1O_+kKYs~%VcHn|KN(zN1bQlioG0W)jeI=pF>MwJ7+R! z+g`vOfZX5p>@4iiVmP>@I~bs$S1_uiL_reYr?aYyfppBW)D=8mjnDci_?RVbnIY<_ zlX7Mi*ri)0ahj30s;J|33ha>O!`XY0Pb8TsD!fXU$)t5XJvlwYyOlFdzoTgyE27DW zcje3DLMjR1tv{i|7Qb^Pf`yt%FQN|&P6A)X{zL}K{LfAx~o?3Ov7luoSO@>h2@_oELHdRnNST5u>N zP`!?QsoDHou{_z*s|scJpnaFzw3~~^O56+4n;k~H-H-#Q2>vR|ab^mUm;wzEcZPHbS#U$JEhM;OM-x8y;ptoyX4Hy{b|-Ao)bnG(W#VN< zZ`S68dw|_e*KK~%Y^-k`eDrL!C(X<*JvSFrpbGyj=AZ^KM?pa@ z{f*_0-UT6MC;hSG|=slI<8`KI$ZlpKMMpgal4h5!CX+8Qte2?G)cPB zm(Zb)g>aKNc^zf>P^xP^+K3=;Om`iG0Or2H@=Kk1Lm=ab!GBT2BUL?iipK2cB1DQA z(>DB;h$=KMMX{Z}+@MtQU?Ufi$IXVPRGfNNKoMfir<-+C%PQ~ofp}IlT{&-Fdg*(> z%(T!qo0Yg2t_JKuGZYp4J)-^2u-p>kqk2Yl>Q4lZJaKYAOD1;>mUY!07osYtH@Y6# zLLc=702{YX+ducKPfv!BKXbUQK$GA3A^XzmncbCVX~rxWmX055`FQqB58NomoBB^L zCn_PXiEh2!wAzpAAH~83W@^A+t&`qG(J6ebsF#tK`V%1Z-lmpweQ7o!#=l%W;Kw~@ zefCnb&|(|?p&JPYA@f`fQ$5BZzL}lM6Sc_CM@4x_ua>RN9KAPaz4e|6!EpsAXgEI~ z{;W`g~#WSEPMlp3HewK#@5BCjj3#cB?M*ZR$>kNT@*V zOx)h6Qb*H0-In?8{<{L9+rsy#g@g9`81Wsw)WG-Z!U?}C*TYp7hT7uLd_PN$73VL( zhPz~%^KA6e6I3P5JvezCOW5pvwY-q)hrgy6QNPcBE-I>sn@3&HOXg5pW@VW(0TJ>Cr0&(c(BX45m>gGkb;+=H2I zdfXks_4bNPITykD8M-qY?rN;>Yg}7KHmuKX>dGzm?JuK)3MhY{!&}I)6@53mK|X>L zzUESdFd@Do3$R>Zy7IMnLS=#T)l;oj$eD$F+6)W?cObkChuQSikKv--p@!**=*GD1 z#Xcpr084q{icXx;qiTPw^kK`0G`<{4(QiMdF8ji6`nkk93Kny3ZqWScHNl0=>spas zHp`?kisfn=EutRqtm}MmE2C$AYadam%yc#zq#8cd*Q9*%4vpBVZ&coj*f+*QZrzXE z8E-}Ze!VTI?q^oGwrPTLgQ?$z#FR&bMUJ*t8wa!tQwlDDwanva&xEyMak8I5p8);)B$iYjLh z4Z62$8N8>7j@>JbktVIkDPJ25nr~1=k$GWq?-18bZ>xqTIB58L;@+XfkaVhz)zX?6 z7TbxLW9vWFETO$rmtcA z3u+1KKPknw%d9gkISEwMM!?r0!wP9^*K;!6AfYqugTu&3^Ab--)iaRC>*R443}Md; zGgCU!t4uyk$^MnWncGt*9zK&Q++oTz6N-fl*{m|KW^xX#gNYB=+l`mf8_-Jp0^z?s z^%ihw5oVf~{_Z3dP_8~Ch>;F1?8W`nhzV1nxWPA`O*l(@VZ$A4%gGSmp(D|%<{n}3 zHYHQd9HY7wp2dFMbO_YzPE^bo<-bp9+$MHOvVDVFjuuYkxkQcmeH~jWp=2;0L67&h zMJG6g-gq}aHzE$gN{Mu`)u>6m2hklckrKS$c-z@QZ>@4IA>0fugik3^6Cf?P>rve` z@2WiAV!DJ&!GDrM1o~;4v|{PDc>;EamPz`$2e%H+^7i0#Zzxt6jCjZ) zs7i+-h*TA#%8L~ko=9-8rZy~wfba(Z>0)7)V1??Q9~z)&jvYBHh09~M+g*{ zLlTAU4$&h=Bfk^mPHzyWAn15b$qk6q&*qMzCVUBQV+p z-pWxBi+SC%s5o?Nc-Ws2Sbx$Js&`(gmlkr~X?E-4FcX*S5oBSggcy{35+BnDng;c1 zNJv&63c2;ktZ7&DU*gL*a_^B9)q{#r;TAYQd#QY`a>^oI&p<=&eL(2t%?;j-b0K2p zzz1{Ru6Y$;RzR4MDt(mxl~G$1Ea*KlaW^DI;jZPnOhFe7wq_nV zgpCoMB+};z;tO_xknucFt~bw{;L&2q9L}^`V`tOcH@PmcZ+;~i!2Xn)N_3uP4KEBg zN3Lb!h!CT^tMK29aWBn%qqTLq)}S%+%Q{n*hoGeVg+=Lie0tW3c!^sOU~tD=SN4nLB%!C$)N;n)7G~%_n7|=k1Z{jxh zjdh4xgyXx%u+8LAppBKx_-VT#o_XqkelYrLREZf64`E5(s%32enRg}Si+SlUP2ouL z6QKZq@6De{t1XZ@Y_NJ&Vvgj6g|kF~!p>)BYl$Rm9S4kEev_;Az7b(TvMegy5AA>Y zwP)Xz^;)TiZ4gdp6y>zyF*;@ko*Cq{a&Hs;#Gf-Jz*v71#TFC6_hF*F)CK#tv_UTM zV~9f1mwVZd)6tscv*(Uy-8aI41aU?aIjQYU zE%tWNSp9CLJlsiiX}2DAjtY4a5eIC&@YalOwPJTSrdU#w9QJ^{l;GmqHx!f+EB$|j zwtgu(yH6-trmO#Xx~*j>18I(xbv1QW2mJh!@26Zr&4#l7YWhcor28dVEJl$T=1aq% z$n!-Q>_0%#4Kul67{A&mYMHDQY;Vqif&w8O5Z? zcR6#?b_dp#C+g8-bE@!_E}I%mI?XtGRo$yOtnlsQLwYNp*nVF*AjPLqja$w4yMPRO zlyk)J_^Scw&|B=(zC1Qw0SF0T|e+HsS#bVK&e-G+}Ym|mUJ=ON{dn2McKSVtz) zSZ92&o>N9isoSf`OK`Zft6w6hE;IeMf7lD}BzGcJiGChcQze>8%;v3B-54;Z@~vVc zb)IMIkOj$^O_`ACl25TBt%h7ka{ynfCM30%1M$yNOr8{hu;3_o3Rh;YaTK)n$YyP33A&ikwf~f|4@a2%?h}!l z(kK{bdDD0qm95xkYswY=zBvGs=^-gR`2(=IcaZwUsKv#$qMVJEV0G3TEKAfyf+2tm zM#>Y_dZE>}asba2#+7xAFcX9F9T9TJ;5Xog$n&#vW8>!Sil@MxvB07t<;DxH zF#AhC?WJWD4*tLlbQ5_e{8OG>(YGc8S@vb zKajiZH1X-B6V0(dJG4k{{hqT9m2EzZd7tM~l@xdLWb8v^#}(S<{|lR-xVknOj>Q4b zYW5gk=_frrPXiiZEn{roOhV|XXo2=tE%qrD7PY$i{G&B{+yQ>>mwBeI=`CoVA#OTd z8g?Fz%sI1>RNs1se-4qbr#tc#l?bY2Q_r=X1u*Pe2{UIk=Cb5*T9eG?|Ej-n0r_#O}fOWi%8%roQXJtlS=*MuA7fgD~IyG9P$3U4JDqHc4w>g^>*;g>Ezjd~Raq zw|a|}@~!wxj__r@tNsgO^MlYyS%{l^dd*;sye@3CHEwC=k=LX+W*Q@kLs|(DuR?lW zB#^b*u|PFC>&A9XH+&QxWWPA#&KYRcwOytxA=^}}W7(U6Y-O)3tkG6TKL3_iiRb`Z zjYRZ;T)F`}#Cz8(f(td|e(V#%g_9he*q07YTQ^6!x99P)MypfEVvFP@G!RV|yE#4T z_?L*f4K0w;wF=8}SsNwCc=gKbqY4$ul(kojOK*|G!BHs<^ZB-8-q%^-RLk=aJ2vgv zql1@{%azhzzvlYdqC~mQ-iO&Wh&6zB>@V|)eO5r!Y-Y>MtOYJ%Um`npYZe2FKPq&u zY927doA(_z7w-oda|H#@*Fw_TCNxVMW)|^!w89+9vo84sSm&^X6uu}|1|B@_I;!qk zD{?)!oDr}PE$^d6eK(;*4Q@%FBi`^ve~CZgZ_fCwR*PqAiTRFV4{h_S|F>aX`$J)~ zAL38`bJ7zu(UH|lCORn&JgXWVqg{nd*_xesdFG1Pe;6wY zQz?aRh8Ow0v(Ozai1o}ZSl<))eK^^LIBH9e~hbK~ymRc{uoX3}nDV07Uz*SB?OP2>QejXc7RCGylf^Z!SA)6IYJ^O~|A;_BWw) z+Oq}z2!IHwSqnFm{wn(S2Ooy^-y>)s7<`;W6?{TKQ4oZV$?@UG-_ieAz+4b2SLT_2 z0kjE%@DW@sHzFQ^SwX12cK_#Li9dr-0X88h)hG}IrDTMlR95g`sx=G^$Pxl^QvcsK zC179(|C^s0ntv%6I1&QUV)lp3{{TT-^^XOpg+YYR6$=Q1$U#K$i4&>#fQ>K+9j|VG zvJZ zmhBVZD-I%3{Qpil)_+_6Jmu_Iu>ZMOUCmwGtxe7U&oxwT-SD@=|5#vE9K-{sivD1NEK2gNOQ(y@C3= zGXd&vKpbdKe26yBWta<}{!@k}7c3@F`38gz+F}RV-hkK+o8A@nNLc=Wz0CAGgcHYOMK%p)u1h*&(3)o4(k^p#8AOiS2R4C3W1;qy> zU;!N|SW>`G3L4|57#frSpadvW4j7YyO8Pq`P)ToH&;F4_Ar0;9nF=5%4dO&NVM2!v zaFB)$xY7ZzWT5X%v`T}B5ZDi&@%d+*ME@D*M@Xi_ghGlk(4_U|uz;Kuv}f5e(4?#B z&qU)hQECedI6FWagd__k{!S`DEej=9{~@RW&u8L6#0+{d#Xl3lj(h z_3^(V7Z8DA1rRCyB}~)^EOcl1k0oo{|DQp*uwhDZr!%BEz+=toeHl|HpEo z0kKLTLcmTDI<3>Bz$ZlzD=HN#bi0L06L|FxxkL@Z#Qa|cZj``@B6JOpQpG^mFs%}_ zEF2m@R|&+7aGmrFMLa_bbU>#Pbp0jiMMI&}XDF8)U{r=S>Td=>R~f{MO2Ps9chLdk zq99`8>qxBo6KL`w^9YT5sAbyvrz&8a55x@T!2<#w_&}8OCP+X&477Nk7E)=^zwJXn Ug!T?b0Q$Wrgn=>T2SLyNA30k2vH$=8 delta 9866 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 diff --git a/src/fastwq/libs/ankihub.py b/src/fastwq/libs/ankihub.py index 9d2f641..e9f0cb3 100644 --- a/src/fastwq/libs/ankihub.py +++ b/src/fastwq/libs/ankihub.py @@ -10,11 +10,14 @@ import io from AnkiHub.updates import Ui_DialogUpdates from AnkiHub.markdown2 import markdown import aqt +from aqt import mw from anki.hooks import addHook from anki.utils import isMac, isWin +''' # taken from Anki's aqt/profiles.py def defaultBase(): + print(mw.pm.addonFolder()) if isWin: loc = QtGui.QDesktopServices.storageLocation(QtGui.QDesktopServices.DocumentsLocation) return os.path.join(loc, "Anki") @@ -31,9 +34,10 @@ def defaultBase(): return os.path.expanduser("~/Documents/Anki") else: return os.path.join(loc, "Anki") +''' headers = {"User-Agent": "AnkiHub"} -dataPath = os.path.join(defaultBase(),'.ankihub.json') +dataPath = '.ankihub.json' #os.path.join(defaultBase(),'.ankihub.json') class DialogUpdates(QtGui.QDialog, Ui_DialogUpdates): @@ -43,7 +47,11 @@ class DialogUpdates(QtGui.QDialog, Ui_DialogUpdates): totalSize = sum(map(lambda x:x['size'],data['assets'])) def answer(doUpdate,answ): - callback(doUpdate,answ,self.appendHtml,self.close,install) + self.update.setEnabled(False) + self.dont.setEnabled(False) + self.always.setEnabled(False) + self.never.setEnabled(False) + callback(doUpdate,answ,self.appendHtml,self.finish,install) self.html = u'' self.appendHtml(markdown(data['body'])) @@ -58,10 +66,10 @@ class DialogUpdates(QtGui.QDialog, Ui_DialogUpdates): self.connect(self.never,QtCore.SIGNAL('clicked()'), lambda:answer(False,'never')) else: - self.update.setEnabled(False) - self.dont.setEnabled(False) - self.always.setEnabled(False) - self.never.setEnabled(False) + #self.update.setEnabled(False) + #self.dont.setEnabled(False) + #self.always.setEnabled(False) + #self.never.setEnabled(False) answer(True,automaticAnswer) fromVersion = '' @@ -78,10 +86,13 @@ class DialogUpdates(QtGui.QDialog, Ui_DialogUpdates): self.html += html self.textBrowser.setHtml(u'{0}{1}'.format(self.html,temp)) + def finish(self): + + pass def installZipFile(data, fname): - base = os.path.join(defaultBase(),'addons') + base = mw.pm.addonFolder()#os.path.join(defaultBase(),'addons') if fname.endswith(".py"): path = os.path.join(base, fname) open(path, "wb").write(data) @@ -140,6 +151,7 @@ def updateSingle(repositories,path,data): if install: filesBefore = aqt.mw.addonManager.files() #directoriesBefore = aqt.mw.addonManager.directories() + appendHtml('Installing ...
') if not installZipFile(d,fname): appendHtml('Corrupt file
') else: @@ -151,7 +163,6 @@ def updateSingle(repositories,path,data): appendHtml('Executing new scripts...
') newFiles = set(aqt.mw.addonManager.files()) - set(filesBefore) #newDirectories = set(aqt.mw.addonManager.directories()) - set(directoriesBefore) - onReady() # close the AnkiHub update window for file in newFiles: try: __import__(file.replace(".py", "")) @@ -162,8 +173,11 @@ def updateSingle(repositories,path,data): # __import__(directory) # except: # traceback.print_exc() - aqt.mw.addonManager.rebuildAddonsMenu() + aqt.mw.addonManager.rebuildAddonsMenu() + appendHtml('Done.
') + onReady() # close the AnkiHub update window else: + appendHtml('Done.
Please restart Anki.
') onReady() # close the AnkiHub update window installData() @@ -196,6 +210,7 @@ def update(add=[],install=False): 'update': 'ask' } + ret = False for path,repository in repositories.items(): username,repositoryName = path.split('/') if repository['update'] != 'never': @@ -261,8 +276,11 @@ def update(add=[],install=False): else: dialog = DialogUpdates(None,data,repository,updateSingle(repositories,path,data)) dialog.exec_() + ret = True + with open(dataPath,'w') as file: json.dump(repositories,file,indent=2) + return ret #update() diff --git a/src/fastwq/ui.py b/src/fastwq/ui.py index c0d8796..b71d505 100644 --- a/src/fastwq/ui.py +++ b/src/fastwq/ui.py @@ -463,8 +463,10 @@ class OptionsDialog(QDialog): def check_updates(): try: from .libs import ankihub - ankihub.update(['sth2018/FastWordQuery']) + if not ankihub.update(['sth2018/FastWordQuery']): + showInfo(_('LATEST_VERSION')) except: + showInfo(_('CHECK_FAILURE')) pass