1
0
mirror of https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git synced 2025-08-14 00:25:46 +02:00

починка админки7

This commit is contained in:
MoonTestUse1
2025-01-04 00:19:17 +06:00
parent f2dd0661c1
commit b92168e9b2

View File

@@ -6,6 +6,8 @@ from datetime import datetime
import os import os
from logging import getLogger from logging import getLogger
from ..models.request import RequestStatus, RequestPriority from ..models.request import RequestStatus, RequestPriority
from ..crud import requests
from ..database import get_db
# Initialize logger # Initialize logger
logger = getLogger(__name__) logger = getLogger(__name__)
@@ -35,17 +37,24 @@ def format_status(status: str) -> str:
} }
return f"{status_emoji.get(status, '')} {status.capitalize()}" return f"{status_emoji.get(status, '')} {status.capitalize()}"
async def send_request_notification(request_data: dict): async def send_request_notification(request_id: int):
"""Send notification about new request to Telegram""" """Send notification about new request to Telegram"""
try: try:
# Получаем данные заявки
db = next(get_db())
request_data = requests.get_request_details(db, request_id)
if not request_data:
logger.error(f"Request {request_id} not found")
return
message = ( message = (
f"📋 <b>Новая заявка #{request_data['id']}</b>\n\n" f"📋 <b>Новая заявка #{request_data['id']}</b>\n\n"
f"📝 <b>Заголовок:</b> {request_data['title']}\n" f"📝 <b>Заголовок:</b> {request_data['title']}\n"
f"👤 <b>Сотрудник:</b> {request_data.get('employee_name', 'Не указан')}\n" f"👤 <b>Сотрудник:</b> {request_data['employee_first_name']} {request_data['employee_last_name']}\n"
f"❗ <b>Приоритет:</b> {format_priority(request_data['priority'])}\n" f"❗ <b>Приоритет:</b> {format_priority(request_data['priority'])}\n"
f"📊 <b>Статус:</b> {format_status(request_data['status'])}\n\n" f"📊 <b>Статус:</b> {format_status(request_data['status'])}\n\n"
f"📄 <b>Описание:</b>\n{request_data['description']}\n\n" f"📄 <b>Описание:</b>\n{request_data['description']}\n\n"
f"🕒 <b>Создана:</b> {request_data['created_at'].strftime('%d.%m.%Y %H:%M') if request_data['created_at'] else 'Не указано'}" f"🕒 <b>Создана:</b> {datetime.fromisoformat(request_data['created_at']).strftime('%d.%m.%Y %H:%M')}"
) )
await bot.send_message( await bot.send_message(
@@ -56,12 +65,9 @@ async def send_request_notification(request_data: dict):
except Exception as e: except Exception as e:
logger.error(f"Error sending Telegram notification: {e}", exc_info=True) logger.error(f"Error sending Telegram notification: {e}", exc_info=True)
def notify_new_request(request_data: dict): async def notify_new_request(request_id: int):
"""Wrapper to run async notification in sync context""" """Async wrapper for send_request_notification"""
try: await send_request_notification(request_id)
asyncio.run(send_request_notification(request_data))
except Exception as e:
logger.error(f"Failed to send notification: {e}", exc_info=True)
async def send_status_notification(request_id: int, new_status: str, employee_telegram_id: str): async def send_status_notification(request_id: int, new_status: str, employee_telegram_id: str):
"""Send notification about status change""" """Send notification about status change"""
@@ -79,9 +85,6 @@ async def send_status_notification(request_id: int, new_status: str, employee_te
except Exception as e: except Exception as e:
logger.error(f"Error sending status notification: {e}", exc_info=True) logger.error(f"Error sending status notification: {e}", exc_info=True)
def notify_status_change(request_id: int, new_status: str, employee_telegram_id: str): async def notify_status_change(request_id: int, new_status: str, employee_telegram_id: str):
"""Wrapper to run async status notification in sync context""" """Async wrapper for send_status_notification"""
try: await send_status_notification(request_id, new_status, employee_telegram_id)
asyncio.run(send_status_notification(request_id, new_status, employee_telegram_id))
except Exception as e:
logger.error(f"Failed to send status notification: {e}", exc_info=True)