Новый функционал: - Загрузка документов через веб-панель (10 форматов) - Отправка в любую тему форума по расписанию - Поддержка: PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, ZIP, RAR - Отправка в чат и/или всем верифицированным жильцам - UI: превью документа, кнопка удаления Изменения: - database/models.py: document_file_id, document_name поля - database/migrate_v3_4_documents.py: миграция БД - web/app.py: API endpoint с загрузкой документов - services/scheduler.py: отправка документов по расписанию - web/templates/scheduled_posts.html: UI для загрузки документов Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
"""
|
|
Миграция V3.4 - Добавление поддержки документов в запланированные посты
|
|
"""
|
|
import asyncio
|
|
import aiosqlite
|
|
import os
|
|
from pathlib import Path
|
|
|
|
DB_PATH = Path(__file__).parent.parent / "database" / "domovoy.db"
|
|
|
|
async def migrate():
|
|
print("🔄 Миграция V3.4: Добавление поддержки документов...")
|
|
|
|
async with aiosqlite.connect(str(DB_PATH)) as db:
|
|
# Проверяем существуют ли уже колонки
|
|
cursor = await db.execute("PRAGMA table_info(scheduled_posts)")
|
|
columns = [row[1] for row in await cursor.fetchall()]
|
|
|
|
if 'document_file_id' not in columns:
|
|
await db.execute("ALTER TABLE scheduled_posts ADD COLUMN document_file_id VARCHAR(255)")
|
|
print("✅ Добавлена колонка: document_file_id")
|
|
else:
|
|
print("⏭️ document_file_id уже существует")
|
|
|
|
if 'document_name' not in columns:
|
|
await db.execute("ALTER TABLE scheduled_posts ADD COLUMN document_name VARCHAR(255)")
|
|
print("✅ Добавлена колонка: document_name")
|
|
else:
|
|
print("⏭️ document_name уже существует")
|
|
|
|
await db.commit()
|
|
|
|
print("✅ Миграция V3.4 завершена!")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(migrate())
|