# HG changeset patch # User Marcin Kuzminski # Date 1318312971 -7200 # Node ID ada6926c374f5ae49b45dcb703c17dc7388226ca # Parent 70e646b2806aba4549b983821ac95e5745f2beb8 Added friendly message about removing a group that still contains subgroups. Fixed option to remove a group that is not in filesystem (ex. someone deleted it intentionally on filesystem) in this case RhodeCode will simply just throw an error message saying this group cannot be deleted. diff -r 70e646b2806a -r ada6926c374f rhodecode/controllers/admin/repos_groups.py --- a/rhodecode/controllers/admin/repos_groups.py Tue Oct 11 02:14:42 2011 +0200 +++ b/rhodecode/controllers/admin/repos_groups.py Tue Oct 11 08:02:51 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')) diff -r 70e646b2806a -r ada6926c374f rhodecode/model/repos_group.py --- a/rhodecode/model/repos_group.py Tue Oct 11 02:14:42 2011 +0200 +++ b/rhodecode/model/repos_group.py Tue Oct 11 08:02:51 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: