From 9212ad04f5739868076d9c846b541eab48fe247b Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Fri, 10 Apr 2026 16:10:30 +0200 Subject: [PATCH] Add asset versioning for cache-busting in templates and configuration --- Web/__pycache__/app.cpython-312.pyc | Bin 344413 -> 345545 bytes Web/app.py | 21 +++++++++++++++++++++ Web/templates/base.html | 4 ++-- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/Web/__pycache__/app.cpython-312.pyc b/Web/__pycache__/app.cpython-312.pyc index 1b31f8d46b472de65a450f74fb421299f0a39169..e5c63aae67f1d22210673289bc3e00baae324751 100644 GIT binary patch delta 39087 zcmcJ2cYKt^)_!XUg5W zdRnr`+3kX;C5xS@1eZ9|2rhM|6FkkCLGX0vch2q?XiLs;jam7GcZ<7QVvh@=?p9f& zmMlZb+B4qs%yHVY1V?3RQLd9$?(?UI{j;PRsBO=LeeyrLsslv1(_*9aC|CZ7<|WNUdGpFoz}5i;#8!XjP`XJZ z{p-)g*67YY7iiuq?U~8W{?zodoC651rM~$Ag?PWVr`ygByvaWtW^9UcNLYWJ6G-z; zjZU|n8+gka7O2`eJPiB1KziN?=g1Y>J);8bcb*i6)fT|=zDs4U3%*6iq}$F9yvea& z=&|1MF^RVIfluCQLf8;|+d^*_1mB*dw~c|ftjR(0O2aC?Fp!>C=A3c@d8dY9T@=8| zni?!+T3GtUf%LrT5v9xs!@4AZ<=q{dZo4$_mNhF_=Ik)+%L3`W=Qu}Fsd^ae=7!;2 z9>9y9rx@&=9hYXiBJeeDegxYWgyp?5h_x^RYf%{1rXbeh2&^SxSepY_y_f!p-qXVH zwgm9JQ{&TZR|Vd(DuY~D7KZH&r1!4+Q>n|t@U9NvWd$vP(;1e2O&~qb714&8Fsy3> zSl)37={6a7>s=S5ZDkntb+J*-RirxC2k`RhBg$?F!@ePi)fgcoO<`C!hG8|IAdhE; zVcitO5)oy&!?11+U}brN^tXhi-x5gATOCo#nlP+egIH%pV66?q+8V&>-Rhh|TnLxe zv%~PV1@Q9Di74&dFs$2xSm#AxwS{4A4`Qv0z&bw+>-Hel`iS1y5QcR}5bJ`7vNncc z-5JEXFaqnMFsvOxtcxRRyd(^3X8_B)t4q3VSMco}db=z5W=l@D-5q$#+8pf1Eny|y z6G$(-DuOC+7}mYct4UV>5x~v6CIa``Fx>lsSTX|Zx-hK!16aMUk7(x&VOYCkqk?!h z{z->#3d1}zfR}f3M0vM_VLcGUx;28ftzlU00j#WTL7v?fmi}NMJ#TwNDYu7V?FnMt z5rK7Q7}i5UtQ`?pJHxPiL9AU7Sa*eCJsiZkJAw!Igke1r#JV>E>mOlQj|Q>si>UGb zFs#RdSi2*z9tgwwX8j6nPJKOS3%@_?qX7p!4CdyiW$OvK|SR z{b*SFQ-Son$08{FXBgJrAlBm%SWkpuJsrUE9!yQQJrjKUgWjGEyk$KTq~qDJyw3&F z^PY>SVP6>5z981~!BSobOMl+EpY-sB0G9Wev~=74;M*~Jdol2q^=hz$*TPD8DUhCb zAcBsAVOTE*v0jhBdLs<$l>nA^PkOrT)xcZU+rgUO3B!IZke+uaqRe;0unq*VtO%_4 z!mthouw3s)V0{pV^}6#z;?^6^j|jf${N8z(rV($^zaP`TZ#zGsukSej>-?174mtlt zZ|^!kBWO84C-|Q82j>@*@_wKu@3D+@+Xun7obKti4+C#m{|UDE>#+Ji3Zxf(6G7#- zVOWQqN2$J#oj*E{QGK7RHG4<7oZj=g_vD#Vn`@LaJK**%asAEw#C78Q#N}F2P2PQt zv!|>2#;BY10EJpqV^6AKMM0EETT;syyAe@X4q+Qt}X4nM5X)bGkWaPyS63|7Or|%mD@FFwM)3`nq=_;BSXJjlX-Dwft+@;7AFV9 z*|L+)jXEbv=;uVui;9i%M0s~lE%M&8Gj?czI5E?c7?^Z;ct(jgr{Og3u?6NcBcsmM zyv0rFSG^SLJ*zaU?OgpFUBsWGSL;qY{tGZm<4PjGc~S!9GYMgDy`zev+}avli&`9| z(SPBXs_ng_JjsFF#J(6{dfLK@2(l%*b^KhHr$sd8R^?V#RoA)(EpKsq>Ka$%R=M3S zPp)E8W3H#p<;?Xo^-XIVT#cSwx2MYE8f>LcEniStUQs-^vUuLS(u&FjrE}*^ zomFl{S(@muwRma62W5xTsyVBEEwZe^AYHn_BN8Cc!@*!2t&4ZiQS}B!8NhLQokWq{w zyyf)2dk=wiQU6Lwm5wcr1KA_)U;akQ=yy^k988(;MoRIz>F-9T9O{yJASUyu8Es2^ zKR$8ONtc|oY5XPQ-^?8NX8fS{yQaOF-fw5`hoj%@+BWfMl#y8YRPmu+Ik(naUvp#a zt&P_=zR_#&=JY)MI~e$Fw>8AjY=5&-(>Z2yh~Wh zFaM2>N=W-IO0y*%ib?oad^)hB>8-;(l1RU6WXZ6oy*c?MdB)QYEtX!MPKW`_vy}{q ze!8!L=OGM-#ZEGeXLOCA%xg5$+xunj)=W_t73H;h_O*$@RGc@u*Z3SUnx2Sj%~itf zs%&U#bgiviT~*)W5>qL`(|&cYC$yrmz|j_oarAG8mg_J$QB20?WRjR!Qzw;HPMSY= zZfW_X#gtm+-H_WShfD5OS<@sMsyrtYJ%=)0*8Y6%$y&^GdZZl1-st>^d7LAya(PQ# zy|c2eadlH&wX3qRrD3^Ch{c3>wYN5Zk~x>2WL__7)N}d!<5G+1)rxb9sx|XS_8M0> z;>8s2ZG%ot=Pr+@RFV<(w{D#nebwM8+5_HG2RCSQ+aIFm*^PuDK*o`10uEES@xcSo z0)X-zv6ijAYPqXkl;P8AfHefHc>Y?srq1c973bme8Qz&g2WX?cYllwK{^@;u=(*Zl z?awXD;C+fBHd zn}mmI8C+ktd~i!+oySd8d^0?=rV_Zz0IE8}^wib61z2DuhstPn)~s+f3MW46bxl@u z$y$%gJ$064pH$Vjy2{PXhE`U46dPK+jU)24bG=(ej7kGR;>22o)BFC2E9M})BrXBC z8ek#7wEz;}I)Li|ZUDHEfE82I)Z}rA%C&x`A>kqbP%JL?K0300FP4Us2x*`eh^GnX zhIW0_OD6T|A4^cmMe8G8E6XSw>}@QxODOEOWk_#0VYDWLai;RfCI(qt-V$ zU6mu4zSh3eU3HD}z^z6`TWwt<5n1nA;Ti0R3v1goDC932_#9F}h9g$&#`AarR*aJj ztf!8uoR4piDy2nG29|EiXlz>Jh!J~$9=E(nc=t}oAAq{7gsO(7mPU_XGlNZZ$53KG zxW#C1(!_k*0s7RfedNRgnjMN#9VO52Zl(@7OwW?yZ|6pNGq zBuNa~aYPeOBI?~|(!;u_qxPuev~{PxpW640)PCz`dizc8V;t(y*E@4^kLbkc1pCpb zXm7*hp2^o{7w3@Kj4vK!>>a2T4{E<*a)V)ik;)J+c@s~~&0(t0Ar9TL3zxg4-eYO5 zASvD%r}nUYMaj$BSDtz}q3|$0wkEo1cy+eayTsu7rWKY}B^>lw^auDC5C(hioMi?0s?Z*lyw^pxCSH>nO?6oy)~H z-i#%WXs>t=F6m=eO5puD4XM1Z5=S`yTRloj2*!(#i8@l+LXzEiW#aQ94>S)=Q^*1l$KnjVY3a^#Ya<-O+Yq4o!XFwpzb**zR$ zI6Yf&Z_+u1{lQ_&^sH@mSuvHBjbvylD+Sceicy2q z)LG0Kk?E~G=hJvFO$-Mw?)J_+x3ULYzJ#j!`ldB5XJt(tN!dn9HTCxA&TWr#z@Dfo zF^r3@l(b9dk;yWtmm5NoyY1q1+a;8|rTw25x9T(T$kvE+TV}1Np`N@ncXd^>i;EE# z5k@dO={7*9u{ACA z_2fiU*OF+FKj0E%OT`55@+*7y$AIj%5nwy03`dtbHz=(mCxR*}8Y*s}s{ZM{@5&}^ z?)IEbTALR&)B->y#Z3TQtCtWRHp|ZWh6_or;yQrq30U!@^VO>=opmc{82t;aucdI zK~=DKyrZtlvu&gA2fU|URYn58{i^p&?QCzGtRZpsej)o#Sb`Fk0t9V>7>WvM4iP2d z@RSL_2JkaH6$4-{w976Uy|b<>bwD=Vb^^>_zhzErp@~D4Ga#J1sW_|s@$1&vGtWlJ z+W~F|xC7u$fF0h2xAr=Pra4iq-70Fyr)#XLtIut0^5oW#^>K=wK-xv1Twq!z?jdkO zz25t8O||WzuYa`fzjdajJulj#UFTZ!f2odIY$Y_Sd`bl$ zrn>XnFTIoNKD47}wEaO4>hu2cj~j-t`O?Md^aax+C))^`!RUjB3IVi60{$5bd7<8C z?;ECF?LB_qNyAH#ItgGhKp6qcaIan={)UxR_h;A@!@TF+-y7Y%{r!3+kJJhOz&@mDbIgMOK%_Wa2H*B-FwQT zg9=a!`TtET>Ka>P8>;FW2g7jgvMKuBLTzt*FMss3%uwwnK4L5r?*n|`)gK#^8Nn8_ zwuvm+r&RcU?}EoR#e;y>_#yZzt9okP^8A z&Q39Vc<{p8Y-jm-RH$(Z2Nc)+Jx9r8FXidU0r_L)WXU~#c z&F_$W48Tq}k?rvf|;xRKgN83Gq8;=P&Fu{DCrmjEb5=UNExV zg>;HKky~aNWOs#5HCuLKL|v0p7&eBnGhPUR>QoG+6Jby^Eh2$?8txh=ObrkRpSBodeG7G2@;~c#5w1w-4^&X-ZT)GPU6~f|;h%~;J+ zLEGo8`#HzXT63xQ%Ae1(k3j2Y<;~%Jb!7Fo3&t8|bRQYiGidid2??zMw7_fYtCN zayWUk-+tRp#ofs>=r5RzP$_99D87R3k#qDlI zH&?BNLr#&`H-4S8B&fYsSGT9dNe)$Ib(L_s$p@V+EVUB-8Y6iADwzCJz0JS%)+)SL|JFx4;(heDJPLHa|65O+pyEDk|NXbTgsRuk zE+~_gFuze5Oq%gIS=Ks|rjluo^uk%`Bea}V8KamQL|DBsl8{o%b#YpE?Pqy?oHkT@ zLB1HL&9q~b5YuJPcx{mOhnya-{Zo5Y#w2L@ZAzoNh4pw9HyvFJ)%fc^EJp3z^_^+- zWvKCTfRJt{C|P6$_IE)~LSSAeo~W%#mF2z!ZAcLtO&A-$m(Bn9C$i9FkXh+;d1$^Q z))DblzP^dt>e#N}beWhyU&KU!cjUe4T4C1`Ji{@m5R>uPU4E9XjncNt>gh3q)nx2v`BR2Apg)h!t%PV9vxG;Sg)D3h;7E`< z5@5SvXmVzEt$-L$;-7EliC2+qK5F!m4|ms6{XNk$tS34fA)$a`De6FwLGhpMC@T`H z9(Q08P4O`(S5inE!uyx1n2G|a2iwBcFdb!grb@}G3tb?fJ3tx%E2h4QCL}OpnRtzB za5?L$DiPih7XoP$ilar%6UI&YW<^)G2!Xg+T#J0MhZaXlLsnWFEx+xd^|WoK9M}4~ zW@?YeDla(9yObaH)+TEEWKMxrmdstiI)Hu`f3?59}!`@V#Mq6{=QnO-(it2_SF_H3-t$^L9h*m7n8_eyP;R$%`JeR8D8DyNawskg|w@F4QB847j69()Vh z9TD{H$W7-aK7@4eS@-}R26zPEQ2@3#F=1RKrjnhq5(6%S^3t9l+(C8`q$yCsCOqca~^*+AH$K60J4y z7it)}CtTY;IcJjQ$c7_9^IQHDs(UXAdRksPN!ygxdD584+Bw>#(l=Ri4CU6MQ51os zHqmk>O$cJKwpmFdbd`#-1?SCM45u`USnv-{A@3GWtiXB5j0CobL$a!8kV&+@Xv}DMkh$R2R z;5DL+{6iuBMMPLJUBDE>p+GgxX6KWJ#8Ej?`19s~wDEo_Q3 zpI#kBibKpC=1T-iAd14I(5?8_FlxE5WW1TijTO$RRNYl3wQ5`6^v zbfk=c(lNY>FOUbCCBDQ{P^-idyt0x)n~X-tW*xdZR zGNqzirBNrgB0`~9MZy(|th;y^nd4D^0ze`F)QC4piB!Bkf!8!Vr2}LDbO-3cPpC5! zPgwxj06hVE0ptMW%JPj`y3)b{tc3=R&hmzhT7TOBLa==MH)=92p0y6^2V$IDwOJdI z!+Q4~eXwlBh(DHDHs#^I1ClpI)aG#|IlL#`%U^ zuT9hJuYi_MW!nu}gM(Wc3SDq}(Iko`*Vn6g1dm%oW!jC}(34LF4Wj|Z0Q^Xp5gtdE z>RL?uXlcjoUW2gkctU*4ckYea1@Judo3(n40~O_B2#R2qzbD&n(K53m8fT{kwx$-3 zC?>qGs za%3o@!eY=HSy)gK5lyP8T1}H$tTbSZwQLlapnw7EV<^yGiO%TEE?@yb1q+LFQ9b6= z%E9L_;&^;ZAV3tnE}y$o8`vKNhPkf&P-!e;MHCpJr~?SMj5<$)aLBA3nuzBX9-*)9 z3<}U^rYp}jHV_D-ZG}|e&%PISXg8UP1z<0aTCK4W>-5Zv*iIV~n!A8po{=nJxd)tXCQvA_56@^_!gq`gB;U2BdrY894kB+Wb5k`P9v|h~dY=jdl zcrA;%?|0DfEx_{t=ycWnzv3whSr+A&EMKCC&~ ziqSqUAW;CdGi4IxNMN4K!c%7o#ERgzy|aNd7l1_xW*O8g=}xMr4d_A5jCP9#LUjAy zewcPV+F5~KmlGe;3fk)FyCWftC}uYI0&92zqVoX_?~EoZh9UxWHMFr_si~m?i99?o zVN?MKQ*=f9ixX$k=XJ4BzE2<1mINu9^n_NJ!4$=ZQKX2G=RcvP&FhRQ%~X`C+f;R* zL^Z1MsT0n`DK{K#5-pVTO5c$uv_WQoDcR3xi&S^bM6ujw$&tjcEP_441EkJ~Vm3A* zm8~TQbV7v2h7mdkNL*QfXY%`Jw1RX*4Xij1?fj^xJ!nL2DsYi%qbFJ} zcUL+o;)+c3rFci+9mSgQThcOX%V-{l9Tj_+F`ljB)v`hK^iCPg`el4k+2vDmF&oZx z(+bp>Trm~xnnvKrL=Zg#uQTy9ouA~gll3vZcv@3VA6oVCQ`M{nv!Ns1f%vU__+-7e zHe0@bvVM)$EX8QOMBCxpGn%$wX^Z8Fc%l zvr+7JfZKf|OZAU{kTykMZ0A1QC_Pj39m>~xP3E1dF9{2gVR*HoYw4&B9gk7;RauBu)|Uf;`8^@27YV}}7Z z5xD-@6=eV~AVDGni7q6r;DX5M#1R5s4OxZHcLSjwPdxxK0U7{m2+(3sQzHdFJmMLA zIt#eR(ay4o$Tov!zvb2-HDG641z zuEf(O0FI5Y0B*+X767(*!$Dyjks&sMmPB{6tC|MEYF?TXx5}_$0Kk6b1$f#h9bUbc{X#rnBxic{VPrzrdG)?&JJI?(!P&6IC;6CHuhzE9 zoU8R&+COPXrnnqmZ`S3lMOwPUKOo=}4;V3Z zZZ*PKwmLc$G>-;SH4w?vYxJqSg6rsf0T(7lyntq~n-XDOc%I4X&CYGeC=5h4bd`!| zEJdRcFjS%sWl&nqwq)ojD4&O9wlF~*b0n$p_+zAh0#HJIB78F8TD@o)x2y{(9(!kj z@sOo?D4|&iYJ?=AguP=|iNZWlxhMSj-O0c(NITfk_0uW;THnpr>fPdV*dvHo4!Z;m zz&I$bmalEo2WoreuiNzE5#^MxHF03BC$JCNJxzk4~UGRBOk@LYXGhV;C{d8bm`B8Rbh2u2_g?E&`4e^z8GcQ4gdovvQXet;M#6{!|r3HW9_ovgZkjW zXnxv*x-)D9=kb|!EEuv8FCyz-4x!xJ`+>r&-iR7Q+IA2L$snZ|;5ED+0C)?4N5Xal z_LW+)c(881i)5CJGf*Il2aD8)Ncf0AaLW=8NqK7C9MK`$zzF4w;^}kb{Q`hHghwRw zMYMlpkj;FmapDw6v$uq>gnlI3E97Km%}S;zAu&ip4PKtVDri3rpXyk>%Fw!&2YOoTVRhZ*cVm7pvyVjx&BG@;l z93yJ)=4XkaN927}qdHubsLsUF+C8$0v#87O-EsI?J#PNrcX`;JYZWNM%!TGFzi}%k zb7^y3%~f^eXs>{zp-;tca^!1z{{-~C+GHK2%T=%GMWwAkp|7-HLr>KAD2KO9tBqA` zSi~wy>#!HJP~?~9dxT9B#OIOe7hpHYk6+W%`g9@;RuTz*Q~l~7-A&ciMRE>6!QA)ZM|pa9EecFCL}9X z@Wl+3bmW2u8=ee*h5qAlhSw`jr=rTOrTIlKTj6HPxAfOpmKY`Pq;v*ecV^otVa;Q2UFRUt}c!S{M$4%;3`m+~Zz;^`Pb z6i|PXE5Fyb7Xhi9WR3e2y}Qd0kAvi;uz*(*wV?w|$oqsG|6e^%`_#AWzvQM)<~q2s zRHoW9NW2V62|c46D~Zm$(#asdZE(ARoV$)4E-_w4|44J?BeLI*`YqaA`TURi!uWY0 zaX*TjE*-~p2krcscU=58u77QRmT+i8Mb(3Pn!NHSJ+13?L^7{pSSHMa z*dZVMNiWbU+ zr#Urf`$S&)v)*fTNPm{0hERYQ){>4SV5Xao6gJ1p@$@+gu9hED_O$C!6c5YnC-ZQ= zN2Ye@1$GW&zb?mj==~S54yCwiYH%tmxRIP!(D3xb*I87PY8pi%tNFi4OX%#>d zzzTpy`BaDAYd{5_`=O-^AT3uAO_r^?mTqq$W#r> zjcpEU)A2ER_AmORo^0?3Qh`>oe^;e{>pMl|j>z|Z(NDMYJoQF7{#SjR{TeXgN_qaT zdRf|Nur1cVxti`jc#_g8eDD9NFHG(9SPvADmds{$HHJki6a2iqu&XgX4Hh6^!Rd*b zNE_1RyIqYT-3>GqyVb=av>ZCvQa}LWmnui37)7xdfm`x}-`1xXwOXb8cZzWq?ZNrmw8sw1|T}ihE#D!YSCy~Sp@|P@QS~iyiS4@3<71;hT z^XIZE+sK~P4b?<+Y_Qt{Yh?$ikycVb+UbxJ4lQyQq3rNbvwS(*$hW;s_y^?o*~S+% z7QNTg*rg)mW#kWqZN-O0M`tpTC3xZvJ_d5x{A>8eg9w{&ZZO+%gA&S>i8bjluq?*j zXCgAi10(<>5vbUuw{cZCebcmxW=3wF`asxFSxBVW+4xJjW>d%ZtQgstYwSs|NJE-w zKlAlSI#Fin)`EU5f&%yAJz|XL2MiwmQF~x|uV(hC^5dRHYJ&KX5IZ1NOEj6Y(a7% z?WCP*uz8<~h`9PgCiOG&x*n#4jINXjKF|djadPhnqo?ome#UvRYOx`*4a_wjFI3lE zJIv@#A*de1jJ!6M3V03bFc!3JDMMtc@)%q5UNWTP&)MFAzet*#N;c*b_okZ0;UJIreWl;^yk9bzZl3R=J zhxj^ru=uJwV(4(Pu%g`_=^Jh=O+HbgML(H8!Wi72+X#8KqWLg09SO9--*twjMM~0p z&{BVP;F2e`ouz6u9VDru_;8(Pt@wc?rpUKvgzSqPpjvV~w-XE`|{ zZ<$~WwL`UO(0+4*f#W1G6O9sk3qI|XvnLwkX~XoUiN@eW1g8ZYPZAN@nmy6T%-oBC z#$R;!vu2aOPc(|u^uxcyBD6^*G*EHRokE511j9Pu63zJ5lHcIBMivTVAB(!7hd*r3V{Rt;rWk#bN}=E9i;et(pNUtZ1Asa3 z3!d%-U{?o*g;voLON=4$8qqA!LfUFLrNqdyBUI^5rM}4Mq3lfpoZbK(B7yK9@!e8l z)I{5r7Rb11MsDIKC>`BG2iX(lNz;shgZ_n2A@cyY&q`Mv>u(i#PHI_S%$J*|8NK>) zE8>-bJc8`eAdlM+A~aFHIn9`?b}yMo2N>=voNgpzBhSe*j3x4Gz)%rby^qI|i=W#folvWNxpR#9 z#&GZ_V&YfU+OlSdu9|P`qy8MWz*y-&dLI_EmiH_&&WpiZ zlmzZgIc%}9rY#gSi~+%W0furr0f^U8!UBLD3oU!$E(eOGk(ATvMO+4`96{EDaMEaH z-z8{I9@IhfA`0(GAx-&&%EIuKVsrTVEivwj=`^}Nj#@2v>s@zwY`KwbFT;mI*{#~J z#=?Ce&g7!y{5=m(Xj&`9epXPZpKfl#H4bE+-U8`w1AKtieJCAHV`fc^<&PZL1;_6a4Z6}^^~@U5A> z@1rSnU<*{J=AyD#+Mn)GM>B(sw7NA^okenilg==7v?;b~jX=vI+yxYs4~77|;Hz{Q zPuoxJM0(3f4laW}@iIA&-GixVWq}fw?ARbv<(99E47(Cv zd3U`rFf(MnxP75H_6PD3YtHxe~6Y>^x zdfBuE*ImE?N3@cXNT&f*asll9Mo0Au+B9V!MuW8gWwgJ|JzO3w)avEZV@9g)gVn~W zxY3ZTH%4U%l=lNZ{1}n(xZJtk=(lJqa{L5@xjp&_8N?CmU zhluGLLapUxYTC>593IWCLmnynZ7_PZu^h52unQXUPua)iaRaWt8cH!CQdb0a!P9e8 zPUxZuL3h;BW>DOJXr%;hpQxsQEhZwj=}*PzuALo6_4>W4oHK!l>~S$PlMKpf3ykl_X~`4+hoGM z#Mfh^(Ji*q;UJ{N`{eX1jhqq4pk^K{7u=C7p(iSJg%|}ymX4F;Ems=jyR!2OT^A#f zWNPy3D~}{0|Tb4GscI!eC8lCKBT@Jkl}F>T|oDgEBpw)1&XiQC#TelnIedlgAUPYGkzql?N9h(Cu%_*AkIz53qoyqI0afkN_*%uZT3oOas4bG0@ckFdb+Gw*9q; zYL{AdI2#)d0mKSltR`6H^o(5tU0L&pBnSU+nF9V6&4g*0EHFeV|9GBOS z#6mC)YB&SnCHebpM*28r(X~hq2?1=2MK{y&jT!7X(0#V(gwW#8L&$MN&e?AC?mHUj zsY+{13I) z+c??I?C2`z?>36!mxHq`9EEbrZlffgMTa``e8!37zfch%`uk=7Ph_@FjR+CbN}ij=~O9utg`0 zTndEK08R&BZzW{7g65!%qWReI0JnhD8~;S=_&TuSBouNso_O&VHbE&pt9r(Xs!q{r zy5j(Q2ZJ3)7fW^4v8(}hg(csA$|$7WrRH8^3_5t?USm3S@a21rXaBDq%pDi(Wy`L# zL#Z(9c|?~Nqo=5a{(kSQ%Toio3~uFsO+iOMaL04M^JveFVhLCXt}O>x4~A_Z;J@d~ zPtgUTFaF&cVe&%sxKjz7=ookpjI`68veNU6QD|F1WxwUy`i${JY}sGy>2b7-l@)qQ z!oeaGat~N>i(uMlK)d}FW5TGQWYI{%t>cEFpRAaGEoRePCg!1e>JXyr@v6Z)FJ`_< z0kcD>_1#WAway#{?z02P6SAVAj$pM*4Dkf1%tT*Y+;dMo-(jH67Q$IZ)8>2RYwpqoPf~fdh8!}nvNF(?zW z=#h4$Es&4AZ;Tntc(YZ{SCUGnS6|ZTZr8 zvJeu^hbQ^yp%p*df3~n_*l;l%-GvFfI9aYaLhD?w$jYybsSA~gp;AioyEV*)P}HzD za*d;ag&NJkDe5E^?9uqjPBv=<_yUa}Mfl?@BPV_><=me}bY88=V};rX-|7E0Zo-Mn zj&F^;%n-RM{DEo|nR4V&VZma+(8Jr7nB6C`*L5O!RJnJa1l#@K8c$-dgEGu2po!d}HoZY;%JT9{MyN z;U*p%c{4IAV>Q^K>vF?y#+Wv?n!i(?GVupNHM+*B(%GF4>aP_uxrHuh#_2~CNEe&0 zrmb0gIVG>ypb##joZVwJ9CG}ikvK2T2jG!|eV^&TZZh%lM>+9#BSTy7TlBjTtxsa| z5F#gEDJ1Bu0UQHn{V>oSSf3%|QwC~`ng);BV?zCV&28pzZS$VD%@K5;5|A`j9$MM8 zsoi9kPv@!8i$M(u-}Ul=Txyt({#b|(Ej+Va(yT@)bl@^w6+M^#FwCs} zCzA?e%M&ikrEMHyG`*`mnozK?Der3ey9DfpkZd!1in82caZ}1oQn(f5Y$FhqZ~AT} z(T;3vk5n5c++sT+yqZo(?cSbG*2@WZ=+SakH*+%4cXc=OAw3=KFB7kzFLiEufd1<;ij11f3>E?i(5Q)r_E5Ht_B4C91sE<}9vog#f!=Zt^v>38wATgPb zL#lhf)Q`{HMJ0R%BA=CcE6tIzy~Z3Y4`-MzqOz>Jx#TaXyi-1uN#gX1d@s{HDUU5P znj6@A5kYE|9G+zkKY1r%oJbG->I!dmS1j{idVepW#bglb6+|*cQo19O(nH=-W2VWM zv&_?oGDo&~j#k8ad>dh_)0n#0h3ETF3vrT07A4V)0gxx(?r9F9>}D_XkkM91IIt-Q zLczy$H#gzPKOga6A7myWuoGKeMkgP5%FdkUXddtFX9{qfTj>Pb4_E-p=An}-F14$> z7{#!CDIl^O36_Zi{FYprZ)Prj7=6B;0A-;)U-e=(x^)U=p%oiC?B%ND<5v4n29KGb z0Apt0PbmZK`KJqOYAg9_fJdmULw&F2n``{1CAfcB&RE3wo;KckKUF#ho1+UiP?-+R zipCN>ZU%T2O`xNoo~n9`U~aYl>bQJ%usPiR97vfde;aHT(Qc|CLre#qkXby$T%@JR z2k5QzbrR^-gcVIqbdYoq*2>&86?>Lw63+qb19%>QgF!FQlVxibbm4+{24CUSi8(TN zsM%k;R!$#k_O#!ID!a?Zp=K|wOkOe6T%+xjwjy(~TFLfbIvF8!A+6np=1>RIF>U&l zEY(#9QOnEdxydLz2Cr<{g98C=U8E!1>Wp167?i@KQHYFw2#wBH;FlG&-Ex1CnXB!W zUlkE;&&b$e=7^p=NX4rwIT0sp7GI+d?!FW`r^TISfC$R_3{}_e*04e-L=1wp(;(3RE76`smmP{~D zR=bxQ!JyaV#tG)czuV6qVmcM;zh9Dvi&s$%Go24FJFp|5-iFm`EM@(L}R{ z?Helo5#MhUO=%nW0X=ijrnO6XQ||n^GjeH5#OgZw5eK2VaXT9IA+TPRPnDU&QV!EI zbr)z1>~1rsm?N0c<#bw}zDJ4Bo*Fhn5e!WPjX3zo>H_ zR>W^Xh{&_nsuMNh7;5b9^Gz{7Hq(O3F&)|%GMD~+6Zg(A3yQhlEKr9|wv2|VX0^q~ z#s@`JaPu>&C~OZ;kT#kn9+4?C%}sro9JB!B1pk!v=6x6deSFW)H0NmcXX%-KY)R`y zt7gMynJY1!xp|R!YANdu`ze~Zg^QEHQg($K^Ro%yDh31u29aIY&K? zZyXg0hMvMUF^Akvj)!s>ihGPTk_Rw0c^H-=&z0boGWLEP-GsX7N6k^?q^0JN=q#k# z>~if=b9~wT)OPyeEVZ|pw35aP(@vjK{5yeYAiAXwSh53ipx#yTBXV;PE2zRD6Pae)RGY8T=!Y+4ieutK?Hle0cp?~S4 zJymB8NlYhlMOBV>&?O84)x^FXdL1?b?FIn z9(tut=!q)*od5(7$skWIZ7_FGokpX1Kx?>|7(^3B9J}`4MT|%gDIAPdn0e&-E~BKt z1tA3s9to|{p}7J#b=_{m?VROJb|^L%rlc8h%Ld~>MgmG<@Kcsurp zi9h7D_2#K5K|4ftkd07>ynVenL|Z7|TyHM!`V{I-BL=qiuHgMa-sIAra_I(hS|;zh zN)fEW+eD7^A)3nGV9l^bWf&&CxR4JOon+3Upc>dj)O@sfe zcIfilnTLyFxkx}k@?jmzgmp|{M(WN;ntqirXS>$1g zBS+8sYNTn`dh#0jPgHBU)uo&ctb`3FMAIeLnT1%|c;GtojVXR^k(ef73vSq+dL9vi zDofY;tDSFQ7~BP_=j6-Rn|Ued7+PBA(GDh39F%`tPrbl~{S`Ur2D3MLuULR87){Am z#-GZpq_s|R;>xJ`T{3-_++eO#FnOMz%|1^=Ld6|L@TchfM= zjCc**cq;l;DV=<9tC`oPgMW~9a;9QHE4xs^_6meutTeTx&tp~KXASDts_8<|X$kGT zQ?8Z&vaQciD0e-48Aftbov<@xY5aHVgvuAwh{D;vmD|im^#PxQIQGTa4Zj<0A4hp{ zA`DYaS`((#Ehn|GQO>&EOz#UH^+YR{i2Enl*M-w6Dya1H%F_8pH}Awe zn>=uvdAe`H9V9f^9USf|rnXQmXUq6qWdW3MLfFhxV8c&495i7kAMYhk1lUqBWFRFn~O$D>=co3UL_k_t4`Jo=Dt6uQXwb zKC^`u2Wc1ftMcK8%+h4cZ+VidK#ffFnc2Oz5;D2UTx1BK8XBZ7ms5PErwwjfnWK-I zq5KoYgr+Ia;5F2C_PHpGK|fUpfCj5OO>jpEUu?qjT`O*`%UwkqIB64!6+NT4eA1Fx z^HjKi2b^Nc%s-Zi#mx%d0Dl(B;~Pz4N~X@3T3%W_mwwWeeoN^PHJs+sv|rIB_~bd? z;S!7b+EI)#d+H3ak_fTP$yoPCm_d9duYB0dZ^KP1;(jVX{1;$3$UU3BS#*IFE@i=; zPZXoTMG73Fu(Y+bv7=!HzWd9>-Loom5nWSv7ALT0-<7IiMF38i!E^bCLpEjq4ZKLJQ zvnWSh*a_o@sWZZ)VJj2SR-6)Pp6Ypk&X>*@)eZiWRcu$dAcdHUz(v~=X=tD|Vqr`lE9L>F7puZzgXDb3CXh4#vSVNSJg zLoJuc)4niW@e5E$3BV5d@)zbzZI;aZ(#)p&mQMQ8oMGPu)ZOxuFU?+dD3hr5-TS3^ zgQonJMRMj>6q$HXHhg7%ntU(PIZ_7Qpex9i{oA~$tr(3A-F6V66-$B1io*iR(;J@T zbC$eQopP7WHrRPFo-ZLl zk-3loW5#noaDQueRGJ_!X@3yuw2zR=eaGy!PxKRpv9DuoFW5Jr z%M0aWakhp;fzBI;?m@_FWIR;>kAp&9mGQQI#EXmLZT-h_+==}hZqBm`AA_`&qONhG z87jq+a0HPq6?lqj_YbnD&D>F2Ob_K#&}oVvCmz3ATSMR1~4!N6@-Q z3D6ITHaB75KCy0c#Zj%Q0tPKG8R22PiH^?Dk7!aj^f@ZxAt@4VQ)zttXQFL_rfrbF zCfNpSGv$CTw*0nGu@MRe#i1@=K!vNS*oMI^!Zv0Uu2_5*`}rYBJ<4U`a#u-TlIKp}NH^NcfnmLQc-_qQv^XAPjCDY98hHu_#=GXk2flwO%VtGa&ICCe9%idk zj#qYGsaI(@Aw+e<(oQ_}#J9WfG#hw#;|b=dwQHFgx;;&~>cSxm;FP#mj_z&i7dD9h zrA>;10pRwXfsCq=RJ0?O&Ki?jpjHL<0V`;&tR$qk>28Qhp7skit+x=*FpsDYdMv%% zu~bsfTTxT(xo81Ej_>#0wxzbVzEt*+O0;k{J<%1wjWvP?*6sLKOTaRx%`TlnzqhIe zBiME;hVIF!Yk)HcMy$Budi*^yfwc8*WSa=E2fcU?o_JiUq6X5%(aYTwG3DX^KD0`^ zTfXbCO{?H|Jr`|X-a>Z_2<5-f>P1bByYrx`)dS|13BeBovFjCZk-sG(7t1yMZQl%< zOB6Wta-2;m#G?^*pAvu2E0BiPJ3f_H4X~}q;Q#^8t2i{t^F?0M{v54&QFb3_8>2bo zyn(j7HjZGkjsKnY--Z2=vO$d(-+rgHMyLAFW5`A&**U~nj$ja3m|#{f(Pm;rX7_>@a+VEF;j8@9}hsJZrG6pbb$T`UOB*Dx_Zl z$|oygCC)5fR5^e4j9JB#D`%GQubPWXknIY9EdVzF+ybzT0Pj4edBbje*aPq|z(6_a1@_d66>Wgn#V4@K zN?;q4z@{PI4#7JgczXix2oP9t7g*yKyfBT$T7h*yfi)yvc@Z4i;&2aw*a9(Wfq1Y$ zC|1Qs5v1h65yB_*lWPbl@VsAn#5~*NxesO{f;~p~QvxmwI~F{e^LWhTBM)+H=h?;y zn1P7UdPmGy+6~iE?;0<dg{*J&3Yqk_JOFB@9bT)jPDBMW5aCyx+H7%?~N!uY2Gw$8z)BHsd=zkACa(yWSd}3v6P%?K=uNjkbL^!iF!S`OA2Np1(JN^Zx*V CQ7mBq delta 38209 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 YK!?z5r$^f;<{J$$-`EX=Q-SmU0HFwLp#T5? diff --git a/Web/app.py b/Web/app.py index 0b4b12c..9c26acc 100755 --- a/Web/app.py +++ b/Web/app.py @@ -92,6 +92,25 @@ SCHOOL_PERIODS = cfg.SCHOOL_PERIODS # Apply the configuration for general use throughout the app APP_VERSION = __version__ +RELEASE_STATE_FILE = os.path.join(os.path.dirname(BASE_DIR), '.release-version') + + +def _get_asset_version(): + """Return a cache-busting asset version tied to deployment state.""" + env_version = os.getenv('INVENTAR_ASSET_VERSION', '').strip() + if env_version: + return env_version + + try: + if os.path.exists(RELEASE_STATE_FILE): + with open(RELEASE_STATE_FILE, 'r', encoding='utf-8') as f: + release_tag = f.read().strip() + if release_tag: + return release_tag + except Exception: + pass + + return APP_VERSION def _parse_money_value(value): @@ -293,6 +312,7 @@ def _prepare_invoice_pdf_payload(invoice_data, borrow_doc=None, item_doc=None): def inject_version(): """Inject global template variables.""" is_admin = False + asset_version = _get_asset_version() if 'username' in session: try: is_admin = us.check_admin(session['username']) @@ -300,6 +320,7 @@ def inject_version(): is_admin = False return { 'APP_VERSION': APP_VERSION, + 'ASSET_VERSION': asset_version, 'school_periods': SCHOOL_PERIODS, 'library_module_enabled': cfg.LIBRARY_MODULE_ENABLED, 'student_cards_module_enabled': cfg.STUDENT_CARDS_MODULE_ENABLED, diff --git a/Web/templates/base.html b/Web/templates/base.html index 456bfa3..070d7b7 100755 --- a/Web/templates/base.html +++ b/Web/templates/base.html @@ -20,8 +20,8 @@ - - + +