diff --git a/backend/igny8_core/modules/planner/views.py b/backend/igny8_core/modules/planner/views.py index 5fb39c94..cccc0cdf 100644 --- a/backend/igny8_core/modules/planner/views.py +++ b/backend/igny8_core/modules/planner/views.py @@ -185,7 +185,7 @@ class KeywordViewSet(SiteSectorModelViewSet): # Save with all required fields explicitly serializer.save(account=account, site=site, sector=sector) - @action(detail=False, methods=['post'], url_path='bulk_delete', url_name='bulk_delete') + @action(detail=False, methods=['POST'], url_path='bulk_delete', url_name='bulk_delete') def bulk_delete(self, request): """Bulk delete keywords""" ids = request.data.get('ids', []) @@ -714,6 +714,18 @@ class ClusterViewSet(SiteSectorModelViewSet): # Save with all required fields explicitly serializer.save(account=account, site=site, sector=sector) + @action(detail=False, methods=['POST'], url_path='bulk_delete', url_name='bulk_delete') + def bulk_delete(self, request): + """Bulk delete clusters""" + ids = request.data.get('ids', []) + if not ids: + return Response({'error': 'No IDs provided'}, status=status.HTTP_400_BAD_REQUEST) + + queryset = self.get_queryset() + deleted_count, _ = queryset.filter(id__in=ids).delete() + + return Response({'deleted_count': deleted_count}, status=status.HTTP_200_OK) + @action(detail=False, methods=['post'], url_path='auto_generate_ideas', url_name='auto_generate_ideas') def auto_generate_ideas(self, request): """Auto-generate ideas for clusters using AI - New unified framework""" @@ -902,6 +914,18 @@ class ContentIdeasViewSet(SiteSectorModelViewSet): serializer.save(account=account, site=site, sector=sector) + @action(detail=False, methods=['POST'], url_path='bulk_delete', url_name='bulk_delete') + def bulk_delete(self, request): + """Bulk delete content ideas""" + ids = request.data.get('ids', []) + if not ids: + return Response({'error': 'No IDs provided'}, status=status.HTTP_400_BAD_REQUEST) + + queryset = self.get_queryset() + deleted_count, _ = queryset.filter(id__in=ids).delete() + + return Response({'deleted_count': deleted_count}, status=status.HTTP_200_OK) + @action(detail=False, methods=['post'], url_path='bulk_queue_to_writer', url_name='bulk_queue_to_writer') def bulk_queue_to_writer(self, request): """Queue ideas to writer by creating Tasks""" diff --git a/backend/igny8_core/modules/writer/views.py b/backend/igny8_core/modules/writer/views.py index 8691eeb3..a76d21fa 100644 --- a/backend/igny8_core/modules/writer/views.py +++ b/backend/igny8_core/modules/writer/views.py @@ -78,7 +78,7 @@ class TasksViewSet(SiteSectorModelViewSet): serializer.save(account=account, site=site, sector=sector) - @action(detail=False, methods=['post'], url_path='bulk_delete', url_name='bulk_delete') + @action(detail=False, methods=['POST'], url_path='bulk_delete', url_name='bulk_delete') def bulk_delete(self, request): """Bulk delete tasks""" ids = request.data.get('ids', [])