diff --git a/taiga/projects/epics/services.py b/taiga/projects/epics/services.py index ed8f127a..2921a35e 100644 --- a/taiga/projects/epics/services.py +++ b/taiga/projects/epics/services.py @@ -394,7 +394,9 @@ def _get_epics_tags(project, queryset): FROM projects_project WHERE id=%s) - SELECT tag_color[1] tag, COALESCE(epics_tags.counter, 0) counter + SELECT tag_color[1] tag, + tag_color[2] color, + COALESCE(epics_tags.counter, 0) counter FROM project_tags LEFT JOIN epics_tags ON project_tags.tag_color[1] = epics_tags.tag ORDER BY tag @@ -405,9 +407,10 @@ def _get_epics_tags(project, queryset): rows = cursor.fetchall() result = [] - for name, count in rows: + for name, color, count in rows: result.append({ "name": name, + "color": color, "count": count, }) return sorted(result, key=itemgetter("name")) diff --git a/taiga/projects/issues/services.py b/taiga/projects/issues/services.py index 782a184c..ad87a61e 100644 --- a/taiga/projects/issues/services.py +++ b/taiga/projects/issues/services.py @@ -427,24 +427,28 @@ def _get_issues_tags(project, queryset): where_params = queryset_where_tuple[1] extra_sql = """ - WITH issues_tags AS ( - SELECT tag, - COUNT(tag) counter FROM ( - SELECT UNNEST(issues_issue.tags) tag - FROM issues_issue - INNER JOIN projects_project - ON (issues_issue.project_id = projects_project.id) - WHERE {where}) tags - GROUP BY tag), - project_tags AS ( - SELECT reduce_dim(tags_colors) tag_color - FROM projects_project - WHERE id=%s) + WITH "issues_tags" AS ( + SELECT "tag", + COUNT("tag") "counter" + FROM ( + SELECT UNNEST("issues_issue"."tags") "tag" + FROM "issues_issue" + INNER JOIN "projects_project" + ON ("issues_issue"."project_id" = "projects_project"."id") + WHERE {where} + ) "tags" + GROUP BY "tag"), + "project_tags" AS ( + SELECT reduce_dim("tags_colors") "tag_color" + FROM "projects_project" + WHERE "id"=%s) - SELECT tag_color[1] tag, COALESCE(issues_tags.counter, 0) counter + SELECT "tag_color"[1] "tag", + "tag_color"[2] "color", + COALESCE("issues_tags"."counter", 0) "counter" FROM project_tags - LEFT JOIN issues_tags ON project_tags.tag_color[1] = issues_tags.tag - ORDER BY tag + LEFT JOIN "issues_tags" ON "project_tags"."tag_color"[1] = "issues_tags"."tag" + ORDER BY "tag" """.format(where=where) with closing(connection.cursor()) as cursor: @@ -452,9 +456,10 @@ def _get_issues_tags(project, queryset): rows = cursor.fetchall() result = [] - for name, count in rows: + for name, color, count in rows: result.append({ "name": name, + "color": color, "count": count, }) return sorted(result, key=itemgetter("name")) diff --git a/taiga/projects/tasks/services.py b/taiga/projects/tasks/services.py index 055583bd..b785d373 100644 --- a/taiga/projects/tasks/services.py +++ b/taiga/projects/tasks/services.py @@ -352,7 +352,9 @@ def _get_tasks_tags(project, queryset): FROM projects_project WHERE id=%s) - SELECT tag_color[1] tag, COALESCE(tasks_tags.counter, 0) counter + SELECT tag_color[1] tag, + tag_color[2] color, + COALESCE(tasks_tags.counter, 0) counter FROM project_tags LEFT JOIN tasks_tags ON project_tags.tag_color[1] = tasks_tags.tag ORDER BY tag @@ -363,9 +365,10 @@ def _get_tasks_tags(project, queryset): rows = cursor.fetchall() result = [] - for name, count in rows: + for name, color, count in rows: result.append({ "name": name, + "color": color, "count": count, }) return sorted(result, key=itemgetter("name")) diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index ea342abd..2a381eb0 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -488,7 +488,9 @@ def _get_userstories_tags(project, queryset): FROM "projects_project" WHERE "id"=%s) - SELECT "tag_color"[1] "tag", COALESCE("userstories_tags"."counter", 0) "counter" + SELECT "tag_color"[1] "tag", + "tag_color"[2] "color", + COALESCE("userstories_tags"."counter", 0) "counter" FROM "project_tags" LEFT OUTER JOIN "userstories_tags" ON "project_tags"."tag_color"[1] = "userstories_tags"."tag" @@ -500,9 +502,10 @@ LEFT OUTER JOIN "userstories_tags" rows = cursor.fetchall() result = [] - for name, count in rows: + for name, color, count in rows: result.append({ "name": name, + "color": color, "count": count, }) return sorted(result, key=itemgetter("name"))