From 405e663da4d39cfdce0ab47f2e344ad71cf37f43 Mon Sep 17 00:00:00 2001 From: "Choi A.K." Date: Sat, 6 Sep 2025 08:41:28 +0900 Subject: [PATCH] migrations fixes admin check-in --- .../versions/21c6fd6ac065_admins_checkin.py | 32 +++++++++++++++++++ alembic/versions/69ef23ef1ed1_init.py | 0 .../versions/7506a3320699_channel_table.py | 0 alembic/versions/ff9722e468e8_models.py | 0 handlers/new_post.py | 19 ++++++++--- 5 files changed, 47 insertions(+), 4 deletions(-) create mode 100644 alembic/versions/21c6fd6ac065_admins_checkin.py delete mode 100644 alembic/versions/69ef23ef1ed1_init.py delete mode 100644 alembic/versions/7506a3320699_channel_table.py delete mode 100644 alembic/versions/ff9722e468e8_models.py diff --git a/alembic/versions/21c6fd6ac065_admins_checkin.py b/alembic/versions/21c6fd6ac065_admins_checkin.py new file mode 100644 index 0000000..ae14fe6 --- /dev/null +++ b/alembic/versions/21c6fd6ac065_admins_checkin.py @@ -0,0 +1,32 @@ +"""admins checkin + +Revision ID: 21c6fd6ac065 +Revises: eeb6744b9452 +Create Date: 2025-09-06 08:41:08.145822 + +""" +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision: str = '21c6fd6ac065' +down_revision: Union[str, Sequence[str], None] = 'eeb6744b9452' +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### + + +def downgrade() -> None: + """Downgrade schema.""" + # ### commands auto generated by Alembic - please adjust! ### + pass + # ### end Alembic commands ### diff --git a/alembic/versions/69ef23ef1ed1_init.py b/alembic/versions/69ef23ef1ed1_init.py deleted file mode 100644 index e69de29..0000000 diff --git a/alembic/versions/7506a3320699_channel_table.py b/alembic/versions/7506a3320699_channel_table.py deleted file mode 100644 index e69de29..0000000 diff --git a/alembic/versions/ff9722e468e8_models.py b/alembic/versions/ff9722e468e8_models.py deleted file mode 100644 index e69de29..0000000 diff --git a/handlers/new_post.py b/handlers/new_post.py index 5dafc3d..198f409 100644 --- a/handlers/new_post.py +++ b/handlers/new_post.py @@ -20,6 +20,7 @@ from sqlalchemy import select as sa_select from db import AsyncSessionLocal from models import Channel, Group, Button +from models import Admin SELECT_MEDIA, SELECT_TEXT, SELECT_TARGET = range(3) @@ -162,14 +163,24 @@ async def select_text(update: Update, context: ContextTypes.DEFAULT_TYPE): # Сохраняем исходные данные БЕЗ изменений context.user_data["text"] = text context.user_data["entities"] = entities - context.user_data["src_chat_id"] = update.effective_chat.id + if update.effective_chat and hasattr(update.effective_chat, 'id'): + context.user_data["src_chat_id"] = update.effective_chat.id + else: + context.user_data["src_chat_id"] = None context.user_data["src_msg_id"] = update.message.message_id # Дальше как у тебя: выбор канала/группы from sqlalchemy import select as sa_select + user = update.effective_user + if not user or not hasattr(user, 'id'): + await update.message.reply_text('Ошибка: не удалось определить пользователя.') + return ConversationHandler.END + admin_tg_id = user.id async with AsyncSessionLocal() as session: - channels = (await session.execute(sa_select(Channel))).scalars().all() - groups = (await session.execute(sa_select(Group))).scalars().all() + admin_obj = (await session.execute(sa_select(Admin).where(Admin.tg_id == admin_tg_id))).scalar_one_or_none() + admin_id = admin_obj.id if admin_obj else None + channels = (await session.execute(sa_select(Channel).where(Channel.admin_id == admin_id))).scalars().all() if admin_id is not None else [] + groups = (await session.execute(sa_select(Group).where(Group.admin_id == admin_id))).scalars().all() if admin_id is not None else [] keyboard = [] for c in channels: @@ -207,7 +218,7 @@ async def select_target(update: Update, context: ContextTypes.DEFAULT_TYPE): markup = InlineKeyboardMarkup([[InlineKeyboardButton(str(b.name), url=str(b.url))] for b in buttons]) if buttons else None chat_id = group.link if group else None - if not chat_id: + if chat_id is None: await query.edit_message_text('Ошибка: объект не найден.') return ConversationHandler.END