diff options
author | feld <feld@feld.me> | 2019-10-16 12:14:47 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2019-10-16 12:14:47 +0000 |
commit | 21f0757b0d246128343b805b4f28304dfcf6be9d (patch) | |
tree | 2cbc383b4f5dec1d317da2c60b5a4b92ea0b8aa1 /lib/pleroma/user.ex | |
parent | 6977cddff96191f8bba64e01d1890193780b6090 (diff) | |
parent | da0e4879bcd12849182a39445174384420fcf064 (diff) | |
download | pleroma-21f0757b0d246128343b805b4f28304dfcf6be9d.tar.gz |
Merge branch 'feature/multiple-users-activation-permissions' into 'develop'
Ability to toggle activation status, permission group & delete multiple users
Closes admin-fe#39
See merge request pleroma/pleroma!1825
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 1e055014e..917bcf2ef 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1061,7 +1061,15 @@ defmodule Pleroma.User do BackgroundWorker.enqueue("deactivate_user", %{"user_id" => user.id, "status" => status}) end - def deactivate(%User{} = user, status \\ true) do + def deactivate(user, status \\ true) + + def deactivate(users, status) when is_list(users) do + Repo.transaction(fn -> + for user <- users, do: deactivate(user, status) + end) + end + + def deactivate(%User{} = user, status) do with {:ok, user} <- update_info(user, &User.Info.set_activation_status(&1, status)) do Enum.each(get_followers(user), &invalidate_cache/1) Enum.each(get_friends(user), &update_follower_count/1) @@ -1074,6 +1082,10 @@ defmodule Pleroma.User do update_info(user, &User.Info.update_notification_settings(&1, settings)) end + def delete(users) when is_list(users) do + for user <- users, do: delete(user) + end + def delete(%User{} = user) do BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end @@ -1627,6 +1639,12 @@ defmodule Pleroma.User do `fun` is called with the `user.info`. """ + def update_info(users, fun) when is_list(users) do + Repo.transaction(fn -> + for user <- users, do: update_info(user, fun) + end) + end + def update_info(user, fun) do user |> change_info(fun) |