diff rhodecode/controllers/admin/repos.py @ 3391:f282c81ff532 beta

implemented #689 Deleting Repositories with Forks Should Be Easier - optionally detach or delete forks associated to repo
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 21 Feb 2013 00:41:48 +0100
parents 157231a4fcb7
children 5f1850e4712a
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos.py	Wed Feb 20 23:44:27 2013 +0100
+++ b/rhodecode/controllers/admin/repos.py	Thu Feb 21 00:41:48 2013 +0100
@@ -286,6 +286,20 @@
             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)