# HG changeset patch # User Marcin Kuzminski # Date 2013-02-20 23:41:48 # Node ID f282c81ff53246220a160f5bcadfbf8f100ba714 # Parent 4cd84f4f28fbe2ff55d78439bea6ee47a21a8cb1 implemented #689 Deleting Repositories with Forks Should Be Easier - optionally detach or delete forks associated to repo diff --git a/rhodecode/controllers/admin/repos.py b/rhodecode/controllers/admin/repos.py --- a/rhodecode/controllers/admin/repos.py +++ b/rhodecode/controllers/admin/repos.py @@ -286,6 +286,20 @@ class ReposController(BaseRepoController h.not_mapped_error(repo_name) return redirect(url('repos')) try: + _forks = repo.forks.count() + if _forks and request.POST.get('forks'): + do = request.POST['forks'] + if do == 'detach_forks': + for r in repo.forks: + log.debug('Detaching fork %s from repo %s' % (r, repo)) + r.fork = None + Session().add(r) + h.flash(_('detached %s forks') % _forks, category='success') + elif do == 'delete_forks': + for r in repo.forks: + log.debug('Deleting fork %s of repo %s' % (r, repo)) + repo_model.delete(r) + h.flash(_('deleted %s forks') % _forks, category='success') action_logger(self.rhodecode_user, 'admin_deleted_repo', repo_name, self.ip_addr, self.sa) repo_model.delete(repo) diff --git a/rhodecode/templates/admin/repos/repo_edit.html b/rhodecode/templates/admin/repos/repo_edit.html --- a/rhodecode/templates/admin/repos/repo_edit.html +++ b/rhodecode/templates/admin/repos/repo_edit.html @@ -291,6 +291,11 @@
${h.submit('remove_%s' % c.repo_info.repo_name,_('Remove this repository'),class_="ui-btn red",onclick="return confirm('"+_('Confirm to delete this repository')+"');")} + %if c.repo_info.forks.count(): + - ${ungettext('this repository has %s fork', 'this repository has %s forks', c.repo_info.forks.count()) % c.repo_info.forks.count()} + + + %endif