Mercurial > kallithea
changeset 1435:a62af7d509ee beta
fixes #228 - added detection of assigned groups to prevent errors on sqlite
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 19 Jul 2011 17:10:34 +0200 |
parents | d21c14e36fa8 |
children | 88d13c1c6a55 |
files | rhodecode/controllers/admin/users_groups.py rhodecode/lib/exceptions.py rhodecode/model/db.py rhodecode/model/users_group.py |
diffstat | 4 files changed, 23 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/controllers/admin/users_groups.py Mon Jul 18 17:28:25 2011 +0200 +++ b/rhodecode/controllers/admin/users_groups.py Tue Jul 19 17:10:34 2011 +0200 @@ -32,6 +32,7 @@ from pylons.controllers.util import abort, redirect from pylons.i18n.translation import _ +from rhodecode.lib.exceptions import UsersGroupsAssignedException from rhodecode.lib import helpers as h from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator from rhodecode.lib.base import BaseController, render @@ -153,6 +154,8 @@ try: users_group_model.delete(id) h.flash(_('successfully deleted users group'), category='success') + except UsersGroupsAssignedException, e: + h.flash(e, category='error') except Exception: h.flash(_('An error occurred during deletion of users group'), category='error')
--- a/rhodecode/lib/exceptions.py Mon Jul 18 17:28:25 2011 +0200 +++ b/rhodecode/lib/exceptions.py Tue Jul 19 17:10:34 2011 +0200 @@ -45,3 +45,6 @@ class UserOwnsReposException(Exception): pass + +class UsersGroupsAssignedException(Exception): + pass
--- a/rhodecode/model/db.py Mon Jul 18 17:28:25 2011 +0200 +++ b/rhodecode/model/db.py Tue Jul 19 17:10:34 2011 +0200 @@ -286,6 +286,8 @@ members = relationship('UsersGroupMember', cascade="all, delete, delete-orphan", lazy="joined") + def __repr__(self): + return '<userGroup(%s)>' % (self.users_group_name) @classmethod def get_by_group_name(cls, group_name, cache=False, case_insensitive=False): @@ -677,6 +679,8 @@ permission = relationship('Permission') repository = relationship('Repository') + def __repr__(self): + return '<userGroup:%s => %s >' % (self.users_group, self.repository) class UsersGroupToPerm(Base, BaseModel): __tablename__ = 'users_group_to_perm'
--- a/rhodecode/model/users_group.py Mon Jul 18 17:28:25 2011 +0200 +++ b/rhodecode/model/users_group.py Tue Jul 19 17:10:34 2011 +0200 @@ -28,9 +28,11 @@ from pylons.i18n.translation import _ +from rhodecode.lib.exceptions import UsersGroupsAssignedException from rhodecode.model import BaseModel from rhodecode.model.caching_query import FromCache -from rhodecode.model.db import UsersGroup, UsersGroupMember +from rhodecode.model.db import UsersGroup, UsersGroupMember, \ + UsersGroupRepoToPerm log = logging.getLogger(__name__) @@ -84,6 +86,16 @@ def delete(self, users_group_id): try: + + # check if this group is not assigned to repo + assigned_groups = UsersGroupRepoToPerm.query()\ + .filter(UsersGroupRepoToPerm.users_group_id == + users_group_id).all() + + if assigned_groups: + raise UsersGroupsAssignedException('Group assigned to %s' % + assigned_groups) + users_group = self.get(users_group_id, cache=False) self.sa.delete(users_group) self.sa.commit()