Добавление таблицы категорий и .env линков на API ВОЛК
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -6,6 +6,8 @@ LOG_FILE = /opt/testbot-git/logs/testzilantposter.log
|
|||||||
WORKMODE = "VOLK"
|
WORKMODE = "VOLK"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Webhook Responder-bot
|
# Webhook Responder-bot
|
||||||
WEBHOOK_URL = "https://bot.aabpro.ru/testbot"
|
WEBHOOK_URL = "https://bot.aabpro.ru/testbot"
|
||||||
WEBHOOK_PORT = 5005
|
WEBHOOK_PORT = 5005
|
||||||
@@ -84,9 +86,6 @@ CHANNEL_ID = "@posto1638"
|
|||||||
MAX_CAPTION_LENGTH = 1000
|
MAX_CAPTION_LENGTH = 1000
|
||||||
MAX_TEXT_LENGTH = 4000
|
MAX_TEXT_LENGTH = 4000
|
||||||
|
|
||||||
# Button scripts
|
|
||||||
# RESCAN_SCRIPT = "vk_load.py"
|
|
||||||
# PUBLISH_SCRIPT = "tg_publish.py"
|
|
||||||
|
|
||||||
# Zilant API call - План Захвата
|
# Zilant API call - План Захвата
|
||||||
#
|
#
|
||||||
@@ -96,6 +95,12 @@ PZK_PREFIX = "https://reg.konvent.ru/zk2025/draft/plan/api/add/"
|
|||||||
EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/"
|
EVT_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/api/"
|
||||||
DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
|
DESC_PREFIX = "https://reg.konvent.ru/zk2025/events/actions/"
|
||||||
|
|
||||||
|
# VOLK mode API links
|
||||||
|
# add category ID (volk24_larp for ex.)
|
||||||
|
VOLK_CATEGORY_LIST = "https://base-dev.volk-nn.ru/api/categories?event=volk24&form=volk24_event"
|
||||||
|
VOLK_CATEGORY_DESC_PREFIX = "https://base-dev.volk-nn.ru/api/category?event=volk24&form=volk24_event&category="
|
||||||
|
VOLK_EVENT_LIST_PREFIX = "https://base-dev.volk-nn.ru/api/applications?event=volk24&form=volk24_event&apps_on_page=100&page=0&category="
|
||||||
|
|
||||||
# Event status
|
# Event status
|
||||||
IS_EVENT = true
|
IS_EVENT = true
|
||||||
AUTO_PUBLISH = false
|
AUTO_PUBLISH = false
|
||||||
@@ -106,7 +111,7 @@ USE_SUBSCRIPTION_BOT = false
|
|||||||
|
|
||||||
# OpenRouter
|
# OpenRouter
|
||||||
OR_KEY = "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"
|
OR_KEY = "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"
|
||||||
# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1"
|
|
||||||
OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct"
|
OR_MODEL_NAME = "qwen/qwen3-vl-235b-a22b-instruct"
|
||||||
|
# OR_MODEL_NAME = "deepseek/deepseek-chat-v3.1"
|
||||||
# OR_MODEL_NAME = "deepseek/deepseek-r1-0528:free"
|
# OR_MODEL_NAME = "deepseek/deepseek-r1-0528:free"
|
||||||
# OR_MODEL_NAME = "qwen/qwen3-coder:free"
|
# OR_MODEL_NAME = "qwen/qwen3-coder:free"
|
||||||
|
|||||||
-45
@@ -1472,51 +1472,6 @@ def init_db():
|
|||||||
ensure_database_structure()
|
ensure_database_structure()
|
||||||
print("Структура базы данных проверена и создана при необходимости")
|
print("Структура базы данных проверена и создана при необходимости")
|
||||||
|
|
||||||
# Проверяем и создаем таблицу events, если она не существует
|
|
||||||
# with db.conn.cursor() as cursor:
|
|
||||||
# cursor.execute("""
|
|
||||||
# CREATE TABLE IF NOT EXISTS events (
|
|
||||||
# id INT AUTO_INCREMENT PRIMARY KEY,
|
|
||||||
# id_event BIGINT NOT NULL,
|
|
||||||
# number BIGINT NOT NULL,
|
|
||||||
# unit_name VARCHAR(255),
|
|
||||||
# name VARCHAR(255),
|
|
||||||
# about VARCHAR(2048),
|
|
||||||
# about_social_picture VARCHAR(2048),
|
|
||||||
# modified DATETIME NULL,
|
|
||||||
# added DATETIME NULL,
|
|
||||||
# tags VARCHAR(255),
|
|
||||||
# is_canceled BOOLEAN DEFAULT 0,
|
|
||||||
# accepted BOOLEAN DEFAULT 0,
|
|
||||||
# denied BOOLEAN DEFAULT 0,
|
|
||||||
# is_visible BOOLEAN DEFAULT 0,
|
|
||||||
# marked_to_publication BOOLEAN DEFAULT 0,
|
|
||||||
# is_posted_tg BOOLEAN DEFAULT 0,
|
|
||||||
# tg_message_id BIGINT NULL DEFAULT NULL,
|
|
||||||
# tg_posted_date DATETIME NULL,
|
|
||||||
# announcement_link BIGINT NULL DEFAULT NULL
|
|
||||||
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
|
||||||
# """)
|
|
||||||
# db.conn.commit()
|
|
||||||
# print("Таблица events проверена и создана при необходимости")
|
|
||||||
|
|
||||||
# Создаем администратора по умолчанию
|
|
||||||
with db.conn.cursor() as cursor:
|
|
||||||
cursor.execute("SELECT COUNT(*) as count FROM users")
|
|
||||||
if cursor.fetchone()['count'] == 0:
|
|
||||||
username = os.getenv('DEFNM')
|
|
||||||
password = os.getenv('DEFPW')
|
|
||||||
if username and password:
|
|
||||||
hashed_password = generate_password_hash(password)
|
|
||||||
cursor.execute(
|
|
||||||
"INSERT INTO users (username, password) VALUES (%s, %s)",
|
|
||||||
(username, hashed_password)
|
|
||||||
)
|
|
||||||
print(f"Created default user: {username}")
|
|
||||||
else:
|
|
||||||
print("Environment variables DEFNM/DEFPW not set. Admin not created.")
|
|
||||||
|
|
||||||
db.conn.commit()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Database initialization error: {str(e)}")
|
print(f"Database initialization error: {str(e)}")
|
||||||
raise
|
raise
|
||||||
|
|||||||
+36
-2
@@ -6,6 +6,7 @@ import random
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from mysql.connector import errorcode
|
from mysql.connector import errorcode
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
from werkzeug.security import generate_password_hash
|
||||||
|
|
||||||
# Загрузка переменных окружения
|
# Загрузка переменных окружения
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
@@ -123,7 +124,7 @@ def ensure_database_structure():
|
|||||||
number BIGINT NOT NULL,
|
number BIGINT NOT NULL,
|
||||||
unit_name VARCHAR(255),
|
unit_name VARCHAR(255),
|
||||||
name VARCHAR(255),
|
name VARCHAR(255),
|
||||||
about VARCHAR(2048),
|
about VARCHAR(4096),
|
||||||
about_social_picture VARCHAR(2048),
|
about_social_picture VARCHAR(2048),
|
||||||
modified DATETIME NULL,
|
modified DATETIME NULL,
|
||||||
added DATETIME NULL,
|
added DATETIME NULL,
|
||||||
@@ -154,6 +155,14 @@ def ensure_database_structure():
|
|||||||
REFERENCES events(id)
|
REFERENCES events(id)
|
||||||
ON DELETE CASCADE
|
ON DELETE CASCADE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||||
|
''',
|
||||||
|
'categories': '''
|
||||||
|
CREATE TABLE categories (
|
||||||
|
AUTO_ID INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
NUMBER BIGINT,
|
||||||
|
ID VARCHAR(255),
|
||||||
|
TITLE VARCHAR(2048)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
|
||||||
'''
|
'''
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,6 +187,25 @@ def ensure_database_structure():
|
|||||||
log_message(f"Error checking/creating table {table_name}: {err}")
|
log_message(f"Error checking/creating table {table_name}: {err}")
|
||||||
raise err
|
raise err
|
||||||
|
|
||||||
|
# Создание дефолтного админа, если таблица users пуста
|
||||||
|
try:
|
||||||
|
cursor.execute("SELECT COUNT(*) as count FROM users")
|
||||||
|
user_count = cursor.fetchone()[0]
|
||||||
|
if user_count == 0:
|
||||||
|
username = os.getenv('DEFNM')
|
||||||
|
password = os.getenv('DEFPW')
|
||||||
|
if username and password:
|
||||||
|
hashed_password = generate_password_hash(password)
|
||||||
|
cursor.execute(
|
||||||
|
"INSERT INTO users (username, password) VALUES (%s, %s)",
|
||||||
|
(username, hashed_password)
|
||||||
|
)
|
||||||
|
log_message(f"Created default admin user: {username}")
|
||||||
|
else:
|
||||||
|
log_message("Environment variables DEFNM/DEFPW not set. Admin not created.")
|
||||||
|
except mysql.connector.Error as err:
|
||||||
|
log_message(f"Error creating default admin: {err}")
|
||||||
|
|
||||||
# Проверка и добавление новых полей в существующие таблицы
|
# Проверка и добавление новых полей в существующие таблицы
|
||||||
table_alterations = {
|
table_alterations = {
|
||||||
'posts': [
|
'posts': [
|
||||||
@@ -254,8 +282,14 @@ def ensure_database_structure():
|
|||||||
'CREATE UNIQUE INDEX IF NOT EXISTS uniq_post_event ON interlinks (post_id, event_id)'
|
'CREATE UNIQUE INDEX IF NOT EXISTS uniq_post_event ON interlinks (post_id, event_id)'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Создание индексов для таблицы categories
|
||||||
|
categories_indexes = [
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_categories_number ON categories (NUMBER)',
|
||||||
|
'CREATE INDEX IF NOT EXISTS idx_categories_id ON categories (ID)'
|
||||||
|
]
|
||||||
|
|
||||||
# Объединяем все индексы
|
# Объединяем все индексы
|
||||||
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes
|
all_indexes = marks_indexes + marks_evt_indexes + events_indexes + interlinks_indexes + categories_indexes
|
||||||
|
|
||||||
for index_sql in all_indexes:
|
for index_sql in all_indexes:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user