Shorten some long lines

remotes/origin/enhancement/email-actions
David Barragán Merino 2014-08-14 23:53:27 +02:00
parent 47d280c0da
commit d8e79afdc9
2 changed files with 12 additions and 4 deletions

View File

@ -103,8 +103,11 @@ class PermissionBasedFilterBackend(FilterBackend):
memberships_qs = Membership.objects.filter(user=request.user) memberships_qs = Membership.objects.filter(user=request.user)
if project_id: if project_id:
memberships_qs = memberships_qs.filter(project_id=project_id) memberships_qs = memberships_qs.filter(project_id=project_id)
memberships_qs = memberships_qs.exclude(role__slug="not valid slug") # Force users_role table inclusion
memberships_qs = memberships_qs.extra(where=["users_role.permissions @> ARRAY['{}']".format(self.permission)]) # Force users_role table inclusion
memberships_qs = memberships_qs.exclude(role__slug="not valid slug")
where_sql = ["users_role.permissions @> ARRAY['{}']".format(self.permission)]
memberships_qs = memberships_qs.extra(where=where_sql)
projects_list = [membership.project_id for membership in memberships_qs] projects_list = [membership.project_id for membership in memberships_qs]
@ -114,10 +117,14 @@ class PermissionBasedFilterBackend(FilterBackend):
qs = qs.filter(Q(project__owner=request.user) | Q(project=projects_list[0])) qs = qs.filter(Q(project__owner=request.user) | Q(project=projects_list[0]))
else: else:
qs = qs.filter(Q(project__owner=request.user) | Q(project__in=projects_list)) qs = qs.filter(Q(project__owner=request.user) | Q(project__in=projects_list))
qs.query.where.add(ExtraWhere(["projects_project.public_permissions @> ARRAY['{}']".format(self.permission)], []), OR) extra_where = ExtraWhere(["projects_project.public_permissions @> ARRAY['{}']".format(
self.permission)], [])
qs.query.where.add(extra_where, OR)
else: else:
qs = qs.exclude(project__owner=-1) qs = qs.exclude(project__owner=-1)
qs.query.where.add(ExtraWhere(["projects_project.anon_permissions @> ARRAY['{}']".format(self.permission)], []), AND) extra_where = ExtraWhere(["projects_project.anon_permissions @> ARRAY['{}']".format(
self.permission)], [])
qs.query.where.add(extra_where, AND)
return super().filter_queryset(request, qs.distinct(), view) return super().filter_queryset(request, qs.distinct(), view)

View File

@ -176,6 +176,7 @@ class ProjectViewSet(ModelCrudViewSet):
self.post_delete(obj) self.post_delete(obj)
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
class MembershipViewSet(ModelCrudViewSet): class MembershipViewSet(ModelCrudViewSet):
model = models.Membership model = models.Membership
serializer_class = serializers.MembershipSerializer serializer_class = serializers.MembershipSerializer