From 05c51f372193e41be07c67f96b21dc87411e5d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Valenta?= <git@imaniti.org> Date: Sat, 8 Apr 2023 00:47:17 +0200 Subject: [PATCH] finish redmine api chart display --- shared/blocks.py | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/shared/blocks.py b/shared/blocks.py index e07f851a..869a4555 100644 --- a/shared/blocks.py +++ b/shared/blocks.py @@ -730,7 +730,7 @@ class ChartRedmineIssueDataset(blocks.StructBlock): required=False, ) - def _get_issues_url(self, value, project_id: typing.Union[None, str] = None): + def _get_issues_url(self, value, project_id: typing.Union[None, str, list[str]] = None): url = "https://redmine.pirati.cz/issues.json" params = [ ("sort", "created_on"), @@ -741,8 +741,10 @@ class ChartRedmineIssueDataset(blocks.StructBlock): ), ] - if project_id is not None: + if isinstance(project_id, str): params.append(("project_id", project_id)) + elif isinstance(project_id, list): + params.append(("project_id", ",".join(project_id))) is_open = value.get("is_open", False) is_closed = value.get("is_closed", False) @@ -767,6 +769,8 @@ class ChartRedmineIssueDataset(blocks.StructBlock): is_first = False + print(url) + return url def _get_parsed_issues(self, value, labels, issues_url) -> tuple: @@ -871,16 +875,15 @@ class ChartRedmineIssueDataset(blocks.StructBlock): context = super().get_context(value) labels = [] + datasets = [] - if value.get("split_per_project", False): - for day_count in range( - (value["created_on_max_date"] - value["created_on_min_date"]).days + 1 - ): - day = value["created_on_min_date"] + datetime.timedelta(days=day_count) - labels.append(day) - - datasets = [] + for day_count in range( + (value["created_on_max_date"] - value["created_on_min_date"]).days + 1 + ): + day = value["created_on_min_date"] + datetime.timedelta(days=day_count) + labels.append(day) + if value.get("split_per_project", False): project_choices_lookup = dict(get_redmine_projects()) for project_id in value["projects"]: @@ -892,10 +895,8 @@ class ChartRedmineIssueDataset(blocks.StructBlock): "data": self._get_parsed_issues(value, labels, issues_url), } ) - - labels = [date.strftime("%d. %m. %Y") for date in labels] else: - issues_url = self._get_issues_url(value) + issues_url = self._get_issues_url(value, value["projects"]) datasets.append( { @@ -904,6 +905,8 @@ class ChartRedmineIssueDataset(blocks.StructBlock): } ) + labels = [date.strftime("%d. %m. %Y") for date in labels] + context["parsed_issue_labels"] = labels context["parsed_issues"] = datasets @@ -989,14 +992,15 @@ class ChartBlock(blocks.StructBlock): min_date = value["redmine_issue_datasets"][0]["created_on_min_date"] max_date = value["redmine_issue_datasets"][0]["created_on_max_date"] - for dataset in value["redmine_issue_datasets"][1:]: - if ( - dataset["created_on_min_date"] != min_date - or dataset["created_on_max_date"] != max_date - ): - raise ValidationError( - "Maximální a minimální data všech zdrojů z Redmine musí být stejné" - ) + if len(value["redmine_issue_datasets"]) > 1: + for dataset in value["redmine_issue_datasets"]: + if ( + dataset["created_on_min_date"] != min_date + or dataset["created_on_max_date"] != max_date + ): + raise ValidationError( + "Maximální a minimální data všech zdrojů z Redmine musí být stejné" + ) return result -- GitLab