Improve admin views (2)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2022-01-14 18:10:50 +01:00
parent ca6ef9b06b
commit 6e5061250c
108 changed files with 12041 additions and 2526 deletions

View File

@@ -272,23 +272,14 @@ defmodule Mobilizon.Users do
@doc """
Returns the list of users.
"""
@spec list_users(String.t(), integer | nil, integer | nil, atom, atom) ::
Page.t(User.t())
def list_users(email, page, limit \\ nil, sort, direction)
def list_users("", page, limit, sort, direction) do
@spec list_users(Keyword.t()) :: Page.t(User.t())
def list_users(options) do
User
|> sort(sort, direction)
|> filter_by_email(Keyword.get(options, :email))
|> filter_by_ip(Keyword.get(options, :current_sign_in_ip))
|> sort(Keyword.get(options, :sort), Keyword.get(options, :direction))
|> preload([u], [:actors, :feed_tokens, :settings, :default_actor])
|> Page.build_page(page, limit)
end
def list_users(email, page, limit, sort, direction) do
User
|> where([u], ilike(u.email, ^"%#{email}%"))
|> sort(sort, direction)
|> preload([u], [:actors, :feed_tokens, :settings, :default_actor])
|> Page.build_page(page, limit)
|> Page.build_page(Keyword.get(options, :page), Keyword.get(options, :limit))
end
@doc """
@@ -527,4 +518,16 @@ defmodule Mobilizon.Users do
defp update_user_default_actor_query(user_id) do
where(User, [u], u.id == ^user_id)
end
@spec filter_by_email(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Query.t()
defp filter_by_email(query, nil), do: query
defp filter_by_email(query, ""), do: query
defp filter_by_email(query, email), do: where(query, [q], ilike(q.email, ^"%#{email}%"))
@spec filter_by_ip(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Query.t()
defp filter_by_ip(query, nil), do: query
defp filter_by_ip(query, ""), do: query
defp filter_by_ip(query, current_sign_in_ip),
do: where(query, [q], q.current_sign_in_ip == ^current_sign_in_ip)
end