From c6bc67a98dbe102f64aa482df8bb1218b41b0dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=B5=D0=BD=D0=B8=D1=81=20=D0=9A=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=BE=D1=87=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Sun, 26 Jul 2026 17:35:37 +0700 Subject: [PATCH] lk: add 3rd month option for timesheet view --- config/__pycache__/config.cpython-311.pyc | Bin 0 -> 9570 bytes config/__pycache__/config.cpython-313.pyc | Bin 0 -> 8605 bytes lk/handlers.py | 12 +++++++++--- utils/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 144 bytes utils/__pycache__/ad_search.cpython-311.pyc | Bin 0 -> 3985 bytes 5 files changed, 9 insertions(+), 3 deletions(-) create mode 100644 config/__pycache__/config.cpython-311.pyc create mode 100644 config/__pycache__/config.cpython-313.pyc create mode 100644 utils/__pycache__/__init__.cpython-311.pyc create mode 100644 utils/__pycache__/ad_search.cpython-311.pyc diff --git a/config/__pycache__/config.cpython-311.pyc b/config/__pycache__/config.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..195a3255e09e1aa6b0d04a35def5a790f7314d66 GIT binary patch literal 9570 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 literal 0 HcmV?d00001 diff --git a/config/__pycache__/config.cpython-313.pyc b/config/__pycache__/config.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b3cb153dfc45cb094470d7e59e4978ef6e881f2 GIT binary patch literal 8605 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Выберите месяц для просмотра табеля:\n\n" f"{EMOJI_DIGITS['1']} — {m1_str}\n" - f"{EMOJI_DIGITS['2']} — {m2_str}\n\n" + f"{EMOJI_DIGITS['2']} — {m2_str}\n" + f"{EMOJI_DIGITS['3']} — {m3_str}\n\n" f"{EMOJI_DIGITS['9']} — Назад\n{EMOJI_DIGITS['0']} — В главное меню" ) @@ -403,7 +406,7 @@ async def lk_router_handler(msg: Message): elif cmd == "9": set_state(user_id, "LK_MODE") await send_dynamic_lk_main_menu(msg, user_id) - elif cmd in ["1", "2"]: + elif cmd in ["1", "2", "3"]: log_menu_stats(user_id, "Личный кабинет", f"Просмотр табеля (вариант {cmd})") await msg.answer(lk_tabel_loading(EMOJI_DIGITS), parse_mode="html") try: @@ -411,10 +414,13 @@ async def lk_router_handler(msg: Message): now = datetime.now() m1 = now.replace(day=1) - timedelta(days=1) + m2 = m1.replace(day=1) - timedelta(days=1) if cmd == "1": target_date = m1 # Прошлый месяц elif cmd == "2": - target_date = m1.replace(day=1) - timedelta(days=1) # Позапрошлый месяц + target_date = m2 # Позапрошлый месяц + elif cmd == "3": + target_date = m2.replace(day=1) - timedelta(days=1) # За два месяца tabel_report = await asyncio.to_thread( get_tabel_report_text, diff --git a/utils/__pycache__/__init__.cpython-311.pyc b/utils/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e4e048755a61e36a6675355d5bc3c7bfef956c2d GIT binary patch literal 144 zcmZ3^%ge<81i6f1Ss?l`h=2h`DC095kTIPhg&~+hlhJP_LlF~@{~09tOIbg^phUl< zs5CV>KQAplDZfO&v?Md9SU)~KGcU6wK3=b&@)w6qZhlH>PO4oID^L%})M9=h@qw9< Ok?{iqj3{CTiU9!MMjogD literal 0 HcmV?d00001 diff --git a/utils/__pycache__/ad_search.cpython-311.pyc b/utils/__pycache__/ad_search.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9753f664c2da31adc7413b6911585b54c33b8ab6 GIT binary patch literal 3985 zcmcguTWk~A89w6~+v97(#sSua#cTqJ(>7PS>@_Q9G2mTPVs49>FR)1e@p-9j`XMB7vO+&w^caPTK_jmNn{v zevbdp&k6n9f@_;zbwBP~T+}155ft?Poy-(u4O>LSS4C_%M|0V%n2?jXtigs(pAIrc zhbSfDc`-JfOv@sUC9cG=G?8en5DGSUS$Ln_0W*(e2C_zyEzJ@_sa9DgBO2*Gvk3L~ zT5UxnJDP0>Daho(+H5h^w!8_J`|KhI-r%h#*dtfygR=Tdbw&L|eW)&LH?_Hd_I>z# z1fLc43FJ>8e*~3*P`Dqq%+H8&ESa6oO~TP|1qlv@&&MU{S`G__BVLemv8iNM2--2( zwqZ-;veU^K!x0L{B4g*iGjg<`S_!w!|_q1JFg;cO@px$w@pFw9{CuW;fLIjq3* z?txrh9*}WCB)(!(IeDNUC)3hET!=|x94D^y=dT-%7+Dzf$l_OE7+?@dN5GWO=bnxa z$8}%#?DX>ARlNYaP~gT z^GLf%VEL(9q2T;eU@R-+>w#YA_6P09+K&LFD}h1c>M^WmC|Gx6SQ1&oYo34B-g~3? z_KjljW7crh(G#1BOQPXveAGi3cfvja!vsp$4aVS`OC;zdpfhaKIh={hhFyfkBmo^< zIw{FPEB28=#DQTY*ntKDOM@fxNaP2Q^9$fzq(@tG4cB87Zuk(?k{0PUm=dZvk!O$U z9$q-29vo8r!=!bH_^I_4eIAX{#Z-^)NN>aaG=Z+x3B~x_4jI-?irNTlM#; zUp`hjulYxH|7dm3zM365eE&e4!}(8QYScK9yM69>4Ka?x>m7R*xSzSTjzfCKA=TY@ zYAiJU)#WLj!X0GEb`tclq+p7I7SBZi%k?Oj0iORAV~zqqsR><0mLT^k!e3HQxrI5H zrIiGWd4#}j+yGfdK}BwJlqsCKchM?vL{f7y={Y_s5Zi&y&&UajVS zGh7kwu)N?1hD60$zh73o>?*I68}y*+eoQPZM$kJ@KwAW+hM6j`!ao;FDFjKSw{EFZ_RWH_MIVBmekLl-gKU?g&(Q{JqbI(zQg zU{B%}X2ImnC!?gV0iCq?b6WK`9w1Qf!E%r0?bE$|rEgaIhn6oaWtXydF3exLd#OC4 zb@u3;Jxh$<*{62)eb!T&SZ{m1d_rp**4u_l->UIIp=-Q_k)%Y%*@2c{FHNIz+ z?^&{I{GiScZd7b zl)2?IPsR6K8b7J?lPW)1b+x?=%VTo<+cW%cp~b9Zw=jlfM{RSo$SRf{*o;*`JAvZe zs#z>44kn}t7=yr|k(5m>|AsLvg%4rCc8me~1Qf;!5ga3`%GfrdIQlQ@5w#HyuzJbH3Vj1gl0?O<&OKODxCHeP*70) zl%v^J)BP$L24+E`*)q2rdFZHwwZW70`)QbFTg{tJ##