diff --git a/CKAN_JRO-2.9.2.0.tar.gz b/CKAN_JRO-2.9.2.0.tar.gz index 25eb182826e6c9aa42bdd6e6f126b795b35ad129..fa2e40b7862bc513601ba06ed7565df31ae38bf6 100644 GIT binary patch literal 13966 zc${T>V~j2g%;ng&ZQHzK+qP%!*tTukwr$(Ctvh)3{gT~evzs)hO-|Y-{naL?gwaq? zC;P@GAOH~=VR-{-Wd(W`25trx1||jks5@%IjL+*q=^^ztwNRZC5*-o0OaOJ_$h3$|-cb zlh~EYjiMm25DOQKY&dIOt-tB+bGJ6@*j!5upp(5j>oD=AQU{>Q05iHtOUr)yrPTwh zB>@;e0sjO22Y{o&f5z(o+i!nw@9yRkfIrUfzOT{=AY0}aK=$2V{Q!u)Yaakh%kiHC ztotK^ZfAO|o!lvX`ddUZxVirH@Av_K`yW%U1M*V<24RB{Z~|N=8P-R!4e=)%_~4Dv zAqxfd;qo^m@ksZh4sRU4CR`{E54_$q6OuiT!L$yBh{4&7gj^!NnG3N&WOyC1=-9N= z@WVtgqJ_gmds0W&L@&R02-_de<3!lQ?fpD`kQttX9)z?llabdU!PovWI}h@nL;i-> zy!Qx88ix{`d{~GW2esnvi61j{m;isjxWJMX%+3ZoM&&^pZS=#fQ5^!RRl9 zz;@evAI%J7bM}K1UcOA5*NGkqMY2K!RNE-zu}Yhv=P&NVt|b^~v;CK`KIGAmGib0H z(k5Zpv*rH1j|UIuazc9Zdfzbn$wL%!3hRo5a}6hQz7=t~{Be>9ir&EQCVs>(A^Dhp zE$mMwdNR&f3=rxzJwZ6!ULar4G-an+IsWnY_W$ej*Xys#pFRA00Q#@_Y;B^uJX(T$ ze2((LY$PYK#r<7?^jL}a9vQH2OQyhfh{YZjM&CVLFi4JlJYGY3fQ1mrJNKt%{=zsk*L-y*sZ(w_L^I2F%_o@28xJ^E;PLYuM~qsIp5P+ z?1sIX$TxFjQgPXPM0dnEgm;CBy}`-u;^APzy&GEATe!cWGKfjgENIybwL{BFN8@`V z?w8k=Ti)B)elBC6*zzv;I}?J`pos)20!#~5LFtk6kERR-UY8thrKx99BL9UKAGht$dX0TSvI3L0%ZL))` zd-(YIcX-LUoPxcAU~P_IBQI{0BL4HeeN!!L>P`06HNuU$u>;`DZN433P5DJ{t=Xnc9FB>`9r`RP^Uz| z1r3VCO-f1MY?b8yZJ?Rc5Mc>BFiheuG~I0ih65p5^NykOaVHE`;lad!O*U4W0|893S?hZ ziW$Uu0QjnWW}L?;Uc0Q$Fl-PahfgT}-!NT!aVUb6!UItun)*NA|GqHz-0?hGnjR>*0?+7JL_%Pmjo zKFFc-pW+WF`B}&bx92{l$_Q11O8bspi8IvgW4Tf(K0cJo=Kq0i5xNIytv4$wGyA>* z_V0*{;d?w8zy>@Lijy~ziuQ{1bl{P<3SD1O1r51$g^!k#K`FKk_ci#{G^2W)xP;+B%$grfuqWZrUfkcQds50h7GD$Gh*NDAk3#$cyE8 zFqtY$#ID-#HqN{7%HU#3)u@|Yp(w7fr&_Vrlpmc--sxS?S=*D)v_^l?s2iSG*RUKUVmKtgPw@v;?ammd#ybQ7N< zdr_K}Vdq42;}qIhIt{ReCKfiPO`&1~hKcs%^|d&XLAQ}<%Hv9nr_z(|DsNO3l2Dqe z|D5^qRzcYC;3aU*03pCBuv6g7Qg)kvWyib+7=hvGexv$e@#G|4(`|ZxWsrb zfn_mpg#efttyNh;HrPcGb)YrNlDo-`u-r^b3g{MnT0>6+!);5HxgmI!;2-QI9}ISC zpoNQ~4Wju7)pjM0S0DO=kN{V~G-kFT*kQWraSeSzv3C$GB!Lv%St=>~Fltt!V$6Rn z=#^piGgv&AUc+6frkZiRD+yYSD5@mH{$^=5a!(h~dmABroCZdV!qTQFw>1%ag;vKS zWb^`z@~sztYXdVw0z(?$^@VV=#o$`(`k`V(GKAO^G&SoKbkS&Q~mk ztwJ<%I}K)eu3qP{IMrOMt_FlZJl)3RBLrRGz>!Yiv?{)ZB}Q#MMuMoBXPLxpJS0-_ zz71FG(89S^%qYSN-NA8Jv>I@R zJ%f3d*(wA;l)|I+9pWDcZdm%jk0IaFpGJbCwI;t^&pkd49x6cXYm!$2Bq}A;W4Gu9 z7dkXU5))B6XM0W>;8Q{fhlF$n(qey&jfH=U*6#hW`~DQmWK(hirii}qBBM*cuwmAerl_3?nJiQAl1TkJK*6MJ zShe(1v8b9<#^M`w(VA+LNVkJM%T=H!#teB2wmo4S%+p)o`qsMH)@lhPa`Wl#m`{N0 z?{;<)4al~jfHAApY}DdEl9a2BLCn5zW=H~VCq8ikETzvzr1+PR*HA$n@#sX;!gYr1TLV0jhl7Mh-dA1;V# z3~rKdmkmaOVMWLy1ekk9=2s>Yuhz&t_Z0OurN(`=TM_@r5+$js!}=*Isn^J)%o?mV ziT9joj=Sjgb+AVRFfpyDFBkgK>kh80Pp7+kKz;JEjPvA$nTCZz?=~W!o7t8epZ>T5 zQLO4Y$BFe((xg8jSk{Nr|_pb!^7X)@a z1P?;CsLs#Ll_nq-*zg#!>5A}`%7-19T(LEbPfB`5=_XXIq;M>kY9v6k%wX$ypP!(| zN)peH=F4bmI?8`A8Wn5K_1Bt9bmv&?T03kgJSe8qsg&h z|4G^6ww|FV>;tGrJRZ@5pTDMsuq3Fg&roya2)j?b`{GrrU)3`|PP*^=YSe4AL|tIS zyn#cBeT=U4YpP+|`y6+fSi-$00=2ajqorI_?wux;2i<&C@t8@&hyE!ctS(6=OoBUj z|GAPX*GmjQ4{PM|yO5_DXDR+_PH~$Ll`UAks*q&awAg>Cos39%VPQWW<)zLdJV8GhTSs5JjbMuO z!mo8G0&F(z1`dAYBO%hvt_d_z89%t1pl>wHguh_hp5VKBkA8KI%~|D`V9UFFe9LY> zTIOO~*Qh0dyVh1(d#fw4O|4uM(>Hv%lrEiCkqom+bKPH^Devj~L>?r)TkcJv$=vgc zGD_n48g=jLaZEc4Vr`K#utHZBG(~Zk{n5D5ZU&qecfZZo*Qk1~&>L6ywHU2itf&2y z%sf<#S@4CM|G|d-%9>N|ebz@O%YZ9Y!T7o8G;F(<-mV~3o{y|(CHymUO?kne3)4_D zLM8^id(a{41E?eLr)Bz!QqQU0MM&Mi9>?e@^t(y&|^7C2hCU2dN577yZ z4Cy1x7A>uQId_nPFD&i-&HH5i=-YYwZn^E(?C`$mZn>j=129A7HW{^Dv#8;+=s0$o z|J!NtQQ;jHJ3|d}l5sgzX>fa^YYRWL{xy}*{C&11jZn8>AQ&kPwWxb1O#fcc*Tqj2 zS;ZP_P@`_fI$47l&gckiwia03Om@x&NV3A%*G)4R1W^?i$p|#&i)u53S1p@2?Hz+Z zw%I_{wTEVC2eUA*9_su3^J!U2-`kma^Wx|&S|^Qbz_NB~e`9ht_OwU{nQ6@^2KGi~ zFzzcHIyZBIg07vbJ&K&ST8l-9-ibp5LuC%(iH{cT_g?c0XQ>{fr3zGPn{ddGbC#Q- z>LX_m_(Nh0>CK}h6&_=x!lK({l9+_#k$Z^wB1@Hcg?QPm%v$i%NOB^W}vQdmgmB-p-6-&=CCtt z32RzY+a=;8kYih|_-4OQ9;%iLN^wFk<=A&!EJz#*-XKG7I9H2@v@CkKUzx_v+ov#2 z2CFEfpcRtE6wn=2?|q^rYKHwBgyvE*3R&ii-*We+My+4QgR3ew4i)``bERn2-c8aL zt=l96*ApFdGLwTW9tYH-s|VpvQBb0rQ26=S(<0XwBibBvjA<$~JLY*=2-r)mVZbk)iu zE;7&3HP>cmag&^q5N_N&VU~FpUPzne;ICvxk<7XJql2VXHb#1PimB=IQ~vXB`%cz-Y}8#kJ$$7zi3b7PnZ8?5hM7mQ7C zBe+}~LYzO4g9#n?xn(wXe`0iEY!q(AmM4JvL_q28g68mg3+xmW=Rg;I$DxG z&`NJyX(V(^hcT)mK#}NyXpsPzBdGw8^v?_53A?Lc8kplOhZMw>kOR#{`aBmgOX@** z7C@jov&*xRTlh%rS207QbPDz_#-oZIjXHS)Us+7Y{64<8afU#+_*P_&+st%wKvSA4 zx99L3;~N$M{_y-p~k{MFG4KVc`r z?flCR!7EmafQV7#v|XEA+7#=$8A>d&h1HN`u1TVLAzS%;wW<@E_QFi3K$y;^3YQOH zO<+%u+snVF+uyjKpNs68?A`W!zgn1YCRAz3pEUL&GMCAm!Ilh?hiutG0(+1Zzrp!O zn}Od!qg;&|CuR>e&@+?bqZ9_QVAi6)mLK;&!!f_5=n$!H@&^Q2C|#M*PdAt&8#mLN zY9e|(J3MH4f4SK?+@~sagX71ReW{OPc*~iz76n&}JBI<&b`ZEQT?bZ2edM|-GNV$M zONF1xwU1S3tFTwA=+ut)l^v14q}~UHmCHVoIs;|Yh}8nnRxI>>urZ=_znu0l8lS*> zqFe=G#}G{~c#NtHh)>X|@iRBKDhbkDLUol0?Ie$E6!Tqetil4TMv1{;aDFpfU6pp2 zLq9}&m~r=Ua+Hcb$4{b1xdD8-iPcB9H*_rc@t0m5ElwV*vhb}CON|#`ZcQVaE9x0Ed*gh?EGToa~TDmVu@w!{Rp;2WTF;hkntQKG3r zlkY#wB~l34^Yw-@P~7d&S_nYr&Wwk=<5lZ|R!k34MS|NM_`Qc)cS@`%MR|+Nj1WK;n8+~pmm-eA26NtMh z-~UotBz8qY1Ec;9j+tV`0QLdj23*m8K&Qt*bWyw{c5L&`OW~xBY;X4^Wla>87x61$ zP(UciiPr7RALp!(*af4|Xf^L!cA9ZIg z`O*Cg@W0A)EVs`iUk3)0;#~PxE~Gi3JXah;hscsA<6F?>m}jkFg1Pisb-GzBuTG-%v+a6CF@mBjn;}*6hk*H#@_F;=hsp+F4xUKDa_lZ! zjurM7BpxN|^g7mu=BFE)lc@=dE&`1OLaZ(He~7dVa9lOT7II9yIr6h!3Fe{i{nK4) zBPp~6*&zbZ{aE19uYl|IdUeq)R-6Is58xX648x2^C8m*L!Uvdz-+BPQ(=k(orB@R_ zMB>h(^l`xMu-AEl$)S*E0bF@7Z}*F4g+4na!t+(~lb5!&le4vx3`efTa)a*fID0tY z8en;AglQ5yKEQXk2FfB8FxE$Ooe@8^KHs~U8e6d{guALgj^Y}TjIbn-pnz(WVw}op4!;RRTNUfQr>Oaa7Jc!W=>>v*)${@{M zmrG89cS3~IUef1Ow-;M~c;yD{EH;9I@r_kGaRYI_RQ+I)JD^5-`B! zx~9}Y{aQP%!=^ERqjwigFD9WA?CY4{A&=$O?+${`(v)Oh%1ra7LU2`K9?(iSKpRse zlgkRCwR=39stzCofjgJTn5ZF~a@C4QgK|~K)OpXUjBu)ftRa3gUHN($f_^<1^kmgQ z@z+9m+<};Bs@NGu1}c1B1*KU=qSMkFzZvB&erM zPBbJja3td1_j@-tcPa1V_f6v`rSlfah+~wn9(h9!(yd~5HxMD%)~?Ua#-8dZ*3|wQ z$qg_J7Gqe!2OeYs$3Gwt={FkGRLC5csfKAy^Gn4Grnh4b!i?b3MK0@bzJD}y@wg@x1IQDhpk_V2WxmWE>iuPo= z3h7px?&xB*=;@00PUS8Qy0ZKZsD(n?Cxmf4NnomD`HC@CO=q-tu=paTrseioL}59J z3)y6R+E6Ta8uuGzkX~o-Z(}N?m{Z83Rm$?6LO;>7!6M>6;ak$-0LgwQ>A{JJQO1-< zcQcSl)t7$+eOFw4&@nt>+=*{DnByDB{j@&?@V>(#;g=>>4>{0+2sYBe2A9-D5b@OL!O)Vc9T5)RD~K z)1(V2#__vvP`C>ReV%6;BvflN^!mnC!Oe^%eRGUTWsgdHj>cb~6fX!`L#?V;rKLtU-9OX}G+x(4i8p07Id=2E^+z$uy1GM6!@>*P-zlJU%>BuM<~ zw1~^S@#7`hXUNE2KDdETW(4(?>6!_&+nwm@75o0!1G?)1Si>hHQ_x7Z`Wf z8hQLR2p{0tDE1SV$~xpu*7TaZ9Zxmdp^U7zS-kyqf(E981adwi(^9tERA~>J`?|(+ zj-EGo!4t{94J%ihwAue}BLFD6oQ?{g3UFj8xOA=R6Cu zg-z$nx^{_Jkk6O~_|p~Ok#C9&As(v;tN!?Kk@D^F^80t*GKI_4&f+6+uXs48dvo{A zjwlAGG!*xh*A}!s-_`FZCLC*f$@(|GtWz_;0rX?$4i5s^3I>unqKk1=A_u{pW1(sq zE8bx_x(m~bm$Q{j68=2fr4eO2j84C-q&It+ZWqb|jFmvVg1v|&m>J&e-D#8x?}88q z1XzrHOcu@A9fYxi=w7)JwfJD*087<_+1itd>>fP4;!q6zE*iX>;eu`MKAXxpa;?X= zVW(3`Zhc&$`-_rt;Hu1EiekCV(9Z6KDr@-xwUk}*=;v-Zfp3FUV*CV&3$e2M!&IO~ zE9g>(jk3w${7S8x{DCdKnHuQwRiD%%C=${v(s0hHv;->K%KTNPEJMFg-a)~?6{sH# zD#{ehiTIC6jZpX4Ru=1{K!^L5-9=j+A5YSnCL9&~<0>Z1So)rt8Z;gv!5pD5_muAR zl$c>`mkr4<{C3^~MxWC$d*7^%7QzIO?GBQir!LeIMR%Kr^gWlfV@558iq3cZh;#L} z1P5lf@l5i5dR0a$c@SA1nd4=Mablt~ zEIuw6ac;?z6Wj`p{$I^6a=nt0xF_ zm$M0$d&ApA@or^lq{@~!0WpL&yV`(h-t#y1*k7+44vvlToBJ{Gcd#q!tvapl`a zT7qc9_L8!?DFPj%F1UVpTlZ`jj&7qm3~gf~kOM1z+du3t>XG%4AU*O+=0`1Tw*{{wyVsSJ^C_4GKKxAoS-dmC zr}CbTQGrMLM<>qC=J7)Y_>&*HLVj;%kHL(nf=m~ z!sKJ+v$YC34kf~6w-b&g60~Q83*;aZ*}=GHwK0zgfKV=5^XQj<*u58x;pwRWi`(ZcoZ^+T2V_uSIlwg z`|kgJ$4NxanNE=M)unzWT^>}iWBbr}75M1mNY$~2wa%bZbJ_~Om)3G&Ju<(Lj_hPN z5!uAbHAyqX0I+aVRL7_bCH1!<5Hn=HHH+xp-Hs5LCI%rUFd3c%-O>`mJ}aIQ$Da)? ztxNLuhGA`cjY7)b$Mjudagl1sMNO3>JkJ?C)k|FBh2?-ENU+51*sNIL8o*sRfQPui zFs@RO1rgzVAQiw{W61h+zc~C8;^GH02U79B|7gZ~lITBmU$HDVe3q$$Yfx8D&m%8+ zBsvCY_<@`f-L_!Wu_S{sn6yR1XGdQk?IZ)_ z{SX)?2KB)Nc|V>PdSfRWqpRTfu8v4CK4k^$ju7Fn0`7G_^iK46Ll}meZ@mlLkcU*8 z;K!|$zSI+H1ajaWtQXm>uV9%_R{Ex9jk-DZ=esWIgq{dDShXZ*En1epeEPx#fA!ygNU|FWZ&r%0}bx zNiQR#g~(?)6E8`D&YgKe!^TXg69iQXl1H(>f-=z7bcqp((}S#;4pWKJ4ah3kXbX33 zoukC$SwB(STxjZh(KI2*1T}=ROp?{n?3r=s?MhjcsIuR>lx?5zL>Q~9&QNIhF2($b zITUxp+t^#hYSGWq_c-4Lo=s$V3;~HZTAhQ$)Q)s|toFpKDA#RZ3Tt=KCf3NI4K1)T z%d&A3VO_r4G!a+XT$)7Nek<8jN$=;LM8d@nF_&|S1hEqOSo=bQuoE}oGUsbKxM zR5IaXqwg;Wuefj2@|?0}8!0X}V=ALClF-)ZW@E+)xd+&w$MOAZHCLS)rmIbd)8rX< zEofE2D;;4I0;txTPZP=fqgw;|(uVXaPS8k&PYTQ1YH7KCQH98-yBjI9(B17-VoGYler(Jh%67r|=FLRy2}* zphn-#X2Y{D3&Y4vSpy9*6kiabdnXO6+Dq-ck>+T4;*~(&!nuku@LLMAsM?gHCN4)n zS+bTQD`8pIvXOL3%ZeoCTP}xJ+^Uu#E*7$R|3jK>NNLX^Q#pFFN9X8wXIi@-fA&peW#YReeFKM%7PqEbNTw!bYoa?0Xj$W$oasgr zBoCrq>WY~t$Ua5cLT&fqRBy>K)*R|$DD~N?N(5{svHEc(A|g(KE59lgk+xVqmtJg= zbi!#QtSIMvoI3Rd&qPCHG#+(&%c}vAa=JZ4&MN+Og)JUC zZFoA|YL0HT=ufnOTx)JW*(`yMiZLb?OWGMPdwP?&a*-!AYv#?#ks`nJ6xIYEc!yzC zM5;@DuTYwn%EQS!vC=FJeRLKrTitdLjC2P&=4sZWZ~0 zM6G3IR94R5tho71Lr3jdscw9yYK}lA_^!^CpU3IevPvUTJ>3F_5GY`-XVmq#59%7p zI~_T{rE*Na)v*`{8s8Ty!;HLY>N%}&6ga;+&f~3xh#wG@EtqwJq5b#9Mg((_L2>RD zL>{!*%n>I#J#hBLimp}$&((+)%>4ZGLb(ihW;9*zHq*76W@>eZjvi2 zcs-S=Sy}IiS$#ff*a?J6mi|1y7-ryBbjZV~^nvx~0)_~7AnTrF+U5_<|1C;S^R_9kjKD`d?k21)MRnKXlEDy<;v3wnx9`$-jNMcIss?76-?*u z>&U@%GK>k85_i;3T8;fF946wF8t#S&Z;7cZNmPMaUge3el%KZ5lcvqwDCLh-9`L;~ zjb>gES-)(P+$)Pa3Of^XPd$W-9<1@Q+`f%m)UQ{k40j<1cwruh^XLrm-9|+7H29GX z`sW)gn3(jd8ezcBr-Vkw{T`c&-~>6u3a zfl(KuTufznDu=|r6v(Rd`10hEJX(1sI~*`|-4oBQqH25tLxzl@=_Ff3Z^Z#zE)r%4 zB#)rL^WzxD^6xDVJmP8HY7Wd2=@a)|n@((nYsIv&*JzOC>1TN$JP}O2pFV{tQQpf6 znq>2}ne3RMprJuNmp|5`6GA{IYCf^vc+$kge}MR<5>|AyrzF*Psp}vM>lwtS$>!OI z6&tx;P3k6x9_M*ZOz)TlO@QWFMe1g&yA^-SK6*yO{zodQYLSgT2AgIYPQ&6nrt0Pn zV}DIGd*!6x^C2@PbkAq83LD8tFWBKYoYvHv0bJo56KoMx3??2Fz416!aS&z47D%|T z=e=+h_+xm5Cz~MB%`~Ja91@|Es?VfOGGxw=%W^Hd6#I9IN2JSNt%Tx}EYVx#V2GOX z4utTIgecVb)hb>Cg9yiTZ7;W~dg{)zu*GE_BG*bb_zE`#`y>Uy6dErGLkJtC=|h~g zm#Syg(wq6nqJ|9-W&{atk?*?z0#F>=5Hb?ZaH`*OIA*++6wzp!;o*~Go^f(0#mP3x zW-yRdoXKtW-KnUYMGJ&%E4+zbh9~N+S$?2enTQKVO|y&X<}-unGfqXjJopJeFKH!) z*J>5#zso(QOSuuyScRLbCSv^tae_DO3x)FcfNYUXwW@^s^qr~)JbgBclTd_zSWQA_Zv1Lpgp>H!u*}e zDb8gK^h(7Q*(Il75jNj{mOSa!+^hYw9u=^`f--X_i$ODls)vxTCLp6Erzg-7)rqy( zwL~S$(q828j0O8nbN_o>bP~=f(cRx7FYEMIQa)bZeGf>jQR+(CLV#k3<<|TcjqljeD23}v`6_{iZHh&4S<{|}@Z^CI@Ohah?orM< z7=~k|x17e8+2d4Sz85g?&0Vkmhzv3;2HKUI7+Yyo_G={U_ok%_2tPX!yv#}y$d;# zvHV8ZYxs#@vUFFv;pJ$K)nNkipN->)_i$)ekRu&z-2vm=EkdrJuEEzjTNUhcO|+8U zN0LRHh9(QXTDY3{r;KBVx}Cni)!fEduup|q?;z`CYQm}|Dfj%UsxAjjbSxhd{~z%( ztGT?T`D*txb>2*Z!RdSlZR|&7MjmT~)8`k<59zHUaS1kcLANF9b8iqX7 zyD!MjPcsWzdx~os(93ge?u3?mWpXXqUpha122{lR!bmj<&<@9bO0X06K*o>va*pDE zUFshtu8Gt!s*XF;-g{WmcuV83@^VI|wm5L3-vR}buDy}-?irWoyUT1W9pm)2BIby_ z#}*bVpJe85)~_;G?GtS_Mq}=@F58}RSW|WMY*7s?o0CH8IvR5ih#=6|wF+$^PM~hv*}yT= z(H5n`tUm6qX5Qcnj@b12)on4GBiLkYMk*7LINAD)sN%TTEExF6Hd+xlJ-JU!=p#vGD$KcvC<`@HfT;$;UM_u4@om!~8P!b*+}= zCAA~zj-_E(VJL9z@ppRp^=OA_W&HanMNtQ*>2>k>kkO9AD3o__YJ2f+2tISV`C;}OPdNo>>{OcpEb5&B zJd(Z%_i5hy?f$O^m~<_n-0&u&>BEGW4p|g|A`0iG+=Re>pRSr@!6m5 zS&;q{fO_U{{Oz9!u$lyr{{rsP^Vbj%{Q0~}z7=qBb+U7Je*RncvZucl6rMb%=RxX! zQo+SuBq7%XyBnaTjNl~;6Z?)um$;=Y9vSdD6s=>R-foi?cFFowG0 zk0tGW2x$%%F}s@5(|ccT$J=-R_U10<5P2!TD6cIKyV@VO?u{DmWP4hHvA&Nt>>Buv z`I`h|f|x(;Zayc;h#dym5J-NVX7Rc6_DS#Xy}#0HQpa!|4&nxhDDDycx%vLRHZ-R1 zwkGiVobxi?5&E5-0M5+I|6>#$wHRJYzYV4U{~H(+0f=plWm5oo{a<(e zKFuwF0uNxC{J;F^k9xtvZ-X&^`qO?o0AbIzVD~rU4ZyvvooD(7K=~=V4QNmQ`aiw; zzrVRp1h-o^T-q;^N1quTQU8NRfwX>$ zPWk_M6{mK(%ZGsr9nt&ctlqC?vH?hBe`5u916Ea?Zdm8yz`oHM}r{|xV U{~za5nGZlLis#YUxXZ`9{>OV literal 13906 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 R?Gy+;t%()_5)TUUzW`;N!&(3U diff --git a/script/CKAN_JRO/jro_api.py b/script/CKAN_JRO/jro_api.py index e8f17cf..af49232 100755 --- a/script/CKAN_JRO/jro_api.py +++ b/script/CKAN_JRO/jro_api.py @@ -1005,11 +1005,11 @@ class JROAPI(): '--datastore-fields': False, '--get-request': False, '--insecure': not self.verify, - '--log': '/home/soporte/DUMP/download.txt', '--processes': str(processes), '--quiet': False, '--remote': self.url, '--worker': False, + #'--log': 'log.txt', #'--all': False, #'--gzip': False, #'--output': None, diff --git a/script/CKAN_JRO/logic_download.py b/script/CKAN_JRO/logic_download.py index 9d4b917..5ebc73f 100644 --- a/script/CKAN_JRO/logic_download.py +++ b/script/CKAN_JRO/logic_download.py @@ -44,13 +44,12 @@ def dump_things_change(ckan, thing, arguments, worker_pool=None, stdout=None, st ''' #----------------------------# filtered_urls = {} - for name in names: + for val in names: try: - response = getattr(ckan.action, 'url_resources')(id=name, **kwargs) + filtered_urls[val] = getattr(ckan.action, 'url_resources')(id=val, **kwargs) except: _, exc_value, _ = sys.exc_info() return exc_value - filtered_urls[name] = response #----------------------------# cmd = dump._worker_command_line(thing, arguments) @@ -69,12 +68,17 @@ def dump_things_change(ckan, thing, arguments, worker_pool=None, stdout=None, st timestamp, error, record = json.loads(result.decode('utf-8')) results[finished] = record + #----------------------------------------# + datapackages_path = arguments['--datapackages'] + datapackage_dir = name_no_repetition(record.get('name', ''), datapackages_path) + #----------------------------------------# if not arguments['--quiet']: - stderr.write('** Finished: {0} | Job IDs: {1} | Next Report: {2} | Error: {3} | Dataset Name: {4}\n'.format( + stderr.write('** Finished: {0} | Job IDs: {1} | Next Report: {2} | Error: {3} | Path: {4} | Dataset Name: {5}\n'.format( finished, job_ids, next(stats), error, + datapackage_dir, record.get('name', '') if record else '', ).encode('utf-8')) ''' @@ -86,9 +90,13 @@ def dump_things_change(ckan, thing, arguments, worker_pool=None, stdout=None, st record.get('name', '') if record else None, ]) + b'\n') ''' - datapackages_path = arguments['--datapackages'] if datapackages_path: - create_datapackage_change(record, filtered_urls[record.get('name', '')], datapackages_path, stderr, arguments['--apikey'], arguments['--remote'], arguments['--insecure']) + try: + filter_url = filtered_urls[record.get('name', '')] + except: + filter_url = filtered_urls[record.get('id', '')] + create_datapackage_change(record, filter_url, datapackage_dir, stderr, arguments['--apikey'], arguments['--remote'], arguments['--insecure']) + while expecting_number in results: record = results.pop(expecting_number) if record: @@ -99,11 +107,9 @@ def dump_things_change(ckan, thing, arguments, worker_pool=None, stdout=None, st if 'interrupt' in errors: return 2 -def create_datapackage_change(record, filtered_url, base_path, stderr, apikey, host_url, insecure): +def create_datapackage_change(record, filtered_url, datapackage_dir, stderr, apikey, host_url, insecure): resource_formats_to_ignore = ['API', 'api'] - #----------------------------------------# - datapackage_dir = name_no_repetition(record.get('name', ''), base_path) - #----------------------------------------# + os.makedirs(os.path.join(datapackage_dir, 'data')) record['path'] = datapackage_dir @@ -194,7 +200,10 @@ def convert_to_datapackage_resource_change(resource_dict): resource['name'] = resource_dict['name'] if resource_dict.get('path'): - resource['path'] = resource_dict['path'] + if os.path.isfile(resource_dict['path']): + resource['path'] = resource_dict['path'] + else: + resource['url'] = resource_dict['url'] schema = resource_dict.get('schema') if isinstance(schema, six.string_types): @@ -204,7 +213,6 @@ def convert_to_datapackage_resource_change(resource_dict): resource['schema'] = schema elif isinstance(schema, dict): resource['schema'] = schema - return resource def name_no_repetition(name, dir, option=''): diff --git a/script/CKAN_JRO/resource.py b/script/CKAN_JRO/resource.py index 8631ad6..31cc6b8 100644 --- a/script/CKAN_JRO/resource.py +++ b/script/CKAN_JRO/resource.py @@ -41,6 +41,8 @@ def resource_create(self, package_id, file_type, others='', max_size=100, max_co kwargs['upload'].append(os.path.join(value_u, name)) else: return "ERROR:: There aren't files in this directory" + elif os.path.isfile(value_u): + pass else: return 'ERROR:: Directory or File does not exist' else: