Clean arch
This commit is contained in:
34
redmine_reporter/core.py
Normal file
34
redmine_reporter/core.py
Normal file
@@ -0,0 +1,34 @@
|
||||
from typing import List
|
||||
from .client import RedmineClient
|
||||
from .models import IssueRecord
|
||||
|
||||
|
||||
def fetch_issues_for_period(
|
||||
client: RedmineClient,
|
||||
from_date: str,
|
||||
to_date: str
|
||||
) -> List[IssueRecord]:
|
||||
user_id = client.get_current_user_id()
|
||||
time_entries = client.get_time_entries(user_id, from_date, to_date)
|
||||
|
||||
if not time_entries:
|
||||
return []
|
||||
|
||||
issue_ids = list({str(e.issue.id) for e in time_entries if hasattr(e, 'issue') and e.issue})
|
||||
issues = client.get_issues_by_ids(issue_ids)
|
||||
|
||||
records = []
|
||||
for issue in issues:
|
||||
project = str(getattr(issue, 'project', 'Unknown'))
|
||||
version = str(getattr(issue, 'version', '<N/A>'))
|
||||
status = str(getattr(issue, 'status', 'Unknown'))
|
||||
records.append(IssueRecord(
|
||||
project=project,
|
||||
version=version,
|
||||
issue_id=issue.id,
|
||||
subject=issue.subject,
|
||||
status=status
|
||||
))
|
||||
|
||||
records.sort(key=lambda r: (r.project, r.version))
|
||||
return records
|
||||
Reference in New Issue
Block a user