changeset 1544:f82cdb15eee3 beta

Automated merge with https://bitbucket.org/marcinkuzminski/rhodecode
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 11 Oct 2011 08:36:52 +0200
parents 238b2805851f (current diff) ada6926c374f (diff)
children a7bee2a5de67
files
diffstat 2 files changed, 19 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/repos_groups.py	Tue Oct 11 02:13:32 2011 -0400
+++ b/rhodecode/controllers/admin/repos_groups.py	Tue Oct 11 08:36:52 2011 +0200
@@ -9,9 +9,10 @@
 from pylons.controllers.util import abort, redirect
 from pylons.i18n.translation import _
 
+from sqlalchemy.exc import IntegrityError
+
 from rhodecode.lib import helpers as h
-from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator, \
-    HasPermissionAnyDecorator
+from rhodecode.lib.auth import LoginRequired, HasPermissionAnyDecorator
 from rhodecode.lib.base import BaseController, render
 from rhodecode.model.db import Group
 from rhodecode.model.repos_group import ReposGroupModel
@@ -167,10 +168,21 @@
             repos_group_model.delete(id)
             h.flash(_('removed repos group %s' % gr.group_name), category='success')
             #TODO: in future action_logger(, '', '', '', self.sa)
+        except IntegrityError, e:
+            if e.message.find('groups_group_parent_id_fkey'):
+                log.error(traceback.format_exc())
+                h.flash(_('Cannot delete this group it still contains '
+                          'subgroups'),
+                        category='warning')
+            else:
+                log.error(traceback.format_exc())
+                h.flash(_('error occurred during deletion of repos '
+                          'group %s' % gr.group_name), category='error')
+
         except Exception:
             log.error(traceback.format_exc())
-            h.flash(_('error occurred during deletion of repos group %s' % gr.group_name),
-                    category='error')
+            h.flash(_('error occurred during deletion of repos '
+                      'group %s' % gr.group_name), category='error')
 
         return redirect(url('repos_groups'))
 
--- a/rhodecode/model/repos_group.py	Tue Oct 11 02:13:32 2011 -0400
+++ b/rhodecode/model/repos_group.py	Tue Oct 11 08:36:52 2011 +0200
@@ -100,7 +100,9 @@
         paths = os.sep.join(paths)
 
         rm_path = os.path.join(self.repos_path, paths)
-        os.rmdir(rm_path)
+        if os.path.isdir(rm_path):
+            # delete only if that path really exists
+            os.rmdir(rm_path)
 
     def create(self, form_data):
         try: