tasks: add task_search command

parent 4752dd9d
......@@ -41,25 +41,43 @@ async def tasks_handler(m: Message, user: User | None, maintainer: str | None =
tasks_data = await altrepo.api.task.progress.find_tasks(
input=[f"@{maintainer.nickname}"], branch=branch
)
try:
tasks_data = await altrepo.api.task.progress.find_tasks(
input=[f"@{maintainer.nickname}"], branch=branch
)
except DataNotFoundError:
await m.answer("Таски не найдены.")
return
if not tasks_data.tasks:
await m.answer("Нет тасков.")
return
tasks = [task for task in tasks_data.tasks if task.task_state not in ["DONE"]]
tasks_message = _bold("Таски:\n\n")
for i, task in enumerate(tasks):
if i == 100:
break
build_time = await date_format(task.task_changed)
subtasks = len(task.subtasks)
tasks_message += HTMLFormatter(f"<a href='{TASK_URL}{task.task_id}'>{task.task_id}</a>") + \
f" | {task.task_state} | {build_time} | {subtasks} | {task.task_message}\n"
tasks_message = await create_tasks_message(tasks)
await m.answer(tasks_message)
@dp.message(Command("task_search", Argument("args", optional=True)))
async def task_search_handler(m: Message, args: str | None = None) -> None:
if not args:
return await m.answer("Укажите параметры поиска.")
try:
tasks_data = await altrepo.api.task.progress.find_tasks(input=args.split())
except DataNotFoundError:
return await m.answer("Таски не найдены.")
if not tasks_data.tasks:
return await m.answer("Нет тасков.")
msg = await create_tasks_message(tasks_data.tasks)
answer = (await m.answer(msg)).unwrap_or_none()
if answer is None:
await m.answer("Слишком много результатов, уточните поиск.")
@dp.message(Command("task", Argument("task", [int_validator], optional=True)))
async def task_handler(m: Message, user: User | None, task: int | None = None) -> None:
......@@ -115,3 +133,14 @@ async def task_handler(m: Message, user: User | None, task: int | None = None) -
)
await m.answer(task_message, reply_markup=markup)
async def create_tasks_message(tasks) -> str:
tasks_message = _bold("Таски:\n\n")
for task in tasks:
build_time = await date_format(task.task_changed)
subtasks = len(task.subtasks)
tasks_message += HTMLFormatter(f"<a href='{TASK_URL}{task.task_id}'>{task.task_id}</a>") + \
f" | {task.task_repo} | {task.task_state} | {build_time} | {subtasks} | {task.task_message}\n"
return tasks_message
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment