diff --git a/seahub/base/accounts.py b/seahub/base/accounts.py index 143d81d409..c2dd7b8342 100644 --- a/seahub/base/accounts.py +++ b/seahub/base/accounts.py @@ -214,23 +214,42 @@ class User(object): else: source = "LDAP" + username = self.username + orgs = ccnet_threaded_rpc.get_orgs_by_user(username) + + # remove owned repos owned_repos = [] - orgs = ccnet_threaded_rpc.get_orgs_by_user(self.username) if orgs: for org in orgs: owned_repos += seafile_api.get_org_owned_repo_list(org.org_id, - self.username) + username) else: - owned_repos += seafile_api.get_owned_repo_list(self.username) + owned_repos += seafile_api.get_owned_repo_list(username) for r in owned_repos: seafile_api.remove_repo(r.id) - clear_token(self.username) + # remove shared in repos + shared_in_repos = [] + if orgs: + for org in orgs: + org_id = org.org_id + shared_in_repos = seafile_api.get_org_share_in_repo_list(org_id, + username, -1, -1) + + for r in shared_in_repos: + seafile_api.org_remove_share(org_id, + r.repo_id, r.user, username) + else: + shared_in_repos = seafile_api.get_share_in_repo_list(username, -1, -1) + for r in shared_in_repos: + seafile_api.remove_share(r.repo_id, r.user, username) + + clear_token(username) # remove current user from joined groups - ccnet_api.remove_group_user(self.username) - ccnet_api.remove_emailuser(source, self.username) - Profile.objects.delete_profile_by_user(self.username) + ccnet_api.remove_group_user(username) + ccnet_api.remove_emailuser(source, username) + Profile.objects.delete_profile_by_user(username) def get_and_delete_messages(self): messages = [] diff --git a/seahub/views/sysadmin.py b/seahub/views/sysadmin.py index e47d56fbdf..b3bd98444b 100644 --- a/seahub/views/sysadmin.py +++ b/seahub/views/sysadmin.py @@ -711,11 +711,6 @@ def user_remove(request, email): messages.error(request, _(u'Failed to delete: the user is an organization creator')) return HttpResponseRedirect(next) - org_id = org[0].org_id - org_user_repos = seafile_api.get_org_owned_repo_list(org_id, user.email) - for repo in org_user_repos: - seafile_api.remove_repo(repo.id) - user.delete() messages.success(request, _(u'Successfully deleted %s') % user.username) except User.DoesNotExist: