From 19e4ee2e30f85aa038c41839d4fc7ce0e7b526cf Mon Sep 17 00:00:00 2001 From: Lephe Date: Wed, 22 Jul 2020 11:53:35 +0200 Subject: [PATCH] trophies: generate icons dynamically in the master script DATABASE UPDATE: Run the [create-trophies] command of the master script to obtain icons. --- .gitignore | 1 + {assets => app/data}/trophies.png | Bin app/static/images/trophies/actif.png | Bin 397 -> 0 bytes app/static/images/trophies/aficionado.png | Bin 563 -> 0 bytes app/static/images/trophies/artiste.png | Bin 490 -> 0 bytes app/static/images/trophies/beau-parleur.png | Bin 558 -> 0 bytes .../images/trophies/bourreau-des-coeurs.png | Bin 529 -> 0 bytes .../images/trophies/codeur-invetere.png | Bin 581 -> 0 bytes .../images/trophies/concourant-encore.png | Bin 584 -> 0 bytes .../trophies/concurrent-de-l-extreme.png | Bin 602 -> 0 bytes .../images/trophies/dessinateur-en-herbe.png | Bin 574 -> 0 bytes .../images/trophies/encyclopedie-vivante.png | Bin 424 -> 0 bytes app/static/images/trophies/gourou.png | Bin 490 -> 0 bytes app/static/images/trophies/grand-joueur.png | Bin 509 -> 0 bytes .../grand-maitre-des-traits-d-esprit.png | Bin 604 -> 0 bytes app/static/images/trophies/grand-manitou.png | Bin 519 -> 0 bytes .../images/trophies/guerrier-du-savoir.png | Bin 643 -> 0 bytes app/static/images/trophies/hard-tester.png | Bin 541 -> 0 bytes app/static/images/trophies/initie.png | Bin 528 -> 0 bytes .../images/trophies/je-code-donc-je-suis.png | Bin 524 -> 0 bytes app/static/images/trophies/maitre-du-code.png | Bin 788 -> 0 bytes .../images/trophies/membre-d-honneur.png | Bin 575 -> 0 bytes .../trophies/membre-de-creativecalc.png | Bin 564 -> 0 bytes app/static/images/trophies/open-pixel.png | Bin 727 -> 0 bytes app/static/images/trophies/papy-casio.png | Bin 519 -> 0 bytes app/static/images/trophies/participant.png | Bin 646 -> 0 bytes app/static/images/trophies/pedagogue.png | Bin 547 -> 0 bytes .../images/trophies/plume-infaillible.png | Bin 460 -> 0 bytes app/static/images/trophies/premiers-mots.png | Bin 443 -> 0 bytes .../trophies/programmeur-du-dimanche.png | Bin 490 -> 0 bytes app/static/images/trophies/roi-du-pixel.png | Bin 666 -> 0 bytes .../images/trophies/romancier-emerite.png | Bin 526 -> 0 bytes .../images/trophies/survivant-de-la-v42.png | Bin 402 -> 0 bytes app/static/images/trophies/testeur.png | Bin 401 -> 0 bytes .../images/trophies/veni-vidi-casii.png | Bin 516 -> 0 bytes .../images/trophies/veteran-mythique.png | Bin 572 -> 0 bytes assets/trophies-generate.py | 35 ------------------ master.py | 27 +++++++++++++- 38 files changed, 27 insertions(+), 36 deletions(-) rename {assets => app/data}/trophies.png (100%) delete mode 100644 app/static/images/trophies/actif.png delete mode 100644 app/static/images/trophies/aficionado.png delete mode 100644 app/static/images/trophies/artiste.png delete mode 100644 app/static/images/trophies/beau-parleur.png delete mode 100644 app/static/images/trophies/bourreau-des-coeurs.png delete mode 100644 app/static/images/trophies/codeur-invetere.png delete mode 100644 app/static/images/trophies/concourant-encore.png delete mode 100644 app/static/images/trophies/concurrent-de-l-extreme.png delete mode 100644 app/static/images/trophies/dessinateur-en-herbe.png delete mode 100644 app/static/images/trophies/encyclopedie-vivante.png delete mode 100644 app/static/images/trophies/gourou.png delete mode 100644 app/static/images/trophies/grand-joueur.png delete mode 100644 app/static/images/trophies/grand-maitre-des-traits-d-esprit.png delete mode 100644 app/static/images/trophies/grand-manitou.png delete mode 100644 app/static/images/trophies/guerrier-du-savoir.png delete mode 100644 app/static/images/trophies/hard-tester.png delete mode 100644 app/static/images/trophies/initie.png delete mode 100644 app/static/images/trophies/je-code-donc-je-suis.png delete mode 100644 app/static/images/trophies/maitre-du-code.png delete mode 100644 app/static/images/trophies/membre-d-honneur.png delete mode 100644 app/static/images/trophies/membre-de-creativecalc.png delete mode 100644 app/static/images/trophies/open-pixel.png delete mode 100644 app/static/images/trophies/papy-casio.png delete mode 100644 app/static/images/trophies/participant.png delete mode 100644 app/static/images/trophies/pedagogue.png delete mode 100644 app/static/images/trophies/plume-infaillible.png delete mode 100644 app/static/images/trophies/premiers-mots.png delete mode 100644 app/static/images/trophies/programmeur-du-dimanche.png delete mode 100644 app/static/images/trophies/roi-du-pixel.png delete mode 100644 app/static/images/trophies/romancier-emerite.png delete mode 100644 app/static/images/trophies/survivant-de-la-v42.png delete mode 100644 app/static/images/trophies/testeur.png delete mode 100644 app/static/images/trophies/veni-vidi-casii.png delete mode 100644 app/static/images/trophies/veteran-mythique.png delete mode 100755 assets/trophies-generate.py diff --git a/.gitignore b/.gitignore index b5993a7..93d2f8b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ __pycache__/ app/__pycache__/ app/static/avatars/ +app/static/images/trophies/ ## Devlopement files diff --git a/assets/trophies.png b/app/data/trophies.png similarity index 100% rename from assets/trophies.png rename to app/data/trophies.png diff --git a/app/static/images/trophies/actif.png b/app/static/images/trophies/actif.png deleted file mode 100644 index aaebe3a4482e337e87505c520c4171a24ae4a27a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P)yr~A>(6I_H`JoZ;9pzCZNhG}DrQ4!d-?c;mj_c1P` zE>T+jBRaGJo;)YCiE4nbCC>?Eq8gAU&pB$MTmwgw=lGf^&j3nZFN^5HW*m2qOHGtx zfG00a+y*z|Y9fCFv6JUWO(buiK_`6Y`Nuqq%6HTB^E}-LGLgK2uQ4E<=cS3;AS15p zL_P*=eV!Yjecwg-;4 zj`hQ)t_f59{dG9!m6(G}JcmIkg_HJ$+Pi}l zINPUDxDKE(5h{7tcC!CP=DjPiu(8lt>e~|MeZTHXAkge|dmC{@I@=)1GeFec=|I#s rG-p%aQl3qHQ-3zW4G{I;DvrDWjUdh%1VtC}00000NkvXXu0mjfu@AG| diff --git a/app/static/images/trophies/aficionado.png b/app/static/images/trophies/aficionado.png deleted file mode 100644 index a3160ed33060532c2769cffddb2d1c22dc6c09c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 563 zcmV-30?hr1P)NmFJ6C9 zmMnq2WRiQoH8TzX=w}uI0P)5Z03b6TqwE@YUtGKN(+Ah@cDE}NmiYu?!%b*Sq*By) zZfObtkgzua0KMuf0AL|MM%mpYKDl=7w`a<(+36_7V?2TA1^!yfYk>VmuP^%mfPV83 z01$7~0RWFZ!7jwur91pxNLI!ZkgfwnY=!k&suept1VowNIK9vc;AnN3dta7B@Cgjd z{KI}pD}dRpT>$P$7*9Z02UNfL^Lk5Z;@ota>z5@#;t-Jt9s$4idAAag2o8b&nt4_% z3G)efmHFG_6D9jxc}HtL61VvTymD05%&1$LPk^ju-L>#?zfO&dr8YG#6!P@*;+occ z!P$k#g)9lutFS%MPA@ww-OV%T@&{E;EY!)XVh4A4TPr~B~m3(tya8= zNDzle!6iT>OTxAb1D~tbfzX^vNcTdz61t~2mgS(LpL|+?jPtNse)^9u>~i8gNxwWNf8$ZX^TTCba8WP5eLDgbafMS za%vp(E99f`lJ?Rj*F4)LM-tvAcNgwU!S{Wi1Q-s7fp)oEPU1Ec6S?XVDcClklh@cb zksA<9$!lzx$PL6zUSl#*-`ftf$Dbbn^k2S!bvCeQ@)~VIl0U5<0`NY51>oZT30P+X zwv*RfpB(_^)mswEAxV9ACDqJm~s-jcUY%PCkrkwF*GH-L~<3#+|#& z8!)cKIsyI83#C#C09)mTsJqvhH!vLo&yB{+4*T6M01uVQ%=4344FK=&-8YR96LISX z?idin#8IyY!1rYG?*%rCzZu-M7Mt(qt=PC{KnNQX!fvw(BwwL1;jV$WD+8Q@6{#Ci79<#8WME|C02P7&L&X3Tgn9rb4#5HvOC_dOV&xPtaDXs< zt^Bo*XSYrzC;2ufwVk}5-yb_|6-7}<2^x(?PP^T1mobg3lrriP)rw7kEzgQgq9FiT zmS@Ex(GUo=JZn)B)hDojc;vKyf4-e||Nb`0gUm~!x&&bP{G#t%e;s@|?ZHb=M066} z-s8;c8p%)+)gz!;UK5Cb1hlrk@$Wbq$#MJr&1?ST39QB*@aEy!>vwzECSA#$R<^S% zA~uQS2?R$Wh}XWaYI^6eSyc}@w5yN66q5d4u?(@g5^UqG2}}E{XRdQL`3%~tJ+PTK=e!uU7a0^$fPFH zWcgO-{8B`863G)VqflryiM6jq7p!^9$EJhHQD?{Ge%T`$R-0QA*1fzQmFzV4e%XCqgqc%c^-;*+K5yug`vf1)t#k z!MwGSCeF0Tz?P~{0P;OCvnMJE6?|5owT9|R92ZCs@2r~m)}07*qoM6N<$f{&&CXaE2J diff --git a/app/static/images/trophies/bourreau-des-coeurs.png b/app/static/images/trophies/bourreau-des-coeurs.png deleted file mode 100644 index e46dcb7ef3e0a0671cec39a07810178a5a1482e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 529 zcmV+s0`C2ZP)So#f>{x-oZ^F1+O6J4P3YqJVbkqf-8?8SP*X@B+!j_aA7@wt90X|%uoMj zGRY{JCh9LI6&V;DSn>Gh6^Gy)&PApqd(axvOhrxO5R zF&G%_Fa16M;B~$JcfhJighznRQjb_wI`s~M$6VLZPob7+{3EVyhjdgWiDqQ z@SX3OZES0>&8f^$zN*vO`(im>^D1+iY@NwVv9@pOIiBV`)f@tptuyVvRV?)bNDy`% TPtXr&00000NkvXXu0mjfYhUhI diff --git a/app/static/images/trophies/codeur-invetere.png b/app/static/images/trophies/codeur-invetere.png deleted file mode 100644 index c63c28d1e6fe2f7230fdc2ce6687ce5e04f02b91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 581 zcmV-L0=oT)P)_s017 z;o57xtpY@|yrh5k0suHVtQzwlpK}22N(8UKuIq)PX44qA$72Ax za%{}+_x{GgE09DXo8^5i%j;#esbySS)r!kK0E-Gt-^#KFe0^SnmY1CttIpT)VCj9D z!ZHd)?I!?bP#~`d*?eD;HcHXrlJFH^ts(b9;&cB|Kq8}tw5;s365sFSlPCDz!7H#( zjWWa8;w~P40HpWjtQlKYr@<@W9fh*iI%#VsTVD{o0@jX7-cq>Qu~B90Z}_SP(7L z(Ml&rB@X3T?#eZHmqy5+Z^~=a-0{BLyGyQy>$)xipw((Iv1yt?G=r%?uKJG{lQzI- zo`+1d8+qpQ*X|b+Z5TgWdQ)reHp-TJ`fRp12mew#=?1NuxjMjL`$dq zT4+Y9;ZFBsaL{FEU|FJ5h3G)m1dr7lpYeMAhKX&b2>@6XYq}fcUIN30V`CRUG?0KM&aUu4LEPeu#*!0YbMr5hGPd(tzxaPV@~Be;HAHBd3b$ zURrz%=wcW-R6m}0THr0^^+noAR_sCcXns?YDG~Lv;pOL?zEF6*@PL|+sIe9sM@*-pyyHRCJ{e@ zEX#;!=Gk7ax9~m9^C*b~+he6^y7W826R1la>a~CBwA-yiA|k3c&lkS`Gk$d1PtQZAeVHy_LlTML35aVz5_-OK zd~Gu{CBr1nPTEfYLpE6h8VOW&2ymQlOxrx?QTxpcr~Nzby9R-TWXHN=$4|hz!=mT$ zIg+s2)kwrgfa5>zkpHFVcj7q$+MNGBxFaH>;b?O9=`<(Ld5&vQNZOH)6897;jSFW) zJOrd1R*MGgQRxg+R??Xa#}hsQYYuCT%hFn~%6b~+@dQtxHW&=NsuDh#P74mZmw1vKv~a66NTn-VvU4Ux8b#b8JczOE@C3w+%r`no;{8FZ)M?|86g&a*{eVWIY!s4InW}{M4ULrq&;8-( zgNW==$TtVC9sw4TSal7Qt$tLO01Ku5dZ)H07*qoM6N<$f^R?>?EnA( diff --git a/app/static/images/trophies/dessinateur-en-herbe.png b/app/static/images/trophies/dessinateur-en-herbe.png deleted file mode 100644 index b24d5dfbed25fd5aad492a27e6ca1c42560b232d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 574 zcmV-E0>S->P)3`9qj&*M-h&-l2RleFK&y)vAQo}4qaZjGii3k7I4I)cAm|`2B0317&pOUY?|==W$uST#`SRNi0AOQc z-Pdu_L@_t1Y&SkX0K~w+sBQ<-yj@Y+$#ICPek89wOUo? zfN2%+O5T*$tzBi?Gfq;v6QlFnCv&FQr_&)}-_Q&j`<8Op*f;gVCUgVD{#(V6ANEj0isFX>!UI*GZ-HMvxtx+TOv)1ger+8o}DZfcwm#R9EO6{+vaHK8CNd zM2MvBi9C>WF$}|i8R+|dbX}I^9L?ZimRkRiBD4V>c}{2(*#O~+JSUWiY(N@$&QufX z4J@P&Y&Or<^26cXTE5%ut>ta|De6!92HuKdblp0J3>o4kDDtid^Y)I8_S742&O#Is zS0p%mtVq9Y-*(j-5YIxsY_~6SRXrkI15-0>D5xK%jGdl=dx<>9WFj2{Jn|pwH30ei z9|~%h^1$+d>`#$fBdIMMcLVQ2Q6)_G){&M*q-CwPi0D!8hMD>vo z(>_tU25#kCJz2{iyRS+0r*A-tX)SGn*0#jIKcUH|l(ESt^|1+VfXM$=@#F`xSFc8; Sm)h|F0000T&pTYL?!Hi`O=I+Z4%&Z|n3s01j_c~vPA;R#%?4M67~pI@^+ z_wn`uU_FWB61cm6njO>8uIm5*ec#XC*Yis3>+^lleH@Pfou}iJI;_t&&s&5TH`>GmSHjBLJXj8UVn}?ZcmO`T6(+ zJg2-oUrHL+>RKt@cYFfg1zv?+DyH+SA$B{t^+sXdV;b;`>!xjhgSo`6{gtY7T)@3}KGkEpkD7oI@z zRSC-LTI;IBS=svoOIIoAsMZrI*LmuA1gO;2X_8Rq>+1AbtM|z24$Vr{UCK+V?$lpe g#R*XL-ztgv235Umvem$=pa1{>07*qoM6N<$f{Y{NuK)l5 diff --git a/app/static/images/trophies/grand-joueur.png b/app/static/images/trophies/grand-joueur.png deleted file mode 100644 index 4004b23e2a0aa8a8a3a981a5a8c8852aa9d64f95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 509 zcmV4uWSW)<~e06VHF@$ zndg+HgjJwu<~ge>(Om^r%{*sWCAz0T*_r1QRl;}$`l^8K{lhxyA?4%cDc9dV1$f5q z!|O^b5XW(@pVx;gV!Q%>qY(Ymq8UF4F0|t4xvGq-czk{Xuu#Hy1*D@8Whw{)p*##j z0D$Lt0Lt$p;hQyS@RX( z1-#9x{81DYdf~&*Sg>z#CD^>pZ%ihF{WTZ}cKZ~lo7rq8*qJ`T6yUT^0UGBC**w7U zeIG!!Pf$7i?zle`{5zYkf<65{6Kvk*Ip!-sYYM&=Qq2c6{;M+2%T>?ieS*`SwGd@k zHO|ZYy7R;PbWbZzhVcqyP9=)&$aMDuGH7ihgW5dN-W{0?)u{xnVwdIe<}TOY`cnye zGS@Wrbh>Hm4NcS7Tgs-fH}y?Zx&nm#T1Asz)Yjf1Z&ZH=00000NkvXXu0mjfYL)Lb diff --git a/app/static/images/trophies/grand-maitre-des-traits-d-esprit.png b/app/static/images/trophies/grand-maitre-des-traits-d-esprit.png deleted file mode 100644 index 2bcb7c50c92e7ac6d158a997862708f9b4158a73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 zcmV-i0;BzjP)yI?f7Sgt-E3wr!+bNdm%CW5>$*rlo6SbC8;wR1AA_?*R{cd;aTAc4mx`N2 zL7?64`0|_0CW;*wiTn~^=BLw9~|_+n)Z_YE`ipiv@t6BxD>q z64@ibZ_L_$y#4?H>3vega`{yn4G+?9cAAr+?V#V^aDFu$#H((bYbu52uk%=TA3^ zZ6YJpY&HP^>-E~xFFRA{uLF=`=1D?c&+e0WwR!>YvlmRY&l;DtA62pkNJRd8$qs>} z6m|Zy=9ziRvJ^Xe1Y|GFTHzLEZ-mW%aVkOSp3tW0b8-K!*!%tdq+ihUpzQa66nmo6 zQO`!5uJ?U1<8m7H`+WexPvWFfPayOg8c9S-p8rtHxZLZQ!jQF3<(Ghz-;+E_);u$; qlP=7HfK>6OKA>VJKo$R1@u@G!sP6>McSn!_0000b??vh~d(r;>d>3gs5<9?8Md7kHBF*E;NKv`N<1^Ry4*1CUo`Kpq< z)*J9l=YVdOF@vK*>fR+7Y002m1v){XGAj>iU0Px$z@7D%C z_x_vbSFOaIr3G%>G#+#72!enc$2|l1k0%Y033m)kYUf#46ZRXRIzRq80002LeJZ^# zy|~m$-02@FM=j>UCIYbd)Tncx0Vno#hOZYDDc#>Qfu0?Y|L~~A~h^~pz zD5<6*K^-F8HGrs^2*XG^uDTDfc`4jCfS9gMi0Ue&+Igfo29UoF4f$sxQ*=9zG|zx3 zp0`y?+^GSiuAP{|dIQGqi4lCdY)aXu+fxG~*d5z+ou{zgz%P?Lpt87{{89h_002ov JPDHLkV1k&j@V@{6 diff --git a/app/static/images/trophies/guerrier-du-savoir.png b/app/static/images/trophies/guerrier-du-savoir.png deleted file mode 100644 index 9dc5c6ebbb300eba180d7a1ac866eaa57b419294..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 643 zcmV-}0(||6P)^JZ7xM1E>aNa z7)?0@%|icx4f;c#pZDC|qvyeM`dQ?;m*NDixs|i^ckJ8I1I$ zRv!s@ZGb1w@!G`D0O6E8$14+qXCS(FqI7}V^#$AgZcQw$tXXa!90QbmHFu$9v6BftA``OShR&CliIY*7HEigkQ-M+8b~^ z7vhP`Oiu~F#^o*mz%)xe-H__Kf%XPmw*i{ttS&d7ZS$?fiA-t{0ASoa189#EZs~T# zMtcK}ZGb1=en0aEptE;UrPsAG?F~rVfIRt{)#1Zc%5ISwh(sbnS(ZF!xKgi(=if>Y d!>?6b@(<$|H9Z|!_6-04002ovPDHLkV1l14C7%EQ diff --git a/app/static/images/trophies/hard-tester.png b/app/static/images/trophies/hard-tester.png deleted file mode 100644 index dec554244e15c54421289e2469dc198717ea4ea1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 541 zcmV+&0^?uijWZI5=UkcRL~? zqIFF_&KofP1196)+|{lV=MDVq#H!WD6zl`4)ky9Wvfci)&*J;u9gDF;%bnSI1D&ep zd0APViL&ifAaC~#RP8{Xg;W*QotfmAH^qGewr&SZ$Fi+66Y_T7K-u*_&vPOox)|M9 zO+@#8`5bw>Z@{#n+zBtwj;tmkjhdbWnr8r&Mg`<8!J;tDqj?5^>VC%d*azqra{;T8 zZUi*f0FdYJs;5^Sc#rC4P~yCSKflN%syj*BCRArKU0%&GFfZ*Fnu@evDVI(ArGD91 fHvroIRx#uYigV>F=F=&u00000NkvXXu0mjfJSF=R diff --git a/app/static/images/trophies/initie.png b/app/static/images/trophies/initie.png deleted file mode 100644 index 38386401e87d4fba056c1e885d2ab222fbff05f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 528 zcmV+r0`L8aP)B z@2sK7KA5|Qehg5{piT-ylw2_MV*r+$Da{LaPo|>qGi%?V@B;$_P~|h@DY9?)ltM5D zu`vN_tDv`ulqaFLg}6v^2(H#BIvBn+F$|EKC){4+5ApTuH=yuI%>yH+H3|cy#>B2& z>#5@+9PYpchHnhO0I@OQ<`#%op456^#EeQ1-4>#>#wNBD8gV0YB)3N4Aw=Pb98Pmd z1S2m7$OVjyp)@gfGzMURRy8ppFyv!^!(?6kWzRaI3OfwC+c+ewm)aT#ola@GxEh8i%&008JTJn|ghCgL+d z5#`Wsyj>f4jxQ7O8K@gr-wys25d;9O`4_vHg6(c1AG+X zxgkZ`w+Y*57_WhP2W8~XpI)3Ue1Ck@`aL&D+tC`>mKtcZvGrw&{QKRt(}njhZUN{` zNCa=-PY!7BDtVtL1J55{oyRTqb^!buAS4qUUMGS#Q0IW_{k(6e&)cA!AQRym@E!Tr zhsVzL#p+VXdMH-djt;7U>5+bzY^Z^r)=XqnBa=;boSvfuf z93FY;p2e(h008s(VQc$r<~Q<0d=nQ O0000WP)@74iXF^8LB}VOtM&UXqpBQ zTQDHvQim=|Dw%?Ga0#_w*DRS5hj^6l^F90CYf^bh|5NVW`|i8k|GRtdE*WaK+iiM) zy}dm}_W69h*oF%|v3iEM*lmM)lutZ$+ z<#O3@{r>(w0Mpac05qFT0IJohEq`3kz>w1_B$1TJ*XwmfzqGUjKqiwhT%Ss%6xnX% z1%u1L_V%_Sd%a#;>vhKF=H{HZ;eG~eSD{ODsmUG~w z$lu@iXlvt_cW)YAfBf`0V4aEnXTWOYzr9G>+W7i|&U4_jOt_u_(<(GRJ`RA#<1y5m zo%#3Q>xS0_vr}sI5j#2)_d<7o17?a?ECw9+yv1Ts(M#Rdp9ep_MgUk??nEvW3Mu-<#jv3r9g>T`j*bAh zJT?aW-DA6-0m)`P7jn5A0EvXXGkrDdEO&HBq-SPk6j{(eRY*SQOxTUQ;D$y(sZ>&A zJqOGnIZ!ARlsQtI?1cmYEIm6KLd_`C;oYGpvc#z zrT{2zYyfa+bQFMBYir7Vk{bf2kr%k00mnID2EDV>asErahORRpIRCebMf?VC`y($C Se^BTE0000Z+NW$ diff --git a/app/static/images/trophies/membre-d-honneur.png b/app/static/images/trophies/membre-d-honneur.png deleted file mode 100644 index 88c0bf31e714dd1e2cc37fe02406ab6163273e13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 575 zcmV-F0>J%=P)qkqu0=CL?IUqa=NQ2XbAC2 zR!fjmFp}FdJ3Bk$v3vI~_rCdN?*H3w=DxYITrQWxK&y^pGMok1H5y-TH2NQ?(pIA3 zo*u3E2B#S)biTqF z1K`cw%X=;(QM#E^NjRjc3E{j~uWs5muda%ZfRJ$PHuITCvg-uR6IR7bAgILdBYXEv z6?p>M=YUMNnNa{5J7@Bqd!2uDKmN^Z89B5uZHYjE1PPgJIWH7>0`G#y%lZz&7tH_w N002ovPDHLkV1jUU46XnG diff --git a/app/static/images/trophies/membre-de-creativecalc.png b/app/static/images/trophies/membre-de-creativecalc.png deleted file mode 100644 index ee9cbbaea4959abfc0c4e17e3f215c6e6146ecc9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 564 zcmV-40?Yl0P)Y5Qd)>LDa^Gph5&|BUmIU#73~NuohAX))sPKjWn*DwkwUAWMPe_A zR)VCEAX)ZXPnTw;Sa+jzbSruh%=;g+iehX6Wn5tbZtF zn}8m9UA9T21Vmnu*JX=DO2BXAb%iAnc>?`GZj z`RObGYU&k$$G2esUIttJldZrrs>Y1wGbIsU0%0qxEqRfM9|5J5>kYM9t!K{sRIyle z9hW6sd|j-~(@*#3Q7{|$td_#J%$@mQ=9_;0000NklkPH@tiVhK7Qwb=DScM1y#i9k3PK6-VrC=8a-NZ(m zED6+tG})a=mwViE!8ZE_d%P?|whNpZD+HCDv}Y+w?*8 zdfigaWHS8-!?wOW^*<`sYXZ9Sy1bGoj15`JjrH$9M4%%l=XIHq5a)}9aR8c)4*=YM z{uYP`xOZNc9SJArtM7jTTbY1g=XD7QQ|Cp2C$QaZ1>N~aAOHAD;95$h;MRFj;0YM_ z0p0oO(kuY4%FjFn)@N3?&Wi$1z_AaQjyCTK7XV0HZvwFTdjNpXt!V&`tg7paOGN<2 z3MEVZX5%T)aen6UvQgad5^y`tj}9dOh#gu7pz&)L0N-}1>x)Y{01naDG< z0rt*I9(FT!@Cjs(?gn6Z&pykI%MZ$Z4P5!5jw_|BfODI-BN2Q8a+1p)24HY_1c14l zs?GMA#LDDJYXZqLuIlR~f=@u&-kk~M%&l|khRlqnBx1L%w; zcbT%1kO)2jIq^%PTCD=mYPA4}$K#up^LcO1>k2*r>CMunOi8f+nB_s)k(U5`ZQt!0 zs8*{19TI*Oo>53nT$7kz06OdX$;=f1cHHP5Nbdt)72cUxWJ*F`&(F?Jso!z2YoJsr z2G$rmOrHdNT)ZCW2&t~K%_h5v~#AbSI&z9 zPr&yV8n16uBCmU^qKJT~UtcMm6cNzXuP^m>iU`;#`nQUq{sE`KD~?wXdL#e<002ov JPDHLkV1jUzO{M?< diff --git a/app/static/images/trophies/papy-casio.png b/app/static/images/trophies/papy-casio.png deleted file mode 100644 index 961eea580b69a8e7c75a85a779bbc4f86352e0de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcmV+i0{H!jP)+L-x$-{uE z1q)X3qRu;5#fN+hVD~N($c{Hc;UD4uj8z@KTLudMcVq)-8bZ8 zVAKNx4G87|^fZXG6uLJ9h0l8XI!W>{aPcESC!v5L9|Jh+0bBsRhNU(jwZF@UqsB{j`&y#9zJi~Tj_ zu$qe=6EJt+iizPD1GFyZ$pyG#V)(?sU=4Y6fF2V=KL)53^2Zh|B1ye}XAMR6!Q4Ic zV}M!)by66jZz1w?Mq|q}Br?W>kXcwh*N?HnFA9h#Q$Bxitz8Aqq$2aGFaZ7{_wvmcZ%;fVkM002ov JPDHLkV1l9D)(Zdt diff --git a/app/static/images/trophies/participant.png b/app/static/images/trophies/participant.png deleted file mode 100644 index ebf3694458131e4e4cd8848e3dfadcd64cf3e055..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 646 zcmV;10(t$3P)J@9afm4(aT6UCVg@N` z7b_|Vad2q|5u_BfDCa6D#NqN&-X(YM-Ft~}clk{B{@m|(e82bp+@C_P*XuC`y4|i) zE|<&WNW+1#ME#ExM(sdY`7oQFmnhzC-;Zriy#ohF6-cLinDeuNl=^3#9RMC|eKv}ddIz*)KzGl#cXksctk0YTV7k5xz>#WIX`e2>Qu69{ zvDtONcAhuoV|xvNvp+Z0`u-TG_MOo=kv#{-t-K&(;7p~h)PE>05A7f2M0OmoRsQXx z$BFvaSMLCDrLX+a((&LzO0}S#Al@F;A!iRdk$wkU@A=ifqNaR(Jr4{jFGxN9Edch4 z_lCxi>rTG|t^q#1yRMX*E8mrJqj5x6dUKn zg)QLUSU6S+>VNwk0DkzvvvSnEFJxyHk^@sG!g$}}6>qhkE9GYM8UTw=F9PslNnJ-w zl^3$(fRNOQjg6Mm1?UtP^0ONiOr7w&Mr?a{9gs0#N`9Zn1l!q3h?<2=^XkaH1HxZL zEZ@i_&SOY^9I&NOSTgEo`xSHIfa^-^`u#Zd4p@IDK6mr3Q)1V*+d_UFh(fnwkNTg9 gi33qg{#G&M59qqZA9ma%DgXcg07*qoM6N<$g2XT|cK`qY diff --git a/app/static/images/trophies/pedagogue.png b/app/static/images/trophies/pedagogue.png deleted file mode 100644 index 0bd30dec152f09f736c51b80c1b571c6d39f936b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)YLJKut1-Bk%=45%dxgvVjDJfG<)6`;YW( zuYI?6BzNo2Z0)7j<^As6Yws2%Ns?dzj7Fo>alKw&#BH#$kY4|hNHY*c5dc6o^E{F5 zGV+qLO@wDaM&5cn91fjsT$YJ&4M=3fiEHE~MNNcjz&hsRI8GhU%e*F**8nLRd5Nou z@C<0=RoJp%PH7`R;=O@YtwE~?66V0+-J{cuulIH{`?FT~a1B^z7dd9FY#m<$m^LBn zN?!lo8HpzI3!d~=)G-s+vEjyI1k0N8VY@OS%fpzIENBEqg{bwI02{u^L6yXFGN ztgHv0F9!gC{gdC>sNHU-+PmG(%zj)6XBOg@c}+;x`)+kWk~j8)tHkOXnP!5K(P%Wb zGusD)Cjj=RQKG#odv8Fk12QMH$Z!^Vy*dK`G@Cm!`>WMDGtWz`ktg9AAdGG zDAx5M?+xUx%uQXOtQM5DDzUsPbH1&KlI1Zlxj>vR`s`Hg&=fU5TuoHFlw-_wAaD1Q lR6F&Kn0IJgss62E4L-+O!Xsqw3B^! zHn5xhIzMD@{%<|r^=38x*L95B&_R@|?vR~a_-;K8S&wzIFNL&IYc=8~5 z1Bb3B#!lX~&vWuO5UbjJZ`Q``^NVXDB3eFNI$b|`17a20Rkh)LUrJsYJLP9UJ9+eJ z8?Jqxo5;sNtZF0STWvTnk-mYpZ70nKq-rC*SwU#>oa7BSkA-aTI=}h)G@iFwF0^h* zL>U+eu0pn|!=DAMJ`b{~Lch-devz*U+qgbf@*sHw-lI|UeOtYcojge1fcPG;JrkHg z@tM`@>QSq0qjpFnZ@~GxP*qi1k2g)D(jega^*VV2-eV!{q&dFp2KgI6-|zc=w14Uh zjuX0Kle~d{vqBR}F#yUcWgumx{;yFt0Ls5r9Qgr-53C)( z&YNUc`@PuX$!0Z8(?kWZ);eQjOo_|TQIWI$A*8(8cOSZhVqeX%znWpS&J58s?<&jA14J#Jr|aj8lyg_~%{fOJ34jhvj`IAfkP zh)vuFOw?~+9LK1R?Dp<~h=|sg8zR!LD!HiMz;Wsc{wsMJv`@(Trb3kca)8H@k`002ovPDHLkV1muH$=d(` diff --git a/app/static/images/trophies/programmeur-du-dimanche.png b/app/static/images/trophies/programmeur-du-dimanche.png deleted file mode 100644 index 3fc9680f84eebaa04453ab2710e8900560af97e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 490 zcmVSsQ1S(2%g51D#Z~}&kk}e&S15k5G|7yKf zN|~Lfaz!Fs0@U&2*-RVYbF*o+r^}_)3-l!s9sxMdIc^e&+*g%od|lU8_lHLS8Y>5& zEX$NqkpM4l9gsQ>!Fj5#B*G^^S6Dcf=eg4t;o_RsiEs&Udz-!l7Egs}9Q5*h+iH7H z;E;BhoTqImiPMv*)&1`uU)p}}3G8y9>waG9Jm$XC`NiF3s~^?Le*#5OXseL4T2QC@ z#xuqBp1`jvMAdc9a#aH29E7B~h($ diff --git a/app/static/images/trophies/roi-du-pixel.png b/app/static/images/trophies/roi-du-pixel.png deleted file mode 100644 index 875742ef602aca86183c208ef80681a0bf86ada7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)ONqq{G*du z051C$W93KXA`tb3>F52i>(xJJ0Brp{Z&|PR4s_fH(kd@}{e0Ru_5*M{^DKVD{Fk=% z-#rIhDgSY%0KnAJdduqzhwqG@b9WptRo<3Lr2;@Un~jzKZM1z|^bx{$z*c$FwqM8( z0dUeN7bjHqH^%@Nda>K`dbkdB+U6_2F968&#mhzcH`C*>^7Z98AR2Lng%3LbTsF?d z2|*kQ&w);rmpP4!PWhwiFCbE06i-6!3*I}>oQ=AU^GV9TUHc9sE3b=clG*w1K&e!6 zniIQHUiwrfx6<}L?;UWK6Q@;Pjbcg43*I}BIttk;uNyB+6&HeuLd`xP|H#ydv~Av2 zarHd~?;X&t3#m@Xh$tNHJp>>#Fbvqod0TX=+u=GOh!fK0-!G2<(EB70!0xB|s=`ex zFNE)atW`=5J2qK&;$UwT_%8$NFskS<-O=&hfopRiHTM)G+C**s2LP{&gHB(_b}ubF z2ZX_=695$Qb;WNh&L#&{0 zs=rH%_YO2iV%`3&?M}MsPQ5F_alkeAU#l4M4}X^`b`>!*H2?qr07*qoM6N<$f`)N9 AAOHXW diff --git a/app/static/images/trophies/romancier-emerite.png b/app/static/images/trophies/romancier-emerite.png deleted file mode 100644 index 631e9e594bc82b6e0759ab14108e79fe6847e572..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 526 zcmV+p0`dKcP)kzay-Ag_mW;)Ns=U}fXQT%I*#MGipOB7l2&V^<=TKuUgFwB zV}R(AmzbK^+&#%W-xx4WUZOLhN`7m5AHX6TD4V=QnqcxP?e)z2+pB8;7SVv~R6UrH(lV zt}k|S+X>GAlkfFHyx z8}o!F{5LQjj}u^i%+tWjN4|+}^p`vh5S0nlyUz3DRe|o#vCW z{%P(5s!E=OV?f2m!~awnqN|eL8<_hh<{VJX35mR~>M<|z-hlPHP!!#{?8gk#eS`1~ zn6AjS*zTQqZ$SCWoUZyvY^zV%UCVF{m{RpFrHaOYq}i!A#JK^|{9C0Uzv2doQZj)fmgz(-^9kIoo)*&es9D9qhI+MYFO8Gr3%dR{I)#|LygnW zp~_Jk5=tB3mFJW;u|EULIM$jA5fPoIDQo;)__ z(h{ROZnGC)4Z2i0Jw?n4ZNNM+M5)RQUU3qrG_?+rw|A8go*AAgp|_9Qt;kyU3uR75`GPU zt)&pBdjm(@&Ap@$@RLH?lNhv4rIDGq3Tq;N1^`TyN}=V;{iMnRzXq&tM%JE3PftJg zJjbsAU^Sst*gB4z(2nQd0Ix`E+#3+TnUm0ZxAZ-r(Y*olFErM4C}m<`=bMFb{teVl wA#IH$RUY^^0C-Qb1UMn|)R_jR#Q*>R07*qoM6N<$f_N;qBLDyZ diff --git a/app/static/images/trophies/testeur.png b/app/static/images/trophies/testeur.png deleted file mode 100644 index 22ecb265994999300ae58eba5b097c31e9866921..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 401 zcmV;C0dD?@P)1N zn;O^s^50FIrmeCpOQ?Z7&nxXDN$R)^{M2&R25E&>fJUAYS_xGEu|=K|N(ohf8+ppR zN_@Tof1^n)<3Lk1^A7+56wn8VO`94px46v4Lze&Uc=oyueOKiv z&@|iA!O3qvnmo13SHLzt;5*}+)27I}B3}U{P18y{%d$$lsa}X8PXTUCg#JZQ006-6 zbo$c&y5Fo z#sQn3>+xLVDM04~uC);QnIdbln{wM^r^r*lge_-%XL4M=Z${=CS*=DrdAl0*MQfo4 v`gJ-sxVZXGHsD|1(MQZ=T&j;op1vmMC`(`4|}W zz(50{^8k99Jh1aO3jg9q{G|*bdAYaPOCdsF$j1P|dH@}u*Ra$Eq}JFYCkAkZeEQ<; z6ggmKtS44+Vq;?X#{i*_KRdCOA_o}fH#0CWkRKC6J_c~s1Ei+;jn^NMWU;@d99DDD zV*=(5Trn~HVu04=Jh=c@ObnkG7_1?W4$xy_=*IxHLjKr-MI@>B@2sK7KA5|Qehg5{ zpiT-ylw2_MV*r+$Da{LaPo|>qGi%?V@B;$_P~|h@DY9?)ltM5Du`vN_tDv`ulqaFL zg}6v^2(H#BIvBn+F$|EKC){4+5ApTuH=yuI%>yH+H3|cy#>B2&>#5@+9PYpchHnhO z0I@OQ<`#%op456^#EeQ1-4>#>#wNBD8gV0YB)3N4Aw=Pb98Pmd1S2m7$OVjyp)@gf zGzMURRy8ppFyv!^k}@P)=aK|#bp@MA4hC$YG=6ol&9 zK?QNu#o6H;IFd%K%l+t2>`%GpyRY|9PSgKH9!u~7xN+q z__;^~3Ue6%z^K0q0QhW_nfLhm+D#ikhX6@84(AD^=z+dSHW&M~8|lX3Jb^!JfFyH* z>RYWA0N`Y^z_jb`Ld(?}03e&qb{$VvA0Gm$BIlzLkx*4~2*{jYy|}gt;CN|XSg%SV z{sh9Df7mYz+f_Ba{&PZ`l5n0tO4gt|=daptS_9`YW5RxU5)_AwMEnRuz0aFUMj}20 z{;Tu6coOat=#}%$({ru&bCn&d@hEQh3G}L?ilw8ba-RULX4|#!a=*fqOXUxyoX;WZ5XM_@2Zh(>3A0cXzyAzhug~YaltLd=6^8~d2q2Wch%ciou-5wB-i9fMT_xUh6Pv9GzXyG`1rN6HL0000< KMNUMnLSTY 1: - yield icon.resize((48,48)) - -for (name, icon) in zip(names, trophy_iterator(img)): - icon.save(f"../app/static/images/trophies/{name}.png") diff --git a/master.py b/master.py index b19c2c3..5e617c8 100755 --- a/master.py +++ b/master.py @@ -10,6 +10,8 @@ import os import sys import yaml import readline +import slugify +from PIL import Image help_msg = """ This is the Planète Casio master shell. Type 'exit' or C-D to leave. @@ -37,7 +39,7 @@ the database. Type 'add-group #' to add a new member to a group. -Type 'create-trophies' to reset trophies and titles. +Type 'create-trophies' to reset trophies and titles and their icons. Type 'create-forums' to reset the forum tree. """ @@ -183,6 +185,29 @@ def create_trophies(): print(f"Created {len(tr)} trophies.") + # Create their icons in /app/static/images/trophies + names = [ slugify.slugify(t["name"]) for t in tr ] + src = os.path.join(app.root_path, "data", "trophies.png") + dst = os.path.join(app.root_path, "static", "images", "trophies") + + try: + os.mkdir(dst) + except FileExistsError: + pass + + img = Image.open(src) + + def trophy_iterator(img): + for y in range(img.height // 26): + for x in range(img.width // 26): + icon = img.crop((26*x+1, 26*y+1, 26*x+25, 26*y+25)) + # Skip blank squares in the source image + if len(icon.getcolors()) > 1: + yield icon.resize((48,48)) + + for (name, icon) in zip(names, trophy_iterator(img)): + icon.save(os.path.join(dst, f"{name}.png")) + def create_forums(): # Clean up forums forums("clear")