Compare commits

..

11 Commits

Author SHA1 Message Date
652400e50f fix order module
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-26 23:01:02 +03:00
95195c2749 fix order module
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-26 22:54:46 +03:00
9979937113 fix drone file
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-26 22:44:54 +03:00
be80c4044b new inline button for order ,message "finish_work_on_order"
Some checks reported errors
continuous-integration/drone/push Build was killed
continuous-integration/drone Build is passing
2025-09-26 22:34:45 +03:00
6549c3d70b fix state value
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-26 22:21:47 +03:00
cc520caef5 Merge branch 'master' into dev
Some checks reported errors
continuous-integration/drone/push Build was killed
# Conflicts:
#	drone.yaml
2025-09-26 21:29:27 +03:00
51eebcc165 fix env
All checks were successful
continuous-integration/drone/push Build is passing
2025-09-26 21:20:31 +03:00
ffe5e2e938 update orders list message sending 2025-09-26 21:20:29 +03:00
77a00d7623 clear and fix database modul 2025-09-26 21:19:30 +03:00
369bd7a6e1 Revert "clear database_engine imports"
Some checks reported errors
continuous-integration/drone/push Build was killed
This reverts commit de9c0e6724.
2025-09-26 20:53:36 +03:00
8604774741 fix imports
Some checks failed
continuous-integration/drone/push Build is failing
update search_by_item and show_order
2025-09-26 20:43:02 +03:00
5 changed files with 21 additions and 21 deletions

View File

@@ -4,6 +4,7 @@ from aiogram.fsm.state import State, StatesGroup
class SearchForm(StatesGroup): class SearchForm(StatesGroup):
search_option = State() search_option = State()
data_to_search = State() data_to_search = State()
sent_messages = State()
search_result = State() search_result = State()

View File

@@ -1,8 +1,8 @@
import os import os
from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine, session
DATABASE_URL = (f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@" DATABASE_URL = (f"postgresql+asyncpg://{os.getenv('DB_USER')}:{os.getenv('DB_PASSWORD')}@"
f"{os.getenv('DB_HOST')}/{os.getenv('DATABASE')}") f"{os.getenv('DB_HOST')}/{os.getenv('DATABASE')}")
engine = create_async_engine(DATABASE_URL, echo=True) engine = create_async_engine(DATABASE_URL, echo=True)
async_session_ = async_sessionmaker(bind=engine, expire_on_commit=False) async_session_ = async_sessionmaker(bind=engine, expire_on_commit=False)

View File

@@ -17,7 +17,8 @@ orders_router = Router()
order_operation_base = {"add_order_photo": "Добавить фото", order_operation_base = {"add_order_photo": "Добавить фото",
"get_order_photo": "Получить фото", "get_order_photo": "Получить фото",
"get_order_components": "Получить список комплектующих", "get_order_components": "Получить список комплектующих",
"get_order_documentation": "Получить документацию" "get_order_documentation": "Получить документацию",
"finish_work_on_order": "❌ Закрыть"
} }
order_operation_update = {"add_order_documentation": "Добавить документацию"} order_operation_update = {"add_order_documentation": "Добавить документацию"}
@@ -121,8 +122,8 @@ async def search_by_item(message: Message, state: FSMContext):
reply_markup=create_inline_kb(width=1, **{ reply_markup=create_inline_kb(width=1, **{
f"show_order_{order.id}": f"Заказ: №{order.id}"}))) f"show_order_{order.id}": f"Заказ: №{order.id}"})))
await state.update_data(sent_messages=sent_messages) await state.update_data(sent_messages=sent_messages)
await state.update_data(search_result=selected_orders)
await state.set_state(SearchForm.search_result) await state.set_state(SearchForm.search_result)
await state.update_data(search_result=selected_orders)
else: else:
await message.answer(text="Заказов по вашему запросу не найдено") await message.answer(text="Заказов по вашему запросу не найдено")
await state.clear() await state.clear()
@@ -131,16 +132,8 @@ async def search_by_item(message: Message, state: FSMContext):
@orders_router.callback_query(SearchForm.search_result and (lambda x: "show_order_" in x.data)) @orders_router.callback_query(SearchForm.search_result and (lambda x: "show_order_" in x.data))
async def show_order(callback: CallbackQuery, state: FSMContext, bot: Bot): async def show_order(callback: CallbackQuery, state: FSMContext, bot: Bot):
order_id = int(re.search(r"(\d+)", callback.data).group()) order_id = int(re.search(r"(\d+)", callback.data).group())
orders = await state.get_value("search_result")
try: order = next(filter(lambda item: order_id == item.id, orders), None)
async with async_session_() as local_session:
result = await local_session.execute(select(Order).filter(Order.id == order_id))
order = result.scalars().first()
except Exception as err:
logger.warning(err)
order = next(filter(lambda item: order_id == item.id, await state.get_value("search_result")), None)
if order: if order:
await callback.message.answer(text=f"Номер заказа: {order.id}\n" await callback.message.answer(text=f"Номер заказа: {order.id}\n"
@@ -150,11 +143,11 @@ async def show_order(callback: CallbackQuery, state: FSMContext, bot: Bot):
f"Дата отгрузки: {order.end_work}\n" f"Дата отгрузки: {order.end_work}\n"
f"Дата создания: {order.created_at}\n" f"Дата создания: {order.created_at}\n"
f"Описание: {order.description}", f"Описание: {order.description}",
reply_markup=create_inline_kb(width=2, **dict( reply_markup=create_inline_kb(width=1, **dict(
(f"{clbk}_{order.id}", text) for clbk, text in order_operation_base.items())) (f"{clbk}_{order.id}", text) for clbk, text in order_operation_base.items()))
) )
for message in SearchForm.sent_messages: for message in await state.get_value("sent_messages"):
await bot.delete_message(chat_id=callback.message.chat.id, message_id=message.message_id) await bot.delete_message(chat_id=callback.message.chat.id, message_id=message.message_id)
await state.clear() await state.clear()
@@ -185,7 +178,7 @@ async def send_order_photos(callback: CallbackQuery, bot: Bot):
media_item = next(media_path, None) media_item = next(media_path, None)
try: try:
await callback.message.delete() pass
except: except:
pass pass
@@ -222,3 +215,8 @@ async def add_order_photo(message: Message, bot: Bot):
await bot.delete_message(chat_id=message.chat.id, message_id=message.reply_to_message.message_id) await bot.delete_message(chat_id=message.chat.id, message_id=message.reply_to_message.message_id)
except: except:
pass pass
@orders_router.callback_query(F.data.startswith("finish_work_on_order"))
async def finish_work_on_order(callback: CallbackQuery):
await callback.message.delete()

View File

@@ -1,12 +1,14 @@
import os import os
import asyncio import asyncio
from dotenv import load_dotenv from dotenv import load_dotenv
load_dotenv(".env")
from aiogram import Dispatcher, Bot from aiogram import Dispatcher, Bot
from handlers import * from handlers import *
from keyboards import set_main_menu from keyboards import set_main_menu
from middlewares import SessionMiddleware from middlewares import SessionMiddleware
load_dotenv(".env")
bot = Bot(token=os.getenv("TOKEN")) bot = Bot(token=os.getenv("TOKEN"))

View File

@@ -17,7 +17,7 @@ steps:
- name: dockersock - name: dockersock
path: /var/run/docker.sock path: /var/run/docker.sock
commands: commands:
- docker build -t myapp:${DRONE_COMMIT_BRANCH} . - docker build -t myapp:${DRONE_COMMIT_SHA} .
- name: deploy - name: deploy
image: docker image: docker
@@ -42,8 +42,7 @@ steps:
commands: commands:
- docker stop myapp || true - docker stop myapp || true
- docker rm myapp || true - docker rm myapp || true
- docker run --name=myapp --network=prod_net -v /srv/prod/telegram_bot/photos:/app/photos/ \ - docker run --name=myapp -d --network=prod_net -v /srv/prod/telegram_bot/photos:/app/photos/ -v /srv/prod/telegram_bot/.env:/app/.env:ro myapp:${DRONE_COMMIT_SHA}
-v /srv/prod/telegram_bot/.env:/app/.env:ro myapp:${DRONE_COMMIT_BRANCH}
volumes: volumes: