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)
|
||||
|
||||
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:
|
||||
return self.get_assigned_users_filter(UserStoryModel, value)
|
||||
|
||||
|
|
|
@ -439,10 +439,12 @@ def _get_userstories_assigned_users(project, queryset):
|
|||
|
||||
extra_sql = """
|
||||
WITH "us_counters" AS (
|
||||
SELECT "userstories_userstory_assigned_users"."user_id"
|
||||
FROM "userstories_userstory_assigned_users"
|
||||
INNER JOIN "userstories_userstory"
|
||||
ON "userstories_userstory"."id" = "userstories_userstory_assigned_users"."userstory_id"
|
||||
SELECT DISTINCT COALESCE("userstories_userstory_assigned_users"."user_id",
|
||||
"userstories_userstory"."assigned_to_id") as "assigned_user_id",
|
||||
"userstories_userstory"."id" "us_id"
|
||||
FROM "userstories_userstory"
|
||||
LEFT JOIN "userstories_userstory_assigned_users"
|
||||
ON "userstories_userstory_assigned_users"."userstory_id" = "userstories_userstory"."id"
|
||||
INNER JOIN "projects_project"
|
||||
ON ("userstories_userstory"."project_id" = "projects_project"."id")
|
||||
LEFT OUTER JOIN "epics_relateduserstory"
|
||||
|
@ -451,10 +453,10 @@ def _get_userstories_assigned_users(project, queryset):
|
|||
),
|
||||
|
||||
"counters" AS (
|
||||
SELECT "user_id",
|
||||
COUNT("user_id")
|
||||
SELECT "assigned_user_id",
|
||||
COUNT("assigned_user_id")
|
||||
FROM "us_counters"
|
||||
GROUP BY "user_id"
|
||||
GROUP BY "assigned_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"
|
||||
FROM "projects_membership"
|
||||
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"
|
||||
ON ("projects_membership"."user_id" = "users_user"."id")
|
||||
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 (
|
||||
SELECT "userstories_userstory_assigned_users"."userstory_id" FROM
|
||||
"userstories_userstory_assigned_users"
|
||||
)
|
||||
GROUP BY "assigned_to_id";
|
||||
) AND "userstories_userstory"."assigned_to_id" IS NULL
|
||||
GROUP BY "username";
|
||||
""".format(where=where)
|
||||
|
||||
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'] == 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'] == user2.id, response.data["assigned_users"]))["count"] == 0
|
||||
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"] == 2
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue