Skip to content
Draft
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
13 changes: 1 addition & 12 deletions apps/api/plane/api/serializers/issue.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
# Module imports
from plane.db.models import (
Issue,
IssueType,
IssueActivity,
IssueAssignee,
FileAsset,
Expand Down Expand Up @@ -58,9 +57,6 @@ class IssueSerializer(BaseSerializer):
write_only=True,
required=False,
)
type_id = serializers.PrimaryKeyRelatedField(
source="type", queryset=IssueType.objects.all(), required=False, allow_null=True
)

class Meta:
model = Issue
Expand Down Expand Up @@ -151,14 +147,7 @@ def create(self, validated_data):
workspace_id = self.context["workspace_id"]
default_assignee_id = self.context["default_assignee_id"]

issue_type = validated_data.pop("type", None)

if not issue_type:
# Get default issue type
issue_type = IssueType.objects.filter(project_issue_types__project_id=project_id, is_default=True).first()
issue_type = issue_type

issue = Issue.objects.create(**validated_data, project_id=project_id, type=issue_type)
issue = Issue.objects.create(**validated_data, project_id=project_id)

# Issue Audit Users
created_by_id = issue.created_by_id
Expand Down
4 changes: 0 additions & 4 deletions apps/api/plane/app/serializers/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
WorkSpaceMemberSerializer,
WorkSpaceMemberInviteSerializer,
WorkspaceLiteSerializer,
WorkspaceThemeSerializer,
WorkspaceMemberAdminSerializer,
WorkspaceMemberMeSerializer,
WorkspaceUserPropertiesSerializer,
Expand Down Expand Up @@ -89,7 +88,6 @@

from .api import APITokenSerializer, APITokenReadSerializer

from .importer import ImporterSerializer

from .page import (
PageSerializer,
Expand All @@ -114,8 +112,6 @@
IntakeIssueDetailSerializer,
)

from .analytic import AnalyticViewSerializer

from .notification import NotificationSerializer, UserNotificationPreferenceSerializer

from .exporter import ExporterHistorySerializer
Expand Down
27 changes: 0 additions & 27 deletions apps/api/plane/app/serializers/analytic.py

This file was deleted.

16 changes: 0 additions & 16 deletions apps/api/plane/app/serializers/importer.py

This file was deleted.

34 changes: 0 additions & 34 deletions apps/api/plane/app/serializers/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
)
from plane.db.models import (
Page,
PageLabel,
Label,
ProjectPage,
Project,
Expand Down Expand Up @@ -55,7 +54,6 @@ class Meta:
read_only_fields = ["workspace", "owned_by"]

def create(self, validated_data):
labels = validated_data.pop("labels", None)
project_id = self.context["project_id"]
owned_by_id = self.context["owned_by_id"]
description = self.context["description"]
Expand Down Expand Up @@ -84,41 +82,9 @@ def create(self, validated_data):
updated_by_id=page.updated_by_id,
)

# Create page labels
if labels is not None:
PageLabel.objects.bulk_create(
[
PageLabel(
label=label,
page=page,
workspace_id=page.workspace_id,
created_by_id=page.created_by_id,
updated_by_id=page.updated_by_id,
)
for label in labels
],
batch_size=10,
)
return page

def update(self, instance, validated_data):
labels = validated_data.pop("labels", None)
if labels is not None:
PageLabel.objects.filter(page=instance).delete()
PageLabel.objects.bulk_create(
[
PageLabel(
label=label,
page=instance,
workspace_id=instance.workspace_id,
created_by_id=instance.created_by_id,
updated_by_id=instance.updated_by_id,
)
for label in labels
],
batch_size=10,
)

return super().update(instance, validated_data)


Expand Down
8 changes: 0 additions & 8 deletions apps/api/plane/app/serializers/workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
Workspace,
WorkspaceMember,
WorkspaceMemberInvite,
WorkspaceTheme,
WorkspaceUserProperties,
WorkspaceUserLink,
UserRecentVisit,
Expand Down Expand Up @@ -125,13 +124,6 @@ class Meta:
]


class WorkspaceThemeSerializer(BaseSerializer):
class Meta:
model = WorkspaceTheme
fields = "__all__"
read_only_fields = ["workspace", "actor"]


class WorkspaceUserPropertiesSerializer(BaseSerializer):
class Meta:
model = WorkspaceUserProperties
Expand Down
17 changes: 0 additions & 17 deletions apps/api/plane/app/urls/analytic.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@

from plane.app.views import (
AnalyticsEndpoint,
AnalyticViewViewset,
SavedAnalyticEndpoint,
ExportAnalyticsEndpoint,
AdvanceAnalyticsEndpoint,
AdvanceAnalyticsStatsEndpoint,
Expand All @@ -23,21 +21,6 @@
AnalyticsEndpoint.as_view(),
name="plane-analytics",
),
path(
"workspaces/<str:slug>/analytic-view/",
AnalyticViewViewset.as_view({"get": "list", "post": "create"}),
name="analytic-view",
),
path(
"workspaces/<str:slug>/analytic-view/<uuid:pk>/",
AnalyticViewViewset.as_view({"get": "retrieve", "patch": "partial_update", "delete": "destroy"}),
name="analytic-view",
),
path(
"workspaces/<str:slug>/saved-analytic-view/<uuid:analytic_id>/",
SavedAnalyticEndpoint.as_view(),
name="saved-analytic-view",
),
path(
"workspaces/<str:slug>/export-analytics/",
ExportAnalyticsEndpoint.as_view(),
Expand Down
11 changes: 0 additions & 11 deletions apps/api/plane/app/urls/workspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
WorkspaceMemberUserViewsEndpoint,
WorkSpaceAvailabilityCheckEndpoint,
UserLastProjectWithWorkspaceEndpoint,
WorkspaceThemeViewSet,
WorkspaceUserProfileStatsEndpoint,
WorkspaceUserActivityEndpoint,
WorkspaceUserProfileEndpoint,
Expand Down Expand Up @@ -115,16 +114,6 @@
WorkspaceMemberUserViewsEndpoint.as_view(),
name="workspace-member-views-details",
),
path(
"workspaces/<str:slug>/workspace-themes/",
WorkspaceThemeViewSet.as_view({"get": "list", "post": "create"}),
name="workspace-themes",
),
path(
"workspaces/<str:slug>/workspace-themes/<uuid:pk>/",
WorkspaceThemeViewSet.as_view({"get": "retrieve", "patch": "partial_update", "delete": "destroy"}),
name="workspace-themes",
),
path(
"workspaces/<str:slug>/user-stats/<uuid:user_id>/",
WorkspaceUserProfileStatsEndpoint.as_view(),
Expand Down
3 changes: 0 additions & 3 deletions apps/api/plane/app/views/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
UserWorkSpacesEndpoint,
WorkSpaceAvailabilityCheckEndpoint,
UserWorkspaceDashboardEndpoint,
WorkspaceThemeViewSet,
ExportWorkspaceUserActivityEndpoint,
)

Expand Down Expand Up @@ -194,8 +193,6 @@

from .analytic.base import (
AnalyticsEndpoint,
AnalyticViewViewset,
SavedAnalyticEndpoint,
ExportAnalyticsEndpoint,
DefaultAnalyticsEndpoint,
ProjectStatsEndpoint,
Expand Down
45 changes: 1 addition & 44 deletions apps/api/plane/app/views/analytic/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,10 @@
from rest_framework.response import Response

# Module imports
from plane.app.permissions import WorkSpaceAdminPermission
from plane.app.serializers import AnalyticViewSerializer
from plane.app.views.base import BaseAPIView, BaseViewSet
from plane.app.views.base import BaseAPIView
from plane.bgtasks.analytic_plot_export import analytic_export_task
from plane.db.models import (
AnalyticView,
Issue,
Workspace,
Project,
ProjectMember,
Cycle,
Expand Down Expand Up @@ -186,45 +182,6 @@ def get(self, request, slug):
)


class AnalyticViewViewset(BaseViewSet):
permission_classes = [WorkSpaceAdminPermission]
model = AnalyticView
serializer_class = AnalyticViewSerializer

def perform_create(self, serializer):
workspace = Workspace.objects.get(slug=self.kwargs.get("slug"))
serializer.save(workspace_id=workspace.id)

def get_queryset(self):
return self.filter_queryset(super().get_queryset().filter(workspace__slug=self.kwargs.get("slug")))


class SavedAnalyticEndpoint(BaseAPIView):
@allow_permission([ROLE.ADMIN, ROLE.MEMBER], level="WORKSPACE")
def get(self, request, slug, analytic_id):
analytic_view = AnalyticView.objects.get(pk=analytic_id, workspace__slug=slug)

filter = analytic_view.query
queryset = Issue.issue_objects.filter(**filter)

x_axis = analytic_view.query_dict.get("x_axis", False)
y_axis = analytic_view.query_dict.get("y_axis", False)

if not x_axis or not y_axis:
return Response(
{"error": "x-axis and y-axis dimensions are required"},
status=status.HTTP_400_BAD_REQUEST,
)

segment = request.GET.get("segment", False)
distribution = build_graph_plot(queryset=queryset, x_axis=x_axis, y_axis=y_axis, segment=segment)
total_issues = queryset.count()
return Response(
{"total": total_issues, "distribution": distribution},
status=status.HTTP_200_OK,
)


class ExportAnalyticsEndpoint(BaseAPIView):
@allow_permission([ROLE.ADMIN, ROLE.MEMBER], level="WORKSPACE")
def post(self, request, slug):
Expand Down
34 changes: 9 additions & 25 deletions apps/api/plane/app/views/workspace/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,13 @@
)

# Module imports
from plane.app.serializers import WorkSpaceSerializer, WorkspaceThemeSerializer
from plane.app.serializers import WorkSpaceSerializer
from plane.app.views.base import BaseAPIView, BaseViewSet
from plane.db.models import (
Issue,
IssueActivity,
Workspace,
WorkspaceMember,
WorkspaceTheme,
Profile,
)
from plane.app.permissions import ROLE, allow_permission
Expand Down Expand Up @@ -77,12 +76,14 @@ def get_queryset(self):

def create(self, request):
try:
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value([
{
"key": "DISABLE_WORKSPACE_CREATION",
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
}
])
(DISABLE_WORKSPACE_CREATION,) = get_configuration_value(
[
{
"key": "DISABLE_WORKSPACE_CREATION",
"default": os.environ.get("DISABLE_WORKSPACE_CREATION", "0"),
}
]
)

if DISABLE_WORKSPACE_CREATION == "1":
return Response(
Expand Down Expand Up @@ -341,23 +342,6 @@ def get(self, request, slug):
)


class WorkspaceThemeViewSet(BaseViewSet):
permission_classes = [WorkSpaceAdminPermission]
model = WorkspaceTheme
serializer_class = WorkspaceThemeSerializer

def get_queryset(self):
return super().get_queryset().filter(workspace__slug=self.kwargs.get("slug"))

def create(self, request, slug):
workspace = Workspace.objects.get(slug=slug)
serializer = WorkspaceThemeSerializer(data=request.data)
if serializer.is_valid():
serializer.save(workspace=workspace, actor=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


class ExportWorkspaceUserActivityEndpoint(BaseAPIView):
permission_classes = [WorkspaceEntityPermission]

Expand Down
Loading
Loading