Fix userstories filter data counters

remotes/origin/issue/4795/notification_even_they_are_disabled
David Barragán Merino 2016-09-28 20:54:10 +02:00
parent 600392c3e1
commit fb562be12e
1 changed files with 34 additions and 28 deletions

View File

@ -277,7 +277,9 @@ def _get_userstories_statuses(project, queryset):
SELECT DISTINCT "userstories_userstory"."status_id" "status_id",
"userstories_userstory"."id" "us_id"
FROM "userstories_userstory"
LEFT JOIN "epics_relateduserstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT OUTER JOIN "epics_relateduserstory"
ON "userstories_userstory"."id" = "epics_relateduserstory"."user_story_id"
WHERE {where}
),
@ -294,7 +296,7 @@ def _get_userstories_statuses(project, queryset):
"projects_userstorystatus"."order",
COALESCE("counters"."count", 0)
FROM "projects_userstorystatus"
LEFT JOIN "counters"
LEFT OUTER JOIN "counters"
ON "counters"."status_id" = "projects_userstorystatus"."id"
WHERE "projects_userstorystatus"."project_id" = %s
ORDER BY "projects_userstorystatus"."order";
@ -327,7 +329,9 @@ def _get_userstories_assigned_to(project, queryset):
SELECT DISTINCT "userstories_userstory"."assigned_to_id" "assigned_to_id",
"userstories_userstory"."id" "us_id"
FROM "userstories_userstory"
LEFT JOIN "epics_relateduserstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT OUTER JOIN "epics_relateduserstory"
ON "userstories_userstory"."id" = "epics_relateduserstory"."user_story_id"
WHERE {where}
),
@ -360,7 +364,7 @@ def _get_userstories_assigned_to(project, queryset):
FROM "userstories_userstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT JOIN "epics_relateduserstory"
LEFT OUTER JOIN "epics_relateduserstory"
ON ("userstories_userstory"."id" = "epics_relateduserstory"."user_story_id")
WHERE {where} AND "userstories_userstory"."assigned_to_id" IS NULL
GROUP BY "assigned_to_id"
@ -404,6 +408,8 @@ def _get_userstories_owners(project, queryset):
SELECT DISTINCT "userstories_userstory"."owner_id" "owner_id",
"userstories_userstory"."id" "us_id"
FROM "userstories_userstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT OUTER JOIN "epics_relateduserstory"
ON ("userstories_userstory"."id" = "epics_relateduserstory"."user_story_id")
WHERE {where}
@ -462,31 +468,31 @@ def _get_userstories_tags(project, queryset):
where_params = queryset_where_tuple[1]
extra_sql = """
WITH "userstories_tags" AS (
SELECT "tag",
COUNT("tag") "counter"
FROM (
SELECT DISTINCT "userstories_userstory"."id" "us_id",
UNNEST("userstories_userstory"."tags") "tag"
FROM "userstories_userstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT JOIN "epics_relateduserstory"
ON ("userstories_userstory"."id" = "epics_relateduserstory"."user_story_id")
WHERE {where}
) "tags"
GROUP BY "tag"),
WITH "userstories_tags" AS (
SELECT "tag",
COUNT("tag") "counter"
FROM (
SELECT DISTINCT "userstories_userstory"."id" "us_id",
UNNEST("userstories_userstory"."tags") "tag"
FROM "userstories_userstory"
INNER JOIN "projects_project"
ON ("userstories_userstory"."project_id" = "projects_project"."id")
LEFT OUTER JOIN "epics_relateduserstory"
ON ("userstories_userstory"."id" = "epics_relateduserstory"."user_story_id")
WHERE {where}
) "tags"
GROUP BY "tag"),
"project_tags" AS (
SELECT reduce_dim("tags_colors") "tag_color"
FROM "projects_project"
WHERE "id"=%s)
"project_tags" AS (
SELECT reduce_dim("tags_colors") "tag_color"
FROM "projects_project"
WHERE "id"=%s)
SELECT "tag_color"[1] "tag", COALESCE("userstories_tags"."counter", 0) "counter"
FROM "project_tags"
LEFT JOIN "userstories_tags"
ON "project_tags"."tag_color"[1] = "userstories_tags"."tag"
ORDER BY "tag"
SELECT "tag_color"[1] "tag", COALESCE("userstories_tags"."counter", 0) "counter"
FROM "project_tags"
LEFT OUTER JOIN "userstories_tags"
ON "project_tags"."tag_color"[1] = "userstories_tags"."tag"
ORDER BY "tag"
""".format(where=where)
with closing(connection.cursor()) as cursor:
@ -546,7 +552,7 @@ def _get_userstories_epics(project, queryset):
ON ("counters"."epic_id" = "epics_epic"."id")
WHERE "epics_epic"."project_id" = %s
""".format(where=where)
with closing(connection.cursor()) as cursor:
cursor.execute(extra_sql, where_params + where_params + [project.id])
rows = cursor.fetchall()