From 6605957627f33d44d21fb1abfb612448625054ac Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 9 Sep 2025 01:47:53 +0300 Subject: [PATCH] Add logging for user updates and superuser status changes in CRUD and admin handlers. Fix user attribute indexing in database operations. Enhance user creation logging in user service. --- database/crud.py | 14 +++++++++----- handlers/admin.py | 7 +++++++ services/business/user_service.py | 2 ++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/database/crud.py b/database/crud.py index 0edef9d..e8b4d05 100644 --- a/database/crud.py +++ b/database/crud.py @@ -269,6 +269,8 @@ class UserCRUD(BaseCRUD): @track_db_operation("UPDATE", "users") async def update(self, user: User) -> User: """Обновление пользователя""" + if self.logger: + self.logger.info(f"👤 Обновление пользователя: {user.telegram_id} (is_superuser: {user.is_superuser})") async with self.get_connection() as conn: await conn.execute(""" UPDATE users SET @@ -284,6 +286,8 @@ class UserCRUD(BaseCRUD): user.ban_reason, user.telegram_id )) await conn.commit() + if self.logger: + self.logger.info(f"✅ Пользователь обновлен: {user.telegram_id}") return user @track_db_operation("DELETE", "users") @@ -386,11 +390,11 @@ class UserCRUD(BaseCRUD): chat_id=row[5], profile_link=row[6], is_active=bool(row[7]), - is_superuser=bool(row[12]), # Исправлено: is_superuser находится на позиции 12 - created_at=self._parse_datetime(row[8]), - updated_at=self._parse_datetime(row[9]), - banned_until=self._parse_datetime(row[10]), - ban_reason=row[11] + is_superuser=bool(row[8]), # Исправлено: is_superuser находится на позиции 8 + created_at=self._parse_datetime(row[9]), + updated_at=self._parse_datetime(row[10]), + banned_until=self._parse_datetime(row[11]), + ban_reason=row[12] ) diff --git a/handlers/admin.py b/handlers/admin.py index d74eae4..2092785 100644 --- a/handlers/admin.py +++ b/handlers/admin.py @@ -441,9 +441,12 @@ async def confirm_superuser_callback(callback: CallbackQuery, database: Database async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseService = None, validator = None): """Обработчик снятия прав суперпользователя""" + logger.info(f"🔧 Обработка снятия прав суперпользователя: {callback.data}") + try: # Извлекаем ID пользователя user_id_str = callback.data.split("_")[-1] + logger.info(f"🔧 Извлечен user_id: {user_id_str}") # Валидируем callback data if validator: @@ -474,12 +477,16 @@ async def remove_superuser_callback(callback: CallbackQuery, database: DatabaseS # Получаем пользователя user = await database.get_user(user_id) if not user: + logger.warning(f"⚠️ Пользователь с ID {user_id} не найден") await callback.answer("❌ Пользователь не найден", show_alert=True) return + logger.info(f"🔧 Найден пользователь: {user.display_name}, текущий статус суперпользователя: {user.is_superuser}") + # Снимаем права суперпользователя user.is_superuser = False await database.update_user(user) + logger.info(f"✅ Права суперпользователя сняты для пользователя {user.display_name}") await callback.message.edit_text( f"❌ Права сняты!\n\n" diff --git a/services/business/user_service.py b/services/business/user_service.py index c1f9ce1..6ce51ff 100644 --- a/services/business/user_service.py +++ b/services/business/user_service.py @@ -77,10 +77,12 @@ class UserService: chat_id=chat_id, profile_link=self.utils.generate_anonymous_id(), is_active=True, + is_superuser=False, # Явно устанавливаем False для новых пользователей created_at=datetime.now(), updated_at=datetime.now() ) + logger.info(f"👤 Создание нового пользователя {telegram_user.id} с is_superuser={user.is_superuser}") return await self.database.create_user(user) @log_function_call(log_params=True, log_result=True)