From 29fd1186eed5ab97ed52af5559dca4c2699d02d1 Mon Sep 17 00:00:00 2001 From: Ketan Sharma Date: Sat, 7 Sep 2024 08:58:28 +0530 Subject: [PATCH] [WEB-2129] fix: module creation and updation toast error (#5550) * chore: added error message for module name * used the backend message --------- Co-authored-by: NarayanBavisetti --- apiserver/plane/api/serializers/module.py | 23 +++++++++++++++++++++++ apiserver/plane/app/serializers/module.py | 23 +++++++++++++++++++++++ web/core/components/modules/modal.tsx | 4 ++-- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/apiserver/plane/api/serializers/module.py b/apiserver/plane/api/serializers/module.py index a768cd26c..c1a0c577d 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 fc228b6b9..48ace6022 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/web/core/components/modules/modal.tsx b/web/core/components/modules/modal.tsx index 11df178b8..aed1b9019 100644 --- a/web/core/components/modules/modal.tsx +++ b/web/core/components/modules/modal.tsx @@ -71,7 +71,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { setToast({ type: TOAST_TYPE.ERROR, title: "Error!", - message: err?.detail ?? "Module could not be created. Please try again.", + message: err?.detail ?? err?.error ?? "Module could not be created. Please try again.", }); captureModuleEvent({ eventName: MODULE_CREATED, @@ -102,7 +102,7 @@ export const CreateUpdateModuleModal: React.FC = observer((props) => { setToast({ type: TOAST_TYPE.ERROR, title: "Error!", - message: err?.detail ?? "Module could not be updated. Please try again.", + message: err?.detail ?? err?.error ?? "Module could not be updated. Please try again.", }); captureModuleEvent({ eventName: MODULE_UPDATED,