mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
dev: workspace states and estimates
This commit is contained in:
parent
37ddc64b83
commit
ba27cc57bd
@ -104,6 +104,7 @@ from .estimate import (
|
|||||||
EstimateSerializer,
|
EstimateSerializer,
|
||||||
EstimatePointSerializer,
|
EstimatePointSerializer,
|
||||||
EstimateReadSerializer,
|
EstimateReadSerializer,
|
||||||
|
WorkspaceEstimateSerializer,
|
||||||
)
|
)
|
||||||
|
|
||||||
from .inbox import (
|
from .inbox import (
|
||||||
|
@ -61,3 +61,18 @@ class EstimateReadSerializer(BaseSerializer):
|
|||||||
"name",
|
"name",
|
||||||
"description",
|
"description",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class WorkspaceEstimateSerializer(BaseSerializer):
|
||||||
|
points = EstimatePointSerializer(read_only=True, many=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Estimate
|
||||||
|
fields = "__all__"
|
||||||
|
read_only_fields = [
|
||||||
|
"points",
|
||||||
|
"name",
|
||||||
|
"description",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ from plane.app.views import (
|
|||||||
WorkspaceLabelsEndpoint,
|
WorkspaceLabelsEndpoint,
|
||||||
WorkspaceProjectMemberEndpoint,
|
WorkspaceProjectMemberEndpoint,
|
||||||
WorkspaceUserPropertiesEndpoint,
|
WorkspaceUserPropertiesEndpoint,
|
||||||
|
WorkspaceStatesEndpoint,
|
||||||
|
WorkspaceEstimatesEndpoint,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -207,4 +209,14 @@ urlpatterns = [
|
|||||||
WorkspaceUserPropertiesEndpoint.as_view(),
|
WorkspaceUserPropertiesEndpoint.as_view(),
|
||||||
name="workspace-user-filters",
|
name="workspace-user-filters",
|
||||||
),
|
),
|
||||||
|
path(
|
||||||
|
"workspaces/<str:slug>/states/",
|
||||||
|
WorkspaceStatesEndpoint.as_view(),
|
||||||
|
name="workspace-state",
|
||||||
|
),
|
||||||
|
path(
|
||||||
|
"workspaces/<str:slug>/estimates/",
|
||||||
|
WorkspaceEstimatesEndpoint.as_view(),
|
||||||
|
name="workspace-estimate",
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
@ -47,6 +47,8 @@ from .workspace import (
|
|||||||
WorkspaceLabelsEndpoint,
|
WorkspaceLabelsEndpoint,
|
||||||
WorkspaceProjectMemberEndpoint,
|
WorkspaceProjectMemberEndpoint,
|
||||||
WorkspaceUserPropertiesEndpoint,
|
WorkspaceUserPropertiesEndpoint,
|
||||||
|
WorkspaceStatesEndpoint,
|
||||||
|
WorkspaceEstimatesEndpoint,
|
||||||
)
|
)
|
||||||
from .state import StateViewSet
|
from .state import StateViewSet
|
||||||
from .view import (
|
from .view import (
|
||||||
|
@ -9,9 +9,12 @@ from rest_framework.response import Response
|
|||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
|
|
||||||
# Module imports
|
# Module imports
|
||||||
from . import BaseViewSet
|
from . import BaseViewSet, BaseAPIView
|
||||||
from plane.app.serializers import StateSerializer
|
from plane.app.serializers import StateSerializer
|
||||||
from plane.app.permissions import ProjectEntityPermission
|
from plane.app.permissions import (
|
||||||
|
ProjectEntityPermission,
|
||||||
|
WorkspaceEntityPermission,
|
||||||
|
)
|
||||||
from plane.db.models import State, Issue
|
from plane.db.models import State, Issue
|
||||||
|
|
||||||
|
|
||||||
|
@ -46,10 +46,12 @@ from plane.app.serializers import (
|
|||||||
WorkspaceMemberMeSerializer,
|
WorkspaceMemberMeSerializer,
|
||||||
ProjectMemberRoleSerializer,
|
ProjectMemberRoleSerializer,
|
||||||
WorkspaceUserPropertiesSerializer,
|
WorkspaceUserPropertiesSerializer,
|
||||||
|
WorkspaceEstimateSerializer,
|
||||||
)
|
)
|
||||||
from plane.app.views.base import BaseAPIView
|
from plane.app.views.base import BaseAPIView
|
||||||
from . import BaseViewSet
|
from . import BaseViewSet
|
||||||
from plane.db.models import (
|
from plane.db.models import (
|
||||||
|
State,
|
||||||
User,
|
User,
|
||||||
Workspace,
|
Workspace,
|
||||||
WorkspaceMemberInvite,
|
WorkspaceMemberInvite,
|
||||||
@ -67,6 +69,8 @@ from plane.db.models import (
|
|||||||
CycleIssue,
|
CycleIssue,
|
||||||
IssueReaction,
|
IssueReaction,
|
||||||
WorkspaceUserProperties,
|
WorkspaceUserProperties,
|
||||||
|
Estimate,
|
||||||
|
EstimatePoint,
|
||||||
)
|
)
|
||||||
from plane.app.permissions import (
|
from plane.app.permissions import (
|
||||||
WorkSpaceBasePermission,
|
WorkSpaceBasePermission,
|
||||||
@ -1453,6 +1457,44 @@ class WorkspaceLabelsEndpoint(BaseAPIView):
|
|||||||
return Response(labels, status=status.HTTP_200_OK)
|
return Response(labels, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class WorkspaceStatesEndpoint(BaseAPIView):
|
||||||
|
permission_classes = [
|
||||||
|
WorkspaceEntityPermission,
|
||||||
|
]
|
||||||
|
|
||||||
|
def get(self, request, slug):
|
||||||
|
states = State.objects.filter(
|
||||||
|
workspace__slug=slug,
|
||||||
|
project__project_projectmember__member=request.user,
|
||||||
|
).values(
|
||||||
|
"id", "project_id", "workspace__slug", "name", "color", "group"
|
||||||
|
)
|
||||||
|
return Response(states, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
|
class WorkspaceEstimatesEndpoint(BaseAPIView):
|
||||||
|
permission_classes = [
|
||||||
|
WorkspaceEntityPermission,
|
||||||
|
]
|
||||||
|
|
||||||
|
def get(self, request, slug):
|
||||||
|
estimate_ids = Project.objects.filter(
|
||||||
|
workspace__slug=slug, estimate__isnull=False
|
||||||
|
).values_list("estimate_id", flat=True)
|
||||||
|
estimates = Estimate.objects.filter(
|
||||||
|
pk__in=estimate_ids
|
||||||
|
).prefetch_related(
|
||||||
|
Prefetch(
|
||||||
|
"points",
|
||||||
|
queryset=EstimatePoint.objects.select_related(
|
||||||
|
"estimate", "workspace", "project"
|
||||||
|
),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
serializer = WorkspaceEstimateSerializer(estimates, many=True)
|
||||||
|
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
|
|
||||||
class WorkspaceUserPropertiesEndpoint(BaseAPIView):
|
class WorkspaceUserPropertiesEndpoint(BaseAPIView):
|
||||||
permission_classes = [
|
permission_classes = [
|
||||||
WorkspaceViewerPermission,
|
WorkspaceViewerPermission,
|
||||||
|
Loading…
Reference in New Issue
Block a user