From 4c91f4a33a31b447ef75b25806335f4f7f6bc746 Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Mon, 10 Feb 2025 14:49:46 +0530 Subject: [PATCH] fix: user role and member count for new workspace --- apiserver/plane/app/serializers/workspace.py | 1 - apiserver/plane/app/views/workspace/base.py | 35 +++++++++----------- packages/types/src/workspace.d.ts | 1 - web/app/layout.tsx | 2 +- 4 files changed, 17 insertions(+), 22 deletions(-) diff --git a/apiserver/plane/app/serializers/workspace.py b/apiserver/plane/app/serializers/workspace.py index 485a127aa74..87711c8e053 100644 --- a/apiserver/plane/app/serializers/workspace.py +++ b/apiserver/plane/app/serializers/workspace.py @@ -33,7 +33,6 @@ class WorkSpaceSerializer(DynamicBaseSerializer): total_members = serializers.IntegerField(read_only=True) - total_issues = serializers.IntegerField(read_only=True) logo_url = serializers.CharField(read_only=True) role = serializers.IntegerField(read_only=True) diff --git a/apiserver/plane/app/views/workspace/base.py b/apiserver/plane/app/views/workspace/base.py index 4d81eb1607d..f5a8951f777 100644 --- a/apiserver/plane/app/views/workspace/base.py +++ b/apiserver/plane/app/views/workspace/base.py @@ -64,12 +64,6 @@ def get_queryset(self): .values("count") ) - issue_count = ( - Issue.issue_objects.filter(workspace=OuterRef("id")) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") - ) return ( self.filter_queryset(super().get_queryset().select_related("owner")) .order_by("name") @@ -78,8 +72,6 @@ def get_queryset(self): workspace_member__is_active=True, ) .annotate(total_members=member_count) - .annotate(total_issues=issue_count) - .select_related("owner") ) def create(self, request): @@ -125,7 +117,21 @@ def create(self, request): role=20, company_role=request.data.get("company_role", ""), ) - return Response(serializer.data, status=status.HTTP_201_CREATED) + + # Get total members and role + total_members=WorkspaceMember.objects.filter(workspace_id=serializer.data["id"]).count() + role=( + WorkspaceMember.objects.filter( + workspace_id=serializer.data["id"], + member=request.user, + is_active=True, + ).values("role") + ) + data = serializer.data + data["total_members"] = total_members + data["role"] = role.first().get("role") + + return Response(data, status=status.HTTP_201_CREATED) return Response( [serializer.errors[error][0] for error in serializer.errors], status=status.HTTP_400_BAD_REQUEST, @@ -168,13 +174,6 @@ def get(self, request): .values("count") ) - issue_count = ( - Issue.issue_objects.filter(workspace=OuterRef("id")) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") - ) - role = ( WorkspaceMember.objects.filter(workspace=OuterRef("id"), member=request.user, is_active=True) .values("role") @@ -189,9 +188,7 @@ def get(self, request): ), ) ) - .select_related("owner") - .annotate(total_members=member_count) - .annotate(total_issues=issue_count, role=role) + .annotate(role=role, total_members=member_count) .filter( workspace_member__member=request.user, workspace_member__is_active=True ) diff --git a/packages/types/src/workspace.d.ts b/packages/types/src/workspace.d.ts index b68cddd7d01..9320f9b5943 100644 --- a/packages/types/src/workspace.d.ts +++ b/packages/types/src/workspace.d.ts @@ -21,7 +21,6 @@ export interface IWorkspace { readonly created_by: string; readonly updated_by: string; organization_size: string; - total_issues: number; total_projects?: number; current_plan?: string; role: number; diff --git a/web/app/layout.tsx b/web/app/layout.tsx index 71b7b71d28a..6024753df80 100644 --- a/web/app/layout.tsx +++ b/web/app/layout.tsx @@ -67,7 +67,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })