diff --git a/apiserver/apimodels/projects.py b/apiserver/apimodels/projects.py index 2e72c9e..0fcc627 100644 --- a/apiserver/apimodels/projects.py +++ b/apiserver/apimodels/projects.py @@ -23,6 +23,7 @@ class MoveRequest(ProjectRequest): class DeleteRequest(ProjectRequest): force = fields.BoolField(default=False) delete_contents = fields.BoolField(default=False) + delete_external_artifacts = fields.BoolField(default=True) class ProjectOrNoneRequest(models.Base): diff --git a/apiserver/bll/model/__init__.py b/apiserver/bll/model/__init__.py index e8bd658..0c99ea8 100644 --- a/apiserver/bll/model/__init__.py +++ b/apiserver/bll/model/__init__.py @@ -14,6 +14,8 @@ from .metadata import Metadata class ModelBLL: + event_bll = None + @classmethod def get_company_model_by_id( cls, company_id: str, model_id: str, only_fields=None @@ -156,6 +158,11 @@ class ModelBLL: can_delete_folders=False, ) + if not cls.event_bll: + from apiserver.bll.event import EventBLL + cls.event_bll = EventBLL() + + cls.event_bll.delete_task_events(company_id, model_id, allow_locked=True, model=True) del_count = Model.objects(id=model_id, company=company_id).delete() return del_count, model diff --git a/apiserver/bll/project/project_cleanup.py b/apiserver/bll/project/project_cleanup.py index b33b6f5..9f28cfa 100644 --- a/apiserver/bll/project/project_cleanup.py +++ b/apiserver/bll/project/project_cleanup.py @@ -128,7 +128,7 @@ def delete_project( project_id: str, force: bool, delete_contents: bool, - delete_external_artifacts=True, + delete_external_artifacts: bool, ) -> Tuple[DeleteProjectResult, Set[str]]: project = Project.get_for_writing( company=company, id=project_id, _only=("id", "path", "system_tags") diff --git a/apiserver/schema/services/projects.conf b/apiserver/schema/services/projects.conf index aa8ba61..f85d3fd 100644 --- a/apiserver/schema/services/projects.conf +++ b/apiserver/schema/services/projects.conf @@ -888,6 +888,13 @@ delete { } } } + "2.26": ${delete."2.13"} { + request.properties.delete_external_artifacts { + description: "If set to 'true' then BE will try to delete the extenal artifacts associated with the project tasks and models from the fileserver (if configured to do so)" + type: boolean + default: true + } + } } get_unique_metric_variants { "2.1" { diff --git a/apiserver/services/projects.py b/apiserver/services/projects.py index 659e38f..e2ddc2b 100644 --- a/apiserver/services/projects.py +++ b/apiserver/services/projects.py @@ -356,6 +356,7 @@ def delete(call: APICall, company_id: str, request: DeleteRequest): project_id=request.project, force=request.force, delete_contents=request.delete_contents, + delete_external_artifacts=request.delete_external_artifacts, ) _reset_cached_tags(company_id, projects=list(affected_projects)) call.result.data = {**attr.asdict(res)}