From 550fe547e25d2247aba7e95d4c842dcce45ada00 Mon Sep 17 00:00:00 2001 From: Dheeraj Kumar Ketireddy Date: Tue, 29 Apr 2025 13:51:46 +0530 Subject: [PATCH] [WEB-3967] feat: Optimized module patch endpoint to reduce duplicate db calls (#6983) --- apiserver/plane/app/views/module/base.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apiserver/plane/app/views/module/base.py b/apiserver/plane/app/views/module/base.py index 62840f555..829f7a6b6 100644 --- a/apiserver/plane/app/views/module/base.py +++ b/apiserver/plane/app/views/module/base.py @@ -710,23 +710,31 @@ class ModuleViewSet(BaseViewSet): @allow_permission([ROLE.ADMIN, ROLE.MEMBER]) def partial_update(self, request, slug, project_id, pk): - module = self.get_queryset().filter(pk=pk) + module_queryset = self.get_queryset().filter(pk=pk) - if module.first().archived_at: + current_module = module_queryset.first() + + if not current_module: + return Response( + {"error": "Module not found"}, + status=status.HTTP_404_NOT_FOUND, + ) + + if current_module.archived_at: return Response( {"error": "Archived module cannot be updated"}, status=status.HTTP_400_BAD_REQUEST, ) current_instance = json.dumps( - ModuleSerializer(module.first()).data, cls=DjangoJSONEncoder + ModuleSerializer(current_module).data, cls=DjangoJSONEncoder ) serializer = ModuleWriteSerializer( - module.first(), data=request.data, partial=True + current_module, data=request.data, partial=True ) if serializer.is_valid(): serializer.save() - module = module.values( + module = module_queryset.values( # Required fields "id", "workspace_id",