diff --git a/uffd/role/views.py b/uffd/role/views.py index a60465bf0f999fd298ef58f93473c744bf010a1f..a9453c03c9175f5f5bf61029c6e6cd4fc38cc64d 100644 --- a/uffd/role/views.py +++ b/uffd/role/views.py @@ -72,6 +72,12 @@ def update(roleid=False): def delete(roleid): session = db.session role = Role.query.filter_by(id=roleid).one() + members = role.member_ldap() session.delete(role) session.commit() + for user in members: + recalculate_user_groups(user) + if not user.to_ldap(): + flash('updating group membership for user {} failed'.format(user.loginname)) + session.commit() return redirect(url_for('role.index')) diff --git a/uffd/user/views_user.py b/uffd/user/views_user.py index 5e04422cb5a2cff7edacf3a375d33e720f9d1cf6..4237b487610100839218466acb5176ef307d6959 100644 --- a/uffd/user/views_user.py +++ b/uffd/user/views_user.py @@ -111,8 +111,7 @@ def delete(uid): user = User.from_ldap(conn.entries[0]) session = db.session - roles = Role.query.all() - for role in roles: + for role in Role.get_for_user(user).all(): if user.dn in role.member_dns(): role.del_member(user)