From 5b7912b558667e26f4428d230d252f3cc6d6be85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A1n=20Jes=C3=BAs=20Pe=C3=B1a=20Rodr=C3=ADguez?= Date: Tue, 8 Apr 2025 11:50:22 +0200 Subject: [PATCH] fix(provider): disable periodic task on views before deleting (#7466) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Víctor Fernández Poyatos --- api/CHANGELOG.md | 7 +++++++ api/src/backend/api/v1/views.py | 5 +++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/api/CHANGELOG.md b/api/CHANGELOG.md index c8970de572..9ddd23edc6 100644 --- a/api/CHANGELOG.md +++ b/api/CHANGELOG.md @@ -16,6 +16,13 @@ All notable changes to the **Prowler API** are documented in this file. --- +## [v1.5.4] (Prowler v5.4.4) + +### Fixed +- Fixed a bug with periodic tasks when trying to delete a provider ([#7466])(https://github.com/prowler-cloud/prowler/pull/7466). + +--- + ## [v1.5.3] (Prowler v5.4.3) ### Fixed diff --git a/api/src/backend/api/v1/views.py b/api/src/backend/api/v1/views.py index 8fd5254ba5..e8dd81ac29 100644 --- a/api/src/backend/api/v1/views.py +++ b/api/src/backend/api/v1/views.py @@ -22,6 +22,7 @@ from django.http import HttpResponse from django.urls import reverse from django.utils.decorators import method_decorator from django.views.decorators.cache import cache_control +from django_celery_beat.models import PeriodicTask from drf_spectacular.settings import spectacular_settings from drf_spectacular.utils import ( OpenApiParameter, @@ -55,7 +56,6 @@ from tasks.tasks import ( from api.base_views import BaseRLSViewSet, BaseTenantViewset, BaseUserViewset from api.db_router import MainRouter -from api.db_utils import delete_related_daily_task from api.filters import ( ComplianceOverviewFilter, FindingFilter, @@ -1089,7 +1089,8 @@ class ProviderViewSet(BaseRLSViewSet): provider = get_object_or_404(Provider, pk=pk) provider.is_deleted = True provider.save() - delete_related_daily_task(str(provider.id)) + task_name = f"scan-perform-scheduled-{pk}" + PeriodicTask.objects.filter(name=task_name).update(enabled=False) with transaction.atomic(): task = delete_provider_task.delay(