diff --git a/apiserver/plane/api/serializers/module.py b/apiserver/plane/api/serializers/module.py index a768cd26c6..c1a0c577db 100644 --- a/apiserver/plane/api/serializers/module.py +++ b/apiserver/plane/api/serializers/module.py @@ -71,6 +71,16 @@ class ModuleSerializer(BaseSerializer): project_id = self.context["project_id"] workspace_id = self.context["workspace_id"] + module_name = validated_data.get("name") + if module_name: + # Lookup for the module name in the module table for that project + if Module.objects.filter( + name=module_name, project_id=project_id + ).exists(): + raise serializers.ValidationError( + {"error": "Module with this name already exists"} + ) + module = Module.objects.create(**validated_data, project_id=project_id) if members is not None: ModuleMember.objects.bulk_create( @@ -93,6 +103,19 @@ class ModuleSerializer(BaseSerializer): def update(self, instance, validated_data): members = validated_data.pop("members", None) + module_name = validated_data.get("name") + if module_name: + # Lookup for the module name in the module table for that project + if ( + Module.objects.filter( + name=module_name, project=instance.project + ) + .exclude(id=instance.id) + .exists() + ): + raise serializers.ValidationError( + {"error": "Module with this name already exists"} + ) if members is not None: ModuleMember.objects.filter(module=instance).delete() diff --git a/apiserver/plane/app/serializers/module.py b/apiserver/plane/app/serializers/module.py index fc228b6b96..48ace60222 100644 --- a/apiserver/plane/app/serializers/module.py +++ b/apiserver/plane/app/serializers/module.py @@ -68,6 +68,16 @@ class ModuleWriteSerializer(BaseSerializer): members = validated_data.pop("member_ids", None) project = self.context["project"] + module_name = validated_data.get("name") + if module_name: + # Lookup for the module name in the module table for that project + if Module.objects.filter( + name=module_name, project=project + ).exists(): + raise serializers.ValidationError( + {"error": "Module with this name already exists"} + ) + module = Module.objects.create(**validated_data, project=project) if members is not None: ModuleMember.objects.bulk_create( @@ -90,6 +100,19 @@ class ModuleWriteSerializer(BaseSerializer): def update(self, instance, validated_data): members = validated_data.pop("member_ids", None) + module_name = validated_data.get("name") + if module_name: + # Lookup for the module name in the module table for that project + if ( + Module.objects.filter( + name=module_name, project=instance.project + ) + .exclude(id=instance.id) + .exists() + ): + raise serializers.ValidationError( + {"error": "Module with this name already exists"} + ) if members is not None: ModuleMember.objects.filter(module=instance).delete() diff --git a/live/src/server.ts b/live/src/server.ts index 494342305d..94b44ccbad 100644 --- a/live/src/server.ts +++ b/live/src/server.ts @@ -41,7 +41,7 @@ router.ws("/collaboration", (ws, req) => { app.use(process.env.LIVE_BASE_PATH || "/live", router); -app.use((_req, res, _next) => { +app.use((_req, res) => { res.status(404).send("Not Found"); }); diff --git a/packages/editor/src/core/components/editors/document/collaborative-editor.tsx b/packages/editor/src/core/components/editors/document/collaborative-editor.tsx index 9d5a42a81d..4d7008f2ec 100644 --- a/packages/editor/src/core/components/editors/document/collaborative-editor.tsx +++ b/packages/editor/src/core/components/editors/document/collaborative-editor.tsx @@ -3,14 +3,14 @@ import React from "react"; import { PageRenderer } from "@/components/editors"; // constants import { DEFAULT_DISPLAY_CONFIG } from "@/constants/config"; +// extensions +import { IssueWidget } from "@/extensions"; // helpers import { getEditorClassNames } from "@/helpers/common"; -// plane editor types -import { TEmbedConfig } from "@/plane-editor/types"; +// hooks +import { useCollaborativeEditor } from "@/hooks/use-collaborative-editor"; // types import { EditorRefApi, ICollaborativeDocumentEditor } from "@/types"; -import { useCollaborativeEditor } from "@/hooks/use-collaborative-editor"; -import { IssueWidget } from "@/extensions"; const CollaborativeDocumentEditor = (props: ICollaborativeDocumentEditor) => { const { diff --git a/web/core/components/icons/locked-component.tsx b/web/core/components/icons/locked-component.tsx index 653d2b8e7b..36230a093c 100644 --- a/web/core/components/icons/locked-component.tsx +++ b/web/core/components/icons/locked-component.tsx @@ -4,7 +4,7 @@ import { Tooltip } from "@plane/ui"; export const LockedComponent = (props: { toolTipContent?: string }) => { const { toolTipContent } = props; const lockedComponent = ( -