From 9b28bf21e7571ee4d5f3840dcc468ea0f774ac93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D0=BE=D0=BA=D0=BE=D1=81=20=D0=90=D1=80=D1=82=D0=B5?= =?UTF-8?q?=D0=BC=20=D0=9D=D0=B8=D0=BA=D0=BE=D0=BB=D0=B0=D0=B5=D0=B2=D0=B8?= =?UTF-8?q?=D1=87?= Date: Wed, 21 Jan 2026 10:15:48 +0700 Subject: [PATCH] Fix grouping by version --- pyproject.toml | 2 +- redmine_reporter/__init__.py | 2 +- redmine_reporter/client.py | 6 ++++-- redmine_reporter/formatter.py | 5 +---- redmine_reporter/utils.py | 2 ++ 5 files changed, 9 insertions(+), 8 deletions(-) create mode 100644 redmine_reporter/utils.py diff --git a/pyproject.toml b/pyproject.toml index fded2b4..169dd91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "redmine-reporter" -version = "1.0.0" +version = "0.1.1" description = "Redmine time-entry based issue reporter for internal use" readme = "README.md" authors = [{ name = "Artem Kokos", email = "artem-kokos@mail.ru" }] diff --git a/redmine_reporter/__init__.py b/redmine_reporter/__init__.py index 5becc17..485f44a 100644 --- a/redmine_reporter/__init__.py +++ b/redmine_reporter/__init__.py @@ -1 +1 @@ -__version__ = "1.0.0" +__version__ = "0.1.1" diff --git a/redmine_reporter/client.py b/redmine_reporter/client.py index 5503cd2..9c3465f 100644 --- a/redmine_reporter/client.py +++ b/redmine_reporter/client.py @@ -2,6 +2,7 @@ from typing import List, Optional, Dict, Tuple from redminelib import Redmine from redminelib.resources import Issue from .config import Config +from .utils import get_version def fetch_issues_with_spent_time(from_date: str, to_date: str) -> Optional[List[Tuple[Issue, float]]]: @@ -51,6 +52,7 @@ def fetch_issues_with_spent_time(from_date: str, to_date: str) -> Optional[List[ total_hours = spent_time.get(issue.id, 0.0) result.append((issue, total_hours)) - # Сортируем по проекту (Redmine API уже сортирует, но для надёжности) - result.sort(key=lambda x: str(x[0].project)) + # Сортируем по (проект, версия) + result.sort(key=lambda x: (str(x[0].project), get_version(x[0]))) + return result diff --git a/redmine_reporter/formatter.py b/redmine_reporter/formatter.py index ec685b6..2f175cd 100644 --- a/redmine_reporter/formatter.py +++ b/redmine_reporter/formatter.py @@ -1,5 +1,6 @@ from typing import List, Tuple from redminelib.resources import Issue +from .utils import get_version STATUS_TRANSLATION = { @@ -15,10 +16,6 @@ STATUS_TRANSLATION = { } -def get_version(issue: Issue) -> str: - return str(getattr(issue, 'fixed_version', '')) - - def hours_to_human(hours: float) -> str: if hours <= 0: return "0ч" diff --git a/redmine_reporter/utils.py b/redmine_reporter/utils.py new file mode 100644 index 0000000..3d44ad2 --- /dev/null +++ b/redmine_reporter/utils.py @@ -0,0 +1,2 @@ +def get_version(issue) -> str: + return str(getattr(issue, 'fixed_version', ''))