mirror of
https://github.com/jlengrand/bugsink.git
synced 2026-03-10 08:01:17 +00: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
|
@atomic_for_request_method
|
||||||
def project_list(request, ownership_filter=None):
|
def project_list(request, ownership_filter=None):
|
||||||
my_memberships = ProjectMembership.objects.filter(user=request.user)
|
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(
|
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 = \
|
my_teams_projects = \
|
||||||
Project.objects \
|
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) \
|
.exclude(projectmembership__in=my_memberships) \
|
||||||
.order_by('name').distinct()
|
.order_by('name').distinct()
|
||||||
|
|
||||||
if request.user.is_superuser:
|
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 \
|
other_projects = Project.objects \
|
||||||
.filter(is_deleted=False) \
|
.filter(is_deleted=False) \
|
||||||
.exclude(projectmembership__in=my_memberships) \
|
.exclude(id__in=ProjectMembership.objects.filter(user=request.user).values('project_id')) \
|
||||||
.exclude(team__teammembership__in=my_team_memberships) \
|
.exclude(team_id__in=TeamMembership.objects.filter(user=request.user).values('team_id')) \
|
||||||
.order_by('name').distinct()
|
.order_by('name').distinct()
|
||||||
else:
|
else:
|
||||||
other_projects = Project.objects \
|
other_projects = Project.objects \
|
||||||
.filter(is_deleted=False) \
|
.filter(is_deleted=False) \
|
||||||
.exclude(projectmembership__in=my_memberships) \
|
.exclude(id__in=ProjectMembership.objects.filter(user=request.user).values('project_id')) \
|
||||||
.exclude(team__teammembership__in=my_team_memberships) \
|
.exclude(team_id__in=TeamMembership.objects.filter(user=request.user).values('team_id')) \
|
||||||
.exclude(visibility=ProjectVisibility.TEAM_MEMBERS) \
|
.exclude(visibility=ProjectVisibility.TEAM_MEMBERS) \
|
||||||
.order_by('name').distinct()
|
.order_by('name').distinct()
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,9 @@ User = get_user_model()
|
|||||||
@atomic_for_request_method
|
@atomic_for_request_method
|
||||||
def team_list(request, ownership_filter=None):
|
def team_list(request, ownership_filter=None):
|
||||||
my_memberships = TeamMembership.objects.filter(user=request.user)
|
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:
|
if request.user.is_superuser:
|
||||||
# superusers can see all teams, even hidden ones
|
# superusers can see all teams, even hidden ones
|
||||||
|
|||||||
Reference in New Issue
Block a user