From 119ba6e25fe847663ac434f73eeec9a4f960b5c9 Mon Sep 17 00:00:00 2001 From: Cyrille LOUARN Date: Fri, 10 Nov 2023 02:56:50 +0100 Subject: [PATCH] [1.9.35] --- CHANGELOG.md | 10 ++ README.md | 7 +- debian/control | 2 +- src/usr/bin/tyto | 2 +- .../program/__pycache__/check.cpython-311.pyc | Bin 43981 -> 45747 bytes .../__pycache__/domain.cpython-311.pyc | Bin 24658 -> 24801 bytes .../program/__pycache__/tyto.cpython-311.pyc | Bin 2591 -> 1504 bytes .../program/__pycache__/wip.cpython-311.pyc | Bin 35666 -> 38822 bytes src/var/lib/tyto/program/check.py | 33 ++++ src/var/lib/tyto/program/domain.py | 36 ++-- src/var/lib/tyto/program/tyto.py | 63 +------ src/var/lib/tyto/program/wip.py | 167 ++++++++++++++++-- src/var/lib/tyto/tpl_files/styles.css | 24 ++- .../__pycache__/logs_fr.cpython-311.pyc | Bin 4645 -> 4662 bytes .../__pycache__/website_fr.cpython-311.pyc | Bin 225 -> 498 bytes src/var/lib/tyto/translations/logs_en.py | 7 +- src/var/lib/tyto/translations/logs_fr.py | 5 +- src/var/lib/tyto/translations/website_en.py | 11 +- src/var/lib/tyto/translations/website_fr.py | 13 +- 19 files changed, 271 insertions(+), 109 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f6b1e4..03a4276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,16 @@ Tyto - Littérateur # CURRENTLY IN DEV (in devel branch) ! +## [1.9.35] +- Working on creating modules +- - Todo last: metas +- check +- - target: domain, wip, www to check directories and files +- - - domain: create .raw modules and wip modules (.html) +- wip +- - html values are now in wip.py +- fixes and more... + ## [1.9.34] - Working on creating modules - - fixes typos codes diff --git a/README.md b/README.md index 3e75292..116e566 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,18 @@ This program can ve tested but not at all usable. Lots of work to do... tyto ``` # Create new domain -- create a domain directory, line www.domain.tld +- create a domain directory, like www.domain.tld - Go to this directory - type `tyto new domain` +- type `tyto check domain` +- create in new directory domain ".../articles/", an article (see tuto below) +- type `check myfile.tyto` (or use "wip" instead of check) ## Working on - 'wip' action processes - Create HTML full page from article -- Create/Manage modules (header, navbar, sidebar, footer) +- Create/Manage modules (metas, header, navbar, sidebar, footer) ## ToDo - thinking about creating an auto top article menu from titles diff --git a/debian/control b/debian/control index 1104f3e..5280379 100644 --- a/debian/control +++ b/debian/control @@ -1,5 +1,5 @@ Package: tyto -Version: 1.9.33 +Version: 1.9.35 Section: custom Priority: optional Architecture: all diff --git a/src/usr/bin/tyto b/src/usr/bin/tyto index 2d28505..541fdf3 100755 --- a/src/usr/bin/tyto +++ b/src/usr/bin/tyto @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -# Version: 1.9.34 +# Version: 1.9.35 # Updated: 2023-10-18 1697613100 # Tyto - Littérateur diff --git a/src/var/lib/tyto/program/__pycache__/check.cpython-311.pyc b/src/var/lib/tyto/program/__pycache__/check.cpython-311.pyc index 0e09008d0fea17adc67891e620ff29afe9831a73..73017bf0933b55f420670ee47dbe6a4646e1ed56 100644 GIT binary patch delta 4668 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 delta 3354 zcmZuzU2GKB7541zjO|^o<3Ipo5@&5NX6)b}AfO@w2J>S>V^i#4Xwz=TyJLIe-JRvk zEK63E3@8dDM5*W{0u-gtrb<$QT3}lq`aoN$RbSdhN~%P?ZIp`sn)V@5A1WC|>G|%M zwNrIve{=4+_nv$H?=Al|^qUVu^>4@H(JKD^?pVKl@>}QY8@0RV+wbbyNR_#woX}Qj z+B;%f=(P5*_-UwFbcSQG&`?S5@}Kuz(-4Qk+r(Sp_UKZUu$BM4!{Wp6KCw5_C?=wR z-XSA-*Yl-r6S+ijULeEX^PY^@Cmf#)9)Dk>CD^AiBnX;N!vh#BzYzOVYRp~o@o1Uvy~2CQcomDN_kpK{5g zE*_R@eLI`a@WI{G!((%$eAx3X-%I+gZ)K7bPR91=YvSu2ZQc8MUPgJAe6Q&EQ_3W1 zq$ZM{?X$~#lC?S4b6BF4rylX6j=nx1L9?H5n)aJ!G7j$E}Q$R%X*KB|PJ% z_)z$Px|u;;VpHeZ=s}PGSx$Gpp|=czG%|dklcy90x}s$`W9LkR@}jkOYjg^`0Bg$= zy-#WVYna??>eLSYI)DmE2dG8{GbF=MvBb287$)XJoxuvg7s`Lza8#R7Zk*k~j8dr0 zqd;zy5c|N4>YQ6tHke?kQ*2NRCodeTsi-UtZx%}ddpV`NNhVHKePUEcmVRW!&h9=n zUB0s^724oofjXPM!elAj=6R!LRJnr?DM|y>;a>tZC`Pul?o@hA@YvL)mLeB3c?Ma- zrYCb&)~1s@^mK*XHl%Zm&{r;?a=}7A`?z7En|TYFUd6}8`MDb?62G7;J9sAr>ERP&Zml7WCT4! z8dfsnip_izyH$RmkOciqM0${g{PT5u(QR7yIBnv#KbB5R_7TH}XO4=n(*-c9- z)=RyR&-3kYOI)+p89~j6-`l;>ry&fmyZp$+rw`4%hcQekMOejFdX>r1pg|B^QqoQ6 zPVZw~8vxOr)7N!%>@Z6;4ou;ypw*ay#nKq;AKtxZL|Lx9L&MBAmj;H#i!P;uytlcb z&!86uc1uw20NMen-7VO6n|U%swyZ{(SecCKTU5qUmGZYhRqQwGDwl$N!cQtSJ^C1H z0%s_3*&aiNvb{7cmKFP=P*dr8r<^Rl+Ry=$W;cPU{1Zy-n0L%9F4);9W|Ujbixp>^ zV~8|;8St#=JKMJXbtX%(q^iHI8F$j9*TAU>3bM^B8Nn1?#GXqGvzr;_!e)ZQAl^K? zd69EeF(?l$WJ3&fpY$Cc_uc>TnXGoav@_}OMdy63VZ>A`o8JiM$+!U#p#!xd5~rwz0|G!M8scS89jt8fQ{vzmz!#1 zf5%ug;u-ObSUrPIEUR}8^$!dm8Y$IUxfI{>$R<@a20LQ?_Jm4Fl}HjRR4en$WkEW{ z=J%-9_dmIG52yVTP;rjbGgb~&%JJ}|_>ZXHqEZZPg+2o)_o{Y+T$0gw`TSf6(o9`M zHT1FAcA+U&NhMk;tP2~XBai_2Zu#36LgBhJlV(JQx_amj;`+rQ?R|0oVt@Pu*da=2 zyt+jkxYVkzVe&memo96EMcw7qnk#xPx9A^Q{EAzCra8}LTho{f{PY13hFFW4!?>DS$>`5GyIYq z#T1lVa3Lv&DG#m21e6q+tIdy9oFQZ5{3x1EBBwn121Im;x3BJuDQSSegv0$DdW}M)w>U9SLp})sb5T9wf_KUp@YE%#t_;;2RXwXDS2@w4MR?7q7`xFLJIcrN bUzK-X6EEDj`B06v@sp|wG?$Ov+@<{&1dmqW diff --git a/src/var/lib/tyto/program/__pycache__/domain.cpython-311.pyc b/src/var/lib/tyto/program/__pycache__/domain.cpython-311.pyc index 3368d15f39ff28b118d961e1a07dbdd0982d1368..ebbefbefd41e61d267a14dfad944c59364fe3da2 100644 GIT binary patch delta 2214 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 diff --git a/src/var/lib/tyto/program/__pycache__/tyto.cpython-311.pyc b/src/var/lib/tyto/program/__pycache__/tyto.cpython-311.pyc index 67d1412edc28cd94a17f3843b23d9756f75d88e1..467b6a17bb668ecd4fed0cca591682798a8e0637 100644 GIT binary patch delta 228 zcmbO)@_?IfIWI340}u#r_eovJGm%fiY6XxtogsxGg)xUA3PLkRF{Us@F{Lm^F{iLZ zv81p@v8J#^v8Av_v8QlEainlYai(xZaZOCIu}Ede5&)S80x4W`*rEhexTAzpc%p<; zc%wv8_@YEp_@l&91fs-K1fwKUgrX!<7=sx!g*QIf&BUiEb&EAEzbLo3hy|#9b0fPg v<78G&LmfjPj}eHA4+Du0%#4hTA50h+g)T4%Vxq~xoC`P`SQ}W2^nr>20mCwC delta 1321 zcmZux&2G~`5Vo72rcNA^{uf%<8bzY0QB2>AI%ibLaDO_P2Ic zUAMlY^iBZ}M zH7L_MROlk;bP1|-8E()OsL@rZ(=}M6>##&OV42>86?zL+=_ahvEl>}Yo%OH3e$0)W zpQ@sm+s!6vM5NiYG;{k&(1}k5j2y*%4`sd(&+&T)Mk6vTGJVj*9I&)Tq?s+bHQNE4 zU<|m&#DxPRa${z90zYDvNotOW>4dS{@t8#%A5e;1z`ZzACSU4i z3kS@35jR6jJ-CgZi-lKAw$vLV?y`5)9J{f{466}gWqar&>SLiSwi^WTbvdOTQ3WGX z;;|QXNj=tL5m7#}Gh%k898oTY%$)9KIh1^~Ql49)N6w>*9zK)R-t&T9uuFhNozNY` zZs708xXWxD^+W(CDnl`k7tGF>;VRp6{Wk_V3RzbS0}(XIxzJ3v-@D}Q_MILxNECL? z%ef8Cb<5!|Q5~Nn?Gmo*cLSU;%^b`!37!34Lk8E{+1pt5i<>!uIUQ7j3aosDgJ7N7 zg8G-N&3Pp+m_H=GbKG`9$q?>m(0#P>)9^K`wK2HQPbyl??Hm<@tl>b@=8raiPvw@J;mX;Yfr z?7j0O%QkHC44-E1+_`h-&Yih;=Iy^QUHOK|^P=1B;NZLQWSjEt)8{-DCKrFM;l1EV zuB%3_?5dTQbk)g$u4QsnSG~Nnt3j5!LNedMg{m`E{3?sn27Lwi|C=|=bd||ZRq?Xh zivo>rz(J=3A74&S?C{f@Rxj_O|6?t$bLZO0S2T03%y9#*T$$8r0eZ_?VwTOag{Ey~ zW?7W2^oXt6o$p(dy!7|Bwa(&PU3Sp* z_WS79K5aM4PR&doDK0Thl+bexrGiU#)0gZ4p;T+6Q$-bNp3|Ch-8fG6z`)`aFvCk| z3id7HDELHbAW*AC7F>+1{ZG!?D!O0gm2uI>pYLJlKc+);Y>o z(xmHNzooZd={=$s50fJiO&LtZqnZ-wi^Ua{zUitjx5!G*&|zIj4r#hDL}I$7FG+e8 z`oFHOwF1Gl)P*C;G2Jf5h|;Si$uSj;BS{jm!!N1GK?Dlw8hXy%U2sFNO$(J%LSR}5 zObUU_7Eh1K(gy9%W?n25Ozo?%4;qWq0o?ouKJpNhLJm@j)HMie0d$9|MTw>k$FzR3 z4yl_Fc43nxo*Y&P*@A>N`eAW3zk^nJn;Z`y0pV)qQSUWV9TUd50@$(@Ko^OcipMlv zjH?=nrN|?6MOm%mer!j0BlB3zI z`T!Ohd^?g6ewGOYE6w}>y?5EyVcY-bvP1k3-C5scNkgMOGgkkgr5LTMTVjLJ!wNy2 z$pHP~%5|j&u=rVolL)5}K1YL%Urf)L-p~;(ZJ0QYrA5;)BMmjwEzF(-M<%$?p+d3) z%a0=LMc9Wx5a#BkTZUt@)~}2GO6+hytVUmqu4?LZv?3QmdFBgE7cF8|@y2y4HZT)1 zRhTyL5vlA0nl zHnxxfB#Lz^{xKghe1o|Ra}|aDNBEEX*o>GfI3LHpkwHa^s)Wt)5Qs3`o=p_zNX{cL z|CzHsxd=4f!n%h_$n(fS=<1eNMZ?tey_TTkMWiB}%=kC&7X5}%k!V6-8U?YW&?mPy z@68+f5EAcVZKjFt>P;q&DntWA!&X9f35i(^psd@F93j!+taYiawa)oEwA?@&y3mGY zncc0wv-lszVe(3$Dx*T3Dv?@x@S&v-ejDqS@KC(P0Y6FjA?U=n`AxU^6{99trEemK z7;cWoS{xx8c^ay^g+vqJ`Dim;jHXgbLIz*>=Z7}(YpKw7#qqb$KoG=CrtLFkmu^a` zx;Yhv(`J-zY+vfoMP&qL02`DZYL8le0jyp0JMEvhy=CRN^PI+GJP;ukff4D&j*Xei z9T!bP6I9;mSSM+C&}BajcUJc6GmnCMK?Ix~E1@?#-1J9-4*JUu7r%t^i4vD=x@3`s zOXg^mwi)H$10mLYoY%s+{v5ZBJIf#V@^KT;1#L^7K2V)2PXy_$hfDb|P3{ZQ=DkJb zJ8~_M2A~tNPczz&?e+4z=s)eN;p^$kd$+oA9kbs=1C4&FR4`3oOD!#U%O%jOPlj3+y^$8v43DqZ=q?6?B!`V#y%zV+O3QJZg@ zCa_HzeRYS2Uj0l3eLh-2Kid`LC3>YR)c!K`X(hh|>?Ah<$*&Mlmd+1{n)L#R!SP66 z681d79iqDjlk!kpiS#Q`83G&I-lvh>677NLO!iaX{&y=}*&Z>7<*M$;)_POa-2FiN zFK~z-AzVlJ2?B0i-HD-v1^uBxas$a*kZc)(JwXi3-a#rmOMTd6PQq>>Kc>%g_tkH} zCWHj2ukHowjdSnYIJ0+3D47;YCWR8H`Ri%ffkwW8ZaeVZ()#PZrI(guq3*h`X4Y=O zmikq*5Av(cmRSx#;LOhV2YAlxIT1b?9uLoWE5-QyoPat#k)OYxUI#1>uI0tc#?*ep&oTLCwCu0GAi{zgp z;EAYPW2%~p_A2wjI6E4d@m$a=WFbY^xtt#E2~_n!AJqbo4sbm+`-*yh2Q`+32m_sti@0w9%!B>Ou)S{1<``$L*#M zCyw(6>Gu+W^b0`kWI4*HBbJbrktXe!mb{7j+|Cj({E@E$VN{SBrQ3Y-ZK1hNy@{Ef zF7A#V?THeCDut>H^&}`8qcIbGh}Ajk%nMo=plS$gewJ&o94qgZquA?@2tT2pPu?&0 zVR4}u=Qcxv=>X{jvntC8T`Xp^2|;Kt$1xlR8w)hmNU$>=4D{KYgKkI-7f5I!1iVqH zKc=sz_M1v~W-1?l++1+rwfm+TTc?B_)54BPVMpfqp*9{&{;Q+a^@~*Vsxio!qa?z{ z=p_mycp(!hqU(n1`F*r|_zBa9NdNxSGU~h6lPMfoDbm&_YMeDVxUohV?TKT2nt5Cu zP)F?@hQuam)D)78C2PI;VJufBi>=nY!(-tpm8VG~cK4vjCMfAPZ7>yyCl4oe>+tY!WQfE`Gjc4l zmM43vWsMecvz65CgVB))JHw1b-_4AfNKy@iO3P>Mnt)$0UN5}AHaRdzA@g&AwZN6g^u)qbvgZ^wXkFx zcYt(*7ROD;g)xB~88c0|@PV;joKcO31A6gu1#mNg;dv+hyA_p!1vEWjgIoVRVp<%tjEUKhY#S57 z7S1sXPVBffVH&d>x5}Op^Mq>$y`4=YRqkZ9c zOzMqCRdrKP1#&L#LNPrUYzaqmjd(&zi#P`H7I7pf^%JFUQ?O1AN?J^dD_E4E)>5a2 zo1-l(^VDq*BvZ%YN}pzIT6WRuh9%QId$-@;v9oh~q;=1p&h72Gne7-@sWdlgt5YLP z`iH-iLd66!Ok-c`)_AN}NvMkM%odoK4{!uCs!jfYMN=xJyK@Xo zGT9IG{KYyO%^)j?rZtTiNrE+z9G3C6`U>(|Va$+CH=_}Cm)f5k1~ag+jjP?OIFJ>d z1`^RhMYr`1kqCCyZE|wZC|R(ss`!G%;vazVW^fDTBfJH>C#^mOBaL&jHqN_zJUnYQ znVpy!*xq+>&Z09-lfu1MN1yAvl(_CFoOUdk6z;jU_PM_4s#Vtm!Ao7!f#%6T^WT)d z;(sM@4gTH~-|&3fGg-W6Jp8`Md6%ADd3NPYaoKgRZ`xaT-COa@#%b@0zkc*<-80^$ zvsQCO>8&*6F{QH%ELLv`^ef>?E1%hUe$SWoOxCWODp@~WvVN9xn0*XR92-|pZ=12Z zXF0poH{&fkzwt{OFZ4}$>tKM1=(M-tboq^n+6%4=u9=D@GrquepY%fMSN&JJUb9X$ zZl3aOnf7gYbJ-g!bM*AyDc|~O-+Iud%72S9`~08`fW_+bonG<*Xj4#fX7H)xndA>V zwQqZBCpxA)p=nR(YW1{d<@ko{o{}?1e&CVb_DB=nDNo(B2et4tjBl6`J!c!<7X6c= z|LQ*cyEbxdWU_Y4h3yx%&(yBGu>FIXWh*9>q6r1? z7MyNPM>j&5ZSPO93|VTx=(AFSYkn_0;%KpCB7~dW5jHYtDJEw(yHO89iyS+eCu4Uc zMi-L)pWR-8J0G}XgNGOL({pKGI)5Y}4;%*oFjxz7e8-}JV~M^blakT%8%HycxhOLCf7YOm6Rr-IZ5Pf?PQBpD`xa(?VVXbnnH5{ov* zqdiJIuE;&dHU)tvb~uW5ZCs7BLbipSj0g^G={glAj0`w&=m;9Tut0-srecg9#mJr) zm5uW_#sa-^@&A+cORvGsL-9Lg&S}UL#OH&oday<)zQqy6yk>!_#+{0Jl2Ob{HR?Fl z0#E8o8`rqIEo}CN#!lh<(#>1hECajblcDuv;FIM$nvD=ktqAw!j|s^Mlv5|BFu7$e-T z83)=YOUSQomVj->KDwhRdpTzutLL?*Q3;SeZ579T*kA7LB9c7!xSE5c=j7ZLCg zkUhN-_GrPL7}(YLBWz$dH8VIFOYT{&z+wXVDYpJM!YXXtj$i@MZ7C}}a!0gOoI0QK zJMfJb{&DJV+Wgda3+~|yX1O^Sq0XoO(c2K^kvb1M={rxiw{H`c^Y_hibI`{ZAm1FU nbh*sqw%ICok$K!bTP3oeLR+zU+%sE}B?es1aU1>-%zpk42JccB delta 4383 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 %s """ -page_tpl = """ - - - -%s - - -
-%s - -%s - - -
-
-
-

%s

-
-%s -
-%s -
-
-%s -
- -
- -""" - -module_header = """ -