Skip to content

Commit

Permalink
Merge pull request #6547 from makeplane/feat-users-workspace-api-modi…
Browse files Browse the repository at this point in the history
…fication

chore: user workspace api modification
  • Loading branch information
sangeethailango authored Feb 5, 2025
2 parents 3e90e8f + c4b4caf commit 8623bea
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
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

0 comments on commit 8623bea

Please sign in to comment.