fix membership query for avoid project-role without users

stable
Héctor Fernández Cascallar 2019-01-18 11:45:29 +01:00 committed by Alex Hermida
parent e736846562
commit 4bb12d73d9
1 changed files with 2 additions and 3 deletions

View File

@ -405,7 +405,6 @@ class BaseRelatedFieldsFilter(FilterBackend):
raw_value = params.get(param_name, None) raw_value = params.get(param_name, None)
if raw_value: if raw_value:
value = self._prepare_filter_data(raw_value) value = self._prepare_filter_data(raw_value)
if None in value: if None in value:
qs_in_kwargs = {"{}__in".format(self.filter_name): [v for v in value if v is not None]} qs_in_kwargs = {"{}__in".format(self.filter_name): [v for v in value if v is not None]}
qs_isnull_kwargs = {"{}__isnull".format(self.filter_name): True} qs_isnull_kwargs = {"{}__isnull".format(self.filter_name): True}
@ -669,7 +668,7 @@ class RoleFilter(BaseRelatedFieldsFilter):
for mode, qs_method in operations.items(): for mode, qs_method in operations.items():
query = self._get_queryparams(request.QUERY_PARAMS, mode=mode) query = self._get_queryparams(request.QUERY_PARAMS, mode=mode)
if query: if query:
memberships = Membership.objects.filter(query).values_list("user_id", flat=True) memberships = Membership.objects.filter(query).exclude(user__isnull=True).values_list("user_id", flat=True)
if memberships: if memberships:
queryset = qs_method(assigned_to__in=memberships) queryset = qs_method(assigned_to__in=memberships)
@ -692,7 +691,7 @@ class UserStoriesRoleFilter(FilterModelAssignedUsers, BaseRelatedFieldsFilter):
for mode, qs_method in operations.items(): for mode, qs_method in operations.items():
query = self._get_queryparams(request.QUERY_PARAMS, mode=mode) query = self._get_queryparams(request.QUERY_PARAMS, mode=mode)
if query: if query:
memberships = Membership.objects.filter(query).values_list("user_id", flat=True) memberships = Membership.objects.filter(query).exclude(user__isnull=True).values_list("user_id", flat=True)
if memberships: if memberships:
user_story_model = apps.get_model("userstories", "UserStory") user_story_model = apps.get_model("userstories", "UserStory")
queryset = qs_method(self.get_assigned_users_filter(user_story_model, memberships)) queryset = qs_method(self.get_assigned_users_filter(user_story_model, memberships))