diff options
author | Maxim Filippov <colixer@gmail.com> | 2019-10-09 17:03:54 +0300 |
---|---|---|
committer | Maxim Filippov <colixer@gmail.com> | 2019-10-09 17:03:54 +0300 |
commit | ad42837244ba4c945b76c5addaffe47353cf62a8 (patch) | |
tree | aec7338d47ccadc7e894c15925e3aabc0467a241 /lib/pleroma/user.ex | |
parent | 44e0c5cabb157fe2cfc66af0167547ac51f98ff0 (diff) | |
download | pleroma-ad42837244ba4c945b76c5addaffe47353cf62a8.tar.gz |
Ability to toggle activation status and permission group for a group of users
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 2cfb13a8c..a76a5ad70 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1059,7 +1059,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) @@ -1625,6 +1633,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) |