Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apiserver/plane/app/serializers/workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@


class WorkSpaceSerializer(DynamicBaseSerializer):
owner = UserLiteSerializer(read_only=True)
total_members = serializers.IntegerField(read_only=True)
total_issues = serializers.IntegerField(read_only=True)
logo_url = serializers.CharField(read_only=True)
role = serializers.CharField(read_only=True)

def validate_slug(self, value):
# Check if the slug is restricted
Expand Down
5 changes: 2 additions & 3 deletions apiserver/plane/app/views/analytic/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -456,7 +456,7 @@ class ProjectStatsEndpoint(BaseAPIView):
@allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST], level="WORKSPACE")
def get(self, request, slug):
fields = request.GET.get("fields", "").split(",")
project_ids = request.GET.get("project_ids", "").split(",")
project_ids = request.GET.get("project_ids", "")

valid_fields = {
"total_issues",
Expand All @@ -471,9 +471,8 @@ def get(self, request, slug):
requested_fields = valid_fields

projects = Project.objects.filter(workspace__slug=slug)

if project_ids:
projects = projects.filter(id__in=project_ids)
projects = projects.filter(id__in=project_ids.split(","))

annotations = {}
if "total_issues" in requested_fields:
Expand Down
11 changes: 10 additions & 1 deletion apiserver/plane/app/views/workspace/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,11 @@
from dateutil.relativedelta import relativedelta
from django.db import IntegrityError
from django.db.models import Count, F, Func, OuterRef, Prefetch, Q

from django.db.models.fields import DateField
from django.db.models.functions import Cast, ExtractDay, ExtractWeek


# Django imports
from django.http import HttpResponse
from django.utils import timezone
Expand Down Expand Up @@ -173,6 +175,11 @@ def get(self, request):
.values("count")
)

role = (
WorkspaceMember.objects.filter(workspace=OuterRef("id"), member=request.user, is_active=True)
.values("role")
)

workspace = (
Workspace.objects.prefetch_related(
Prefetch(
Expand All @@ -184,17 +191,19 @@ def get(self, request):
)
.select_related("owner")
.annotate(total_members=member_count)
.annotate(total_issues=issue_count)
.annotate(total_issues=issue_count, role=role)
.filter(
workspace_member__member=request.user, workspace_member__is_active=True
)
.distinct()
)

workspaces = WorkSpaceSerializer(
self.filter_queryset(workspace),
fields=fields if fields else None,
many=True,
).data

return Response(workspaces, status=status.HTTP_200_OK)


Expand Down
Loading