1 Commits

Author SHA1 Message Date
Кокос Артем Николаевич
9b28bf21e7 Fix grouping by version 2026-01-21 10:16:23 +07:00
5 changed files with 9 additions and 8 deletions

View File

@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "redmine-reporter" name = "redmine-reporter"
version = "1.0.0" version = "0.1.1"
description = "Redmine time-entry based issue reporter for internal use" description = "Redmine time-entry based issue reporter for internal use"
readme = "README.md" readme = "README.md"
authors = [{ name = "Artem Kokos", email = "artem-kokos@mail.ru" }] authors = [{ name = "Artem Kokos", email = "artem-kokos@mail.ru" }]

View File

@@ -1 +1 @@
__version__ = "1.0.0" __version__ = "0.1.1"

View File

@@ -2,6 +2,7 @@ from typing import List, Optional, Dict, Tuple
from redminelib import Redmine from redminelib import Redmine
from redminelib.resources import Issue from redminelib.resources import Issue
from .config import Config 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]]]: 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) total_hours = spent_time.get(issue.id, 0.0)
result.append((issue, total_hours)) 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 return result

View File

@@ -1,5 +1,6 @@
from typing import List, Tuple from typing import List, Tuple
from redminelib.resources import Issue from redminelib.resources import Issue
from .utils import get_version
STATUS_TRANSLATION = { STATUS_TRANSLATION = {
@@ -15,10 +16,6 @@ STATUS_TRANSLATION = {
} }
def get_version(issue: Issue) -> str:
return str(getattr(issue, 'fixed_version', '<N/A>'))
def hours_to_human(hours: float) -> str: def hours_to_human(hours: float) -> str:
if hours <= 0: if hours <= 0:
return "" return ""

View File

@@ -0,0 +1,2 @@
def get_version(issue) -> str:
return str(getattr(issue, 'fixed_version', '<N/A>'))