From c2ba3374cc7fbaace61788dca8da5b00b37bcbe4 Mon Sep 17 00:00:00 2001 From: gakshita Date: Mon, 10 Feb 2025 14:08:50 +0530 Subject: [PATCH 1/3] fix: workspace roles for settings and members button --- web/core/components/workspace/sidebar/dropdown-item.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/core/components/workspace/sidebar/dropdown-item.tsx b/web/core/components/workspace/sidebar/dropdown-item.tsx index 1b8ace7c214..183a8fdb396 100644 --- a/web/core/components/workspace/sidebar/dropdown-item.tsx +++ b/web/core/components/workspace/sidebar/dropdown-item.tsx @@ -85,7 +85,7 @@ const SidebarDropdownItem = observer((props: TProps) => { {workspace.id === activeWorkspace?.id && ( <> - {workspace?.role > EUserPermissions.GUEST && ( + {workspace?.role === EUserPermissions.ADMIN && (
Date: Mon, 10 Feb 2025 14:49:46 +0530 Subject: [PATCH 2/3] 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 }) From 531beb9700e6c33dd763667bf709f19f6b5a3dda Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Mon, 10 Feb 2025 14:54:08 +0530 Subject: [PATCH 3/3] chore: set role to 20 while workspace creation --- apiserver/plane/app/views/workspace/base.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/apiserver/plane/app/views/workspace/base.py b/apiserver/plane/app/views/workspace/base.py index f5a8951f777..5be9a7558cb 100644 --- a/apiserver/plane/app/views/workspace/base.py +++ b/apiserver/plane/app/views/workspace/base.py @@ -120,16 +120,9 @@ def create(self, request): # 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") + data["role"] = 20 return Response(data, status=status.HTTP_201_CREATED) return Response(