Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,6 @@ class PlainTextUserAction(Enum):
GET_TASKS_REPORT__ENTER_LIST_NUMBER = "get_tasks_report__list_number"
GET_TASKS_REPORT__ENTER_INTRO = "get_tasks_report__introduction"
GET_TASKS_REPORT__CHOOSE_IF_FILL_LABELS = "get_tasks_report__fill_labels"
GET_RUBRICS__CHOOSE_RUBRIC = "GET_RUBRICS__CHOOSE_RUBRIC"

# /manage_reminders items
MANAGE_REMINDERS__CHOOSE_ACTION = "manage_reminders__action"
MANAGE_REMINDERS__ENTER_CHAT_ID = "manage_reminders__chat_id"
Expand Down
1 change: 0 additions & 1 deletion src/jobs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,3 @@
from .shrug_job import ShrugJob
from .site_health_check_job import SiteHealthCheckJob
from .tg_analytics_report_job import TgAnalyticsReportJob
from .trello_get_articles_rubric_job import TrelloGetArticlesRubricJob
92 changes: 0 additions & 92 deletions src/jobs/trello_get_articles_rubric_job.py

This file was deleted.

16 changes: 0 additions & 16 deletions src/tg/handler_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,22 +98,6 @@ class HandlerConfig:
direct_only=True,
description="получить список задач из Planka",
),
HandlerConfig(
command="get_rubrics",
category=CommandCategories.MOST_USED,
access_level="manager",
handler_func=handlers.get_rubrics,
direct_only=True,
description="получить рубрики из доски Редакция",
),
HandlerConfig(
command="get_articles_rubric",
category=CommandCategories.DEBUG,
access_level="manager",
job_name="trello_get_articles_rubric_job",
job_type="manager_reply",
description="получить карточки по названию рубрики в трелло",
),
HandlerConfig(
command="get_chat_id",
category=CommandCategories.MOST_USED,
Expand Down
1 change: 0 additions & 1 deletion src/tg/handlers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from .get_managers_handler import get_managers

# Admin (developer) handlers
from .get_rubrics_handler import get_rubrics
from .get_tasks_report_handler import get_tasks_report_planka
from .help_handler import help
from .list_chats_handler import list_chats
Expand Down
152 changes: 0 additions & 152 deletions src/tg/handlers/flow_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@
from ...app_context import AppContext
from ...consts import (
ButtonValues,
GetTasksReportData,
PlainTextUserAction,
BoardListAlias,
)
from ...db.db_client import DBClient
from ...db.db_objects import Reminder
Expand All @@ -23,19 +21,6 @@

logger = logging.getLogger(__name__)

SECTIONS = [
("Идеи для статей", BoardListAlias.TOPIC_SUGGESTION_1),
("Готовая тема", BoardListAlias.TOPIC_READY_2),
("Уже пишу", BoardListAlias.DRAFT_N_PROGRESS_3, True),
("Передано на редактуру", BoardListAlias.DRAFT_COMPLETED_4),
("На редактуре", BoardListAlias.PENDING_EDITOR_5),
("Проверка качества SEO", BoardListAlias.PENDING_SEO_EDITOR_6),
("Отредактировано", BoardListAlias.APPROVED_EDITOR_7),
("Отобрано на финальную проверку", BoardListAlias.PENDING_CHIEF_EDITOR_8),
("Отобрано для публикации", BoardListAlias.PUBLISH_BACKLOG_9),
("Готово для вёрстки", BoardListAlias.PUBLISH_IN_PROGRESS_10),
]


def handle_stateless_message(update, tg_context):
"""
Expand Down Expand Up @@ -110,117 +95,6 @@ def handle(self) -> Optional[PlainTextUserAction]:
raise NotImplementedError


def _generate_rubric_summary(update, rubric_name: str) -> None:
try:
app_context = AppContext()
pc = app_context.planka_client
labels = pc.get_labels()
rubric_label = next(
(
lbl
for lbl in labels
if lbl.name.strip().lower() == rubric_name.strip().lower()
),
None,
)
if not rubric_label:
logger.warning(
f"_generate_rubric_summary: Рубрика не найдена: {rubric_name}"
)
reply(
load(
"rubric_not_found",
rubric_name=rubric_name,
),
update,
)
return

try:
lists = pc.get_lists()
except Exception as e:
logger.error(
f"_generate_rubric_summary: не удалось получить lists: {e}",
exc_info=True,
)
reply(load("failed_get_board_lists"), update)
return

message_parts = [
load(
"rubric_report_job__intro",
rubric=rubric_name,
)
]

had_errors = False

for column_name, alias, *meta_flag in SECTIONS:
need_meta = bool(meta_flag and meta_flag[0])
heading = load(alias.value)
target_list = next(
(lst for lst in lists if lst.name.strip().startswith(column_name)), None
)

if not target_list:
message_parts.append(f"<b>{heading}</b> (0)")
message_parts.append("")
continue

try:
cards = pc.get_cards(list_ids=[target_list.id])
except Exception:
had_errors = True
message_parts.append(f"<b>{heading}</b> (0)")
message_parts.append("")
continue

filtered = [
card
for card in cards
if any(lbl.id == rubric_label.id for lbl in card.labels)
]

filtered.sort(key=lambda c: c.due or datetime.max)

count = len(filtered)
message_parts.append(f"<b>{heading}</b> ({count})")

if not filtered:
message_parts.append("(пусто)")
else:
for card in filtered:
link = f'<a href="{card.url}">{card.name}</a>'
if need_meta:
due_str = (
card.due.strftime("%d.%m.%Y") if card.due else "без срока"
)
try:
fields = pc.get_custom_fields(card.id)
authors = (
", ".join(fields.authors)
if fields.authors
else "неизвестно"
)
except Exception:
authors = "неизвестно"
message_parts.append(f"- {link}")
message_parts.append(f" • Дедлайн: {due_str}")
message_parts.append(f" • Автор: {authors}")
else:
message_parts.append(f"- {link}")

message_parts.append("")

if had_errors:
message_parts.append(load("partial_data_error "))

reply("\n".join(message_parts), update, parse_mode="HTML")

except Exception:
reply(load("failed_try_later"), update)


def _show_reminder_edit_options(
reminder: Reminder, update: telegram.Update, command_data: dict
):
Expand Down Expand Up @@ -312,32 +186,6 @@ def _handle_task_report_helper(command_data, add_labels, update):
return None


class GetRubricsChooseRubricHandler(BaseUserMessageHandler):
def handle(self) -> Optional[PlainTextUserAction]:
try:
idx = int(self.user_input) - 1
rubrics = self.command_data.get(
GetTasksReportData.LISTS
) or self.tg_context.chat_data.get("available_rubrics", [])
if not (0 <= idx < len(rubrics)):
raise ValueError
except Exception:
reply(
load(
"invalid_rubric_number",
max=len(rubrics),
),
self.update,
)
return PlainTextUserAction.GET_RUBRICS__CHOOSE_RUBRIC

selected = rubrics[idx]
_generate_rubric_summary(self.update, selected)

self.tg_context.chat_data.pop(consts.LAST_ACTIONABLE_COMMAND, None)
return None


class GetTasksReportEnterBoardNumberHandler(BaseUserMessageHandler):
def handle(self) -> Optional[PlainTextUserAction]:
planka_client = PlankaClient()
Expand Down
63 changes: 0 additions & 63 deletions src/tg/handlers/get_rubrics_handler.py

This file was deleted.

1 change: 0 additions & 1 deletion src/tg/handlers/user_message_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ def handle_callback_query(


ACTION_HANDLERS = {
PlainTextUserAction.GET_RUBRICS__CHOOSE_RUBRIC: flow_handlers.GetRubricsChooseRubricHandler,
PlainTextUserAction.GET_TASKS_REPORT__ENTER_BOARD_NUMBER: flow_handlers.GetTasksReportEnterBoardNumberHandler,
PlainTextUserAction.GET_TASKS_REPORT__ENTER_LIST_NUMBER: flow_handlers.GetTasksReportEnterListNumberHandler,
PlainTextUserAction.GET_TASKS_REPORT__ENTER_INTRO: flow_handlers.GetTasksReportEnterIntroHandler,
Expand Down
Loading