From aff5d95d7423b70b70b274a7e778cf1fece4fb21 Mon Sep 17 00:00:00 2001 From: Raykov-MS Date: Thu, 5 Mar 2026 16:43:54 +0300 Subject: [PATCH] modify some ideas --- README.md | 1 + main.py | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/README.md b/README.md index c09583c..130e77e 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ python -m uvicorn main:app --host 0.0.0.0 --port 8080 --reload --env-file .env - `REMINDER_TIME` - необязательно, по умолчанию `09:00` - `AUTO_ASSIGNED_LABEL` - необязательно, по умолчанию `auto-assigned` - `AUTO_ASSIGN_REVIEWERS_COUNT` - необязательно, по умолчанию `2` (сколько ревьюеров назначать автоматически) +- `AUTO_ASSIGN_EXCLUDED_AUTHORS` - необязательно, CSV логинов Gitea; для этих авторов автоназначение и auto-label на `PR opened` не выполняются - `APPROVALS_REQUIRED_FOR_MERGE` - необязательно, по умолчанию `2` (порог approve для сообщения "можно мерджить") - `NOTIFY_ON_WEEKENDS` - необязательно, по умолчанию `true`; если `false`, бот не отправляет ЛС в субботу и воскресенье (МСК) - `ALLOW_SELF_ASSIGN` - необязательно, по умолчанию `false` (для локального теста можно `true`) diff --git a/main.py b/main.py index 9d9159b..c35fad4 100644 --- a/main.py +++ b/main.py @@ -46,6 +46,11 @@ GITEA_COUNT_REPOS = { for v in os.getenv("GITEA_COUNT_REPOS", "").split(",") if v.strip() } +AUTO_ASSIGN_EXCLUDED_AUTHORS = { + v.strip().lower() + for v in os.getenv("AUTO_ASSIGN_EXCLUDED_AUTHORS", "").split(",") + if v.strip() +} NOTIFY_ON_WEEKENDS = os.getenv("NOTIFY_ON_WEEKENDS", "true").lower() == "true" MSK_TZ = timezone(timedelta(hours=3)) @@ -774,6 +779,12 @@ async def handle_pr_opened(payload: dict[str, Any]) -> None: if not repo_full_name or not pr_number or not author_login: return + if author_login.lower() in AUTO_ASSIGN_EXCLUDED_AUTHORS: + log_info( + f"[assign] Автоназначение отключено для автора {author_login} " + f"в {repo_full_name}#{pr_number}." + ) + return # В зависимости от версии Gitea ручные ревьюеры могут приходить как # в requested_reviewers, так и в reviewers. existing_reviewer_logins = extract_reviewer_logins_from_pull_request(pull_request)