This commit is contained in:
+29
-11
@@ -243,7 +243,7 @@ def get_user_subscriptions(user_id):
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
def get_user_subscriptions_evt(user_id):
|
def get_user_subscriptions_evt(user_id):
|
||||||
"""Возвращает список событий, на которые подписан пользователь, с name"""
|
"""Возвращает список событий, на которые подписан пользователь, с информацией о статусе"""
|
||||||
conn = create_db_connection()
|
conn = create_db_connection()
|
||||||
if conn is None:
|
if conn is None:
|
||||||
return []
|
return []
|
||||||
@@ -251,7 +251,7 @@ def get_user_subscriptions_evt(user_id):
|
|||||||
try:
|
try:
|
||||||
with conn.cursor() as cursor:
|
with conn.cursor() as cursor:
|
||||||
sql = """
|
sql = """
|
||||||
SELECT m.tg_event_id, COALESCE(e.name, '') as name
|
SELECT m.tg_event_id, COALESCE(e.name, '') as name, e.is_posted_tg, e.is_visible
|
||||||
FROM marks_evt m
|
FROM marks_evt m
|
||||||
LEFT JOIN events e ON m.tg_event_id = e.tg_message_id
|
LEFT JOIN events e ON m.tg_event_id = e.tg_message_id
|
||||||
WHERE m.tg_user_id = %s
|
WHERE m.tg_user_id = %s
|
||||||
@@ -260,7 +260,7 @@ def get_user_subscriptions_evt(user_id):
|
|||||||
cursor.execute(sql, (user_id,))
|
cursor.execute(sql, (user_id,))
|
||||||
result = cursor.fetchall()
|
result = cursor.fetchall()
|
||||||
|
|
||||||
return [{'event_id': row['tg_event_id'], 'name': row['name']} for row in result]
|
return [{'event_id': row['tg_event_id'], 'name': row['name'], 'is_posted_tg': row['is_posted_tg'], 'is_visible': row['is_visible']} for row in result]
|
||||||
except pymysql.Error as e:
|
except pymysql.Error as e:
|
||||||
error_msg = f"Ошибка при получении подписок на события: {e}"
|
error_msg = f"Ошибка при получении подписок на события: {e}"
|
||||||
logger.error(error_msg)
|
logger.error(error_msg)
|
||||||
@@ -270,7 +270,7 @@ def get_user_subscriptions_evt(user_id):
|
|||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
def get_linked_events_for_post(post_id):
|
def get_linked_events_for_post(post_id):
|
||||||
"""Возвращает список мероприятий, связанных с анонсом через таблицу interlinks"""
|
"""Возвращает список опубликованных мероприятий, связанных с анонсом через таблицу interlinks"""
|
||||||
conn = create_db_connection()
|
conn = create_db_connection()
|
||||||
if conn is None:
|
if conn is None:
|
||||||
return []
|
return []
|
||||||
@@ -282,7 +282,7 @@ def get_linked_events_for_post(post_id):
|
|||||||
FROM interlinks i
|
FROM interlinks i
|
||||||
JOIN events e ON i.event_id = e.id
|
JOIN events e ON i.event_id = e.id
|
||||||
JOIN posts p ON i.post_id = p.id
|
JOIN posts p ON i.post_id = p.id
|
||||||
WHERE p.tg_message_id = %s AND e.name IS NOT NULL AND e.name != ''
|
WHERE p.tg_message_id = %s AND e.name IS NOT NULL AND e.name != '' AND e.is_posted_tg = 1
|
||||||
ORDER BY e.name
|
ORDER BY e.name
|
||||||
"""
|
"""
|
||||||
cursor.execute(sql, (post_id,))
|
cursor.execute(sql, (post_id,))
|
||||||
@@ -950,9 +950,10 @@ def handle_list(message):
|
|||||||
vk_post_id = post_data['vk_post_id'] if post_data else "N/A"
|
vk_post_id = post_data['vk_post_id'] if post_data else "N/A"
|
||||||
display_name = f"Анонс ВК {vk_post_id}"
|
display_name = f"Анонс ВК {vk_post_id}"
|
||||||
|
|
||||||
response += f"• <a href='{post_link}'>{display_name}</a>\n"
|
# Названия постов выводим подчеркнутыми
|
||||||
|
response += f"• <u><a href='{post_link}'>{display_name}</a></u>\n"
|
||||||
|
|
||||||
# Получаем связанные мероприятия
|
# Получаем связанные мероприятия (только опубликованные)
|
||||||
linked_events = get_linked_events_for_post(post_id)
|
linked_events = get_linked_events_for_post(post_id)
|
||||||
if linked_events:
|
if linked_events:
|
||||||
for event in linked_events:
|
for event in linked_events:
|
||||||
@@ -966,12 +967,20 @@ def handle_list(message):
|
|||||||
for sub in event_subscriptions:
|
for sub in event_subscriptions:
|
||||||
event_id = sub['event_id']
|
event_id = sub['event_id']
|
||||||
name = sub['name']
|
name = sub['name']
|
||||||
event_link = format_channel_link(event_id)
|
is_posted_tg = sub.get('is_posted_tg', False)
|
||||||
|
is_visible = sub.get('is_visible', False)
|
||||||
|
|
||||||
# Используем name если есть, иначе ID события
|
# Используем name если есть, иначе ID события
|
||||||
display_name = name if name else f"Мероприятие {event_id}"
|
display_name = name if name else f"Мероприятие {event_id}"
|
||||||
|
|
||||||
|
# Проверяем статус события
|
||||||
|
if is_posted_tg and is_visible:
|
||||||
|
# Опубликованное и видимое событие - с ссылкой
|
||||||
|
event_link = format_channel_link(event_id)
|
||||||
response += f"• <a href='{event_link}'>{display_name}</a>\n"
|
response += f"• <a href='{event_link}'>{display_name}</a>\n"
|
||||||
|
else:
|
||||||
|
# Неопубликованное или невидимое событие - без ссылки и зачеркнутым
|
||||||
|
response += f"• <s>{display_name}</s>\n"
|
||||||
|
|
||||||
# Если нет подписок
|
# Если нет подписок
|
||||||
if not post_subscriptions and not event_subscriptions:
|
if not post_subscriptions and not event_subscriptions:
|
||||||
@@ -1050,9 +1059,10 @@ def handle_callback(call):
|
|||||||
vk_post_id = post_data['vk_post_id'] if post_data else "N/A"
|
vk_post_id = post_data['vk_post_id'] if post_data else "N/A"
|
||||||
display_name = f"Анонс ВК {vk_post_id}"
|
display_name = f"Анонс ВК {vk_post_id}"
|
||||||
|
|
||||||
response += f"• <a href='{post_link}'>{display_name}</a>\n"
|
# Названия постов выводим подчеркнутыми
|
||||||
|
response += f"• <u><a href='{post_link}'>{display_name}</a></u>\n"
|
||||||
|
|
||||||
# Получаем связанные мероприятия
|
# Получаем связанные мероприятия (только опубликованные)
|
||||||
linked_events = get_linked_events_for_post(post_id)
|
linked_events = get_linked_events_for_post(post_id)
|
||||||
if linked_events:
|
if linked_events:
|
||||||
for event in linked_events:
|
for event in linked_events:
|
||||||
@@ -1066,12 +1076,20 @@ def handle_callback(call):
|
|||||||
for sub in event_subscriptions:
|
for sub in event_subscriptions:
|
||||||
event_id = sub['event_id']
|
event_id = sub['event_id']
|
||||||
name = sub['name']
|
name = sub['name']
|
||||||
event_link = format_channel_link(event_id)
|
is_posted_tg = sub.get('is_posted_tg', False)
|
||||||
|
is_visible = sub.get('is_visible', False)
|
||||||
|
|
||||||
# Используем name если есть, иначе ID события
|
# Используем name если есть, иначе ID события
|
||||||
display_name = name if name else f"Мероприятие {event_id}"
|
display_name = name if name else f"Мероприятие {event_id}"
|
||||||
|
|
||||||
|
# Проверяем статус события
|
||||||
|
if is_posted_tg and is_visible:
|
||||||
|
# Опубликованное и видимое событие - с ссылкой
|
||||||
|
event_link = format_channel_link(event_id)
|
||||||
response += f"• <a href='{event_link}'>{display_name}</a>\n"
|
response += f"• <a href='{event_link}'>{display_name}</a>\n"
|
||||||
|
else:
|
||||||
|
# Неопубликованное или невидимое событие - без ссылки и зачеркнутым
|
||||||
|
response += f"• <s>{display_name}</s>\n"
|
||||||
|
|
||||||
# Если нет подписок
|
# Если нет подписок
|
||||||
if not post_subscriptions and not event_subscriptions:
|
if not post_subscriptions and not event_subscriptions:
|
||||||
|
|||||||
Reference in New Issue
Block a user