Merge pull request #1136 from alexhermida/ft/fix_unassinged_users_count
Fix assigned users filters unassignedremotes/origin/3.4.0rc
commit
610938c026
|
@ -450,7 +450,7 @@ class AssignedUsersFilter(BaseRelatedFieldsFilter):
|
||||||
assigned_to_filter_none = Q(assigned_to__isnull=True)
|
assigned_to_filter_none = Q(assigned_to__isnull=True)
|
||||||
|
|
||||||
return (self.get_assigned_users_filter(UserStoryModel, value)
|
return (self.get_assigned_users_filter(UserStoryModel, value)
|
||||||
| assigned_user_filter_none | assigned_to_filter_none)
|
| Q(assigned_user_filter_none, assigned_to_filter_none))
|
||||||
else:
|
else:
|
||||||
return self.get_assigned_users_filter(UserStoryModel, value)
|
return self.get_assigned_users_filter(UserStoryModel, value)
|
||||||
|
|
||||||
|
|
|
@ -439,10 +439,12 @@ def _get_userstories_assigned_users(project, queryset):
|
||||||
|
|
||||||
extra_sql = """
|
extra_sql = """
|
||||||
WITH "us_counters" AS (
|
WITH "us_counters" AS (
|
||||||
SELECT "userstories_userstory_assigned_users"."user_id"
|
SELECT DISTINCT COALESCE("userstories_userstory_assigned_users"."user_id",
|
||||||
FROM "userstories_userstory_assigned_users"
|
"userstories_userstory"."assigned_to_id") as "assigned_user_id",
|
||||||
INNER JOIN "userstories_userstory"
|
"userstories_userstory"."id" "us_id"
|
||||||
ON "userstories_userstory"."id" = "userstories_userstory_assigned_users"."userstory_id"
|
FROM "userstories_userstory"
|
||||||
|
LEFT JOIN "userstories_userstory_assigned_users"
|
||||||
|
ON "userstories_userstory_assigned_users"."userstory_id" = "userstories_userstory"."id"
|
||||||
INNER JOIN "projects_project"
|
INNER JOIN "projects_project"
|
||||||
ON ("userstories_userstory"."project_id" = "projects_project"."id")
|
ON ("userstories_userstory"."project_id" = "projects_project"."id")
|
||||||
LEFT OUTER JOIN "epics_relateduserstory"
|
LEFT OUTER JOIN "epics_relateduserstory"
|
||||||
|
@ -451,10 +453,10 @@ def _get_userstories_assigned_users(project, queryset):
|
||||||
),
|
),
|
||||||
|
|
||||||
"counters" AS (
|
"counters" AS (
|
||||||
SELECT "user_id",
|
SELECT "assigned_user_id",
|
||||||
COUNT("user_id")
|
COUNT("assigned_user_id")
|
||||||
FROM "us_counters"
|
FROM "us_counters"
|
||||||
GROUP BY "user_id"
|
GROUP BY "assigned_user_id"
|
||||||
)
|
)
|
||||||
|
|
||||||
SELECT "projects_membership"."user_id" "user_id",
|
SELECT "projects_membership"."user_id" "user_id",
|
||||||
|
@ -463,7 +465,7 @@ def _get_userstories_assigned_users(project, queryset):
|
||||||
COALESCE("counters".count, 0) "count"
|
COALESCE("counters".count, 0) "count"
|
||||||
FROM "projects_membership"
|
FROM "projects_membership"
|
||||||
LEFT OUTER JOIN "counters"
|
LEFT OUTER JOIN "counters"
|
||||||
ON ("projects_membership"."user_id" = "counters"."user_id")
|
ON ("projects_membership"."user_id" = "counters"."assigned_user_id")
|
||||||
INNER JOIN "users_user"
|
INNER JOIN "users_user"
|
||||||
ON ("projects_membership"."user_id" = "users_user"."id")
|
ON ("projects_membership"."user_id" = "users_user"."id")
|
||||||
WHERE "projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL
|
WHERE "projects_membership"."project_id" = %s AND "projects_membership"."user_id" IS NOT NULL
|
||||||
|
@ -483,8 +485,8 @@ def _get_userstories_assigned_users(project, queryset):
|
||||||
WHERE {where} AND "userstories_userstory"."id" NOT IN (
|
WHERE {where} AND "userstories_userstory"."id" NOT IN (
|
||||||
SELECT "userstories_userstory_assigned_users"."userstory_id" FROM
|
SELECT "userstories_userstory_assigned_users"."userstory_id" FROM
|
||||||
"userstories_userstory_assigned_users"
|
"userstories_userstory_assigned_users"
|
||||||
)
|
) AND "userstories_userstory"."assigned_to_id" IS NULL
|
||||||
GROUP BY "assigned_to_id";
|
GROUP BY "username";
|
||||||
""".format(where=where)
|
""".format(where=where)
|
||||||
|
|
||||||
with closing(connection.cursor()) as cursor:
|
with closing(connection.cursor()) as cursor:
|
||||||
|
|
|
@ -830,8 +830,8 @@ def test_api_filters_data(client):
|
||||||
assert next(filter(lambda i: i['id'] == user2.id, response.data["assigned_to"]))["count"] == 2
|
assert next(filter(lambda i: i['id'] == user2.id, response.data["assigned_to"]))["count"] == 2
|
||||||
assert next(filter(lambda i: i['id'] == user3.id, response.data["assigned_to"]))["count"] == 1
|
assert next(filter(lambda i: i['id'] == user3.id, response.data["assigned_to"]))["count"] == 1
|
||||||
|
|
||||||
assert next(filter(lambda i: i['id'] == user1.id, response.data["assigned_users"]))["count"] == 2
|
assert next(filter(lambda i: i['id'] == user1.id, response.data["assigned_users"]))["count"] == 5
|
||||||
assert next(filter(lambda i: i['id'] == user2.id, response.data["assigned_users"]))["count"] == 0
|
assert next(filter(lambda i: i['id'] == user2.id, response.data["assigned_users"]))["count"] == 2
|
||||||
|
|
||||||
assert next(filter(lambda i: i['id'] == status0.id, response.data["statuses"]))["count"] == 3
|
assert next(filter(lambda i: i['id'] == status0.id, response.data["statuses"]))["count"] == 3
|
||||||
assert next(filter(lambda i: i['id'] == status1.id, response.data["statuses"]))["count"] == 2
|
assert next(filter(lambda i: i['id'] == status1.id, response.data["statuses"]))["count"] == 2
|
||||||
|
|
Loading…
Reference in New Issue