From 203936cbd8d4d0fec3c2678e097c29e5f8febd72 Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Tue, 29 Jul 2025 11:28:12 +0200 Subject: [PATCH] feature: work in progress --- rhodecode/api/views/repo_api.py | 4 +++- rhodecode/model/repo.py | 20 +++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/rhodecode/api/views/repo_api.py b/rhodecode/api/views/repo_api.py index 593a1fa6..7cf5d939 100644 --- a/rhodecode/api/views/repo_api.py +++ b/rhodecode/api/views/repo_api.py @@ -1359,6 +1359,8 @@ def delete_repo(request, apiuser, repoid, forks=Optional("")): _perms = ("repository.admin",) validate_repo_permissions(apiuser, repoid, repo, _perms) + deprecation_warning = "NOTE: 'forks' option will be deprecated." + try: handle_forks = Optional.extract(forks) _forks_msg = "" @@ -1378,7 +1380,7 @@ def delete_repo(request, apiuser, repoid, forks=Optional("")): ScmModel().mark_for_invalidation(repo_name, delete=True) Session().commit() - return {"msg": f"Deleted repository `{repo_name}`{_forks_msg}", "success": True} + return {"msg": f"Deleted repository `{repo_name}`{_forks_msg}; {deprecation_warning}", "success": True} except Exception: log.exception("Exception occurred while trying to delete repo") raise JSONRPCError(f"failed to delete repository `{repo_name}`") diff --git a/rhodecode/model/repo.py b/rhodecode/model/repo.py index 301997e6..c9079e26 100644 --- a/rhodecode/model/repo.py +++ b/rhodecode/model/repo.py @@ -15,7 +15,7 @@ # This program is dual-licensed. If you wish to learn more about the # RhodeCode Enterprise Edition, including its added features, Support services, # and proprietary license terms, please see https://rhodecode.com/licenses/ - +import itertools import os import re import shutil @@ -69,7 +69,6 @@ from rhodecode.model.db import ( UserLog, ) from rhodecode.model.permission import PermissionModel -from rhodecode.model.settings import VcsSettingsModel log = logging.getLogger(__name__) @@ -769,6 +768,10 @@ class RepoModel(BaseModel): if not repo: return False + if not forks: # left for backward compatibility + is_private = repo.private + forks = "delete" if is_private else "detach" + if forks == "detach": for r in repo.forks: r.fork = None @@ -782,15 +785,10 @@ class RepoModel(BaseModel): # check for pull requests pr_sources = repo.pull_requests_source pr_targets = repo.pull_requests_target - if pull_requests != "delete" and (pr_sources or pr_targets): - raise AttachedPullRequestsError() - - artifacts_objs = repo.artifacts - if artifacts == "delete": - for a in artifacts_objs: - self.sa.delete(a) - elif [a for a in artifacts_objs]: - raise AttachedArtifactsError() + artifacts = repo.artifacts + # FIXME: continue here + for pr in itertools.chain(pr_sources, pr_targets, artifacts): + self.sa.delete(pr) old_repo_dict = repo.get_dict() if call_events: