diff --git a/shared/blocks.py b/shared/blocks.py index e07f851a94b1a5036bd479f7d4275cbaa370c2e1..869a45551714a4a4f23442f72b47135a7d125f94 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