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