mirror of
https://github.com/bugsink/bugsink.git
synced 2025-12-20 03:59:53 -06:00
Fix member counts on project/team list
they were at most 1
This commit is contained in:
@@ -35,28 +35,30 @@ User = get_user_model()
|
||||
@atomic_for_request_method
|
||||
def project_list(request, ownership_filter=None):
|
||||
my_memberships = ProjectMembership.objects.filter(user=request.user)
|
||||
my_team_memberships = TeamMembership.objects.filter(user=request.user)
|
||||
|
||||
# using `id__in` here to ensure the counts later on is not restricted to our own memberships (at most 1)
|
||||
my_projects = Project.objects.filter(
|
||||
projectmembership__in=my_memberships, is_deleted=False).order_by('name').distinct()
|
||||
id__in=ProjectMembership.objects.filter(user=request.user).values('project_id'), is_deleted=False) \
|
||||
.order_by('name').distinct()
|
||||
|
||||
my_teams_projects = \
|
||||
Project.objects \
|
||||
.filter(team__teammembership__in=my_team_memberships, is_deleted=False) \
|
||||
.filter(team_id__in=TeamMembership.objects.filter(user=request.user).values('team_id'), is_deleted=False) \
|
||||
.exclude(projectmembership__in=my_memberships) \
|
||||
.order_by('name').distinct()
|
||||
|
||||
if request.user.is_superuser:
|
||||
# superusers can see all project, even hidden ones
|
||||
# superusers can see all projects, even hidden ones
|
||||
other_projects = Project.objects \
|
||||
.filter(is_deleted=False) \
|
||||
.exclude(projectmembership__in=my_memberships) \
|
||||
.exclude(team__teammembership__in=my_team_memberships) \
|
||||
.exclude(id__in=ProjectMembership.objects.filter(user=request.user).values('project_id')) \
|
||||
.exclude(team_id__in=TeamMembership.objects.filter(user=request.user).values('team_id')) \
|
||||
.order_by('name').distinct()
|
||||
else:
|
||||
other_projects = Project.objects \
|
||||
.filter(is_deleted=False) \
|
||||
.exclude(projectmembership__in=my_memberships) \
|
||||
.exclude(team__teammembership__in=my_team_memberships) \
|
||||
.exclude(id__in=ProjectMembership.objects.filter(user=request.user).values('project_id')) \
|
||||
.exclude(team_id__in=TeamMembership.objects.filter(user=request.user).values('team_id')) \
|
||||
.exclude(visibility=ProjectVisibility.TEAM_MEMBERS) \
|
||||
.order_by('name').distinct()
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@ User = get_user_model()
|
||||
@atomic_for_request_method
|
||||
def team_list(request, ownership_filter=None):
|
||||
my_memberships = TeamMembership.objects.filter(user=request.user)
|
||||
my_teams = Team.objects.filter(teammembership__in=my_memberships)
|
||||
|
||||
# using `id__in` here to ensure the member_count later on is not restricted to our own memberships (at most 1)
|
||||
my_teams = Team.objects.filter(id__in=TeamMembership.objects.filter(user=request.user).values('team_id'))
|
||||
|
||||
if request.user.is_superuser:
|
||||
# superusers can see all teams, even hidden ones
|
||||
|
||||
Reference in New Issue
Block a user