Add colors in tags for yhr filter data endpoints

remotes/origin/issue/4795/notification_even_they_are_disabled
David Barragán Merino 2016-09-29 14:24:43 +02:00
parent 2ac242795a
commit 5472c993f8
4 changed files with 37 additions and 23 deletions

View File

@ -394,7 +394,9 @@ def _get_epics_tags(project, queryset):
FROM projects_project FROM projects_project
WHERE id=%s) 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 FROM project_tags
LEFT JOIN epics_tags ON project_tags.tag_color[1] = epics_tags.tag LEFT JOIN epics_tags ON project_tags.tag_color[1] = epics_tags.tag
ORDER BY tag ORDER BY tag
@ -405,9 +407,10 @@ def _get_epics_tags(project, queryset):
rows = cursor.fetchall() rows = cursor.fetchall()
result = [] result = []
for name, count in rows: for name, color, count in rows:
result.append({ result.append({
"name": name, "name": name,
"color": color,
"count": count, "count": count,
}) })
return sorted(result, key=itemgetter("name")) return sorted(result, key=itemgetter("name"))

View File

@ -427,24 +427,28 @@ def _get_issues_tags(project, queryset):
where_params = queryset_where_tuple[1] where_params = queryset_where_tuple[1]
extra_sql = """ extra_sql = """
WITH issues_tags AS ( WITH "issues_tags" AS (
SELECT tag, SELECT "tag",
COUNT(tag) counter FROM ( COUNT("tag") "counter"
SELECT UNNEST(issues_issue.tags) tag FROM (
FROM issues_issue SELECT UNNEST("issues_issue"."tags") "tag"
INNER JOIN projects_project FROM "issues_issue"
ON (issues_issue.project_id = projects_project.id) INNER JOIN "projects_project"
WHERE {where}) tags ON ("issues_issue"."project_id" = "projects_project"."id")
GROUP BY tag), WHERE {where}
project_tags AS ( ) "tags"
SELECT reduce_dim(tags_colors) tag_color GROUP BY "tag"),
FROM projects_project "project_tags" AS (
WHERE id=%s) 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 FROM project_tags
LEFT JOIN issues_tags ON project_tags.tag_color[1] = issues_tags.tag LEFT JOIN "issues_tags" ON "project_tags"."tag_color"[1] = "issues_tags"."tag"
ORDER BY tag ORDER BY "tag"
""".format(where=where) """.format(where=where)
with closing(connection.cursor()) as cursor: with closing(connection.cursor()) as cursor:
@ -452,9 +456,10 @@ def _get_issues_tags(project, queryset):
rows = cursor.fetchall() rows = cursor.fetchall()
result = [] result = []
for name, count in rows: for name, color, count in rows:
result.append({ result.append({
"name": name, "name": name,
"color": color,
"count": count, "count": count,
}) })
return sorted(result, key=itemgetter("name")) return sorted(result, key=itemgetter("name"))

View File

@ -352,7 +352,9 @@ def _get_tasks_tags(project, queryset):
FROM projects_project FROM projects_project
WHERE id=%s) 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 FROM project_tags
LEFT JOIN tasks_tags ON project_tags.tag_color[1] = tasks_tags.tag LEFT JOIN tasks_tags ON project_tags.tag_color[1] = tasks_tags.tag
ORDER BY tag ORDER BY tag
@ -363,9 +365,10 @@ def _get_tasks_tags(project, queryset):
rows = cursor.fetchall() rows = cursor.fetchall()
result = [] result = []
for name, count in rows: for name, color, count in rows:
result.append({ result.append({
"name": name, "name": name,
"color": color,
"count": count, "count": count,
}) })
return sorted(result, key=itemgetter("name")) return sorted(result, key=itemgetter("name"))

View File

@ -488,7 +488,9 @@ def _get_userstories_tags(project, queryset):
FROM "projects_project" FROM "projects_project"
WHERE "id"=%s) 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" FROM "project_tags"
LEFT OUTER JOIN "userstories_tags" LEFT OUTER JOIN "userstories_tags"
ON "project_tags"."tag_color"[1] = "userstories_tags"."tag" ON "project_tags"."tag_color"[1] = "userstories_tags"."tag"
@ -500,9 +502,10 @@ LEFT OUTER JOIN "userstories_tags"
rows = cursor.fetchall() rows = cursor.fetchall()
result = [] result = []
for name, count in rows: for name, color, count in rows:
result.append({ result.append({
"name": name, "name": name,
"color": color,
"count": count, "count": count,
}) })
return sorted(result, key=itemgetter("name")) return sorted(result, key=itemgetter("name"))