Merge branch 'feature/merge-mastodon-admin-views-for-reports' into 'develop'
Merge admin and mastodon user views for reports See merge request pleroma/pleroma!1346
This commit is contained in:
commit
d1549a6375
|
@ -5,8 +5,11 @@
|
||||||
defmodule Pleroma.Web.AdminAPI.AccountView do
|
defmodule Pleroma.Web.AdminAPI.AccountView do
|
||||||
use Pleroma.Web, :view
|
use Pleroma.Web, :view
|
||||||
|
|
||||||
|
alias Pleroma.HTML
|
||||||
|
alias Pleroma.User
|
||||||
alias Pleroma.User.Info
|
alias Pleroma.User.Info
|
||||||
alias Pleroma.Web.AdminAPI.AccountView
|
alias Pleroma.Web.AdminAPI.AccountView
|
||||||
|
alias Pleroma.Web.MediaProxy
|
||||||
|
|
||||||
def render("index.json", %{users: users, count: count, page_size: page_size}) do
|
def render("index.json", %{users: users, count: count, page_size: page_size}) do
|
||||||
%{
|
%{
|
||||||
|
@ -17,9 +20,14 @@ def render("index.json", %{users: users, count: count, page_size: page_size}) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def render("show.json", %{user: user}) do
|
def render("show.json", %{user: user}) do
|
||||||
|
avatar = User.avatar_url(user) |> MediaProxy.url()
|
||||||
|
display_name = HTML.strip_tags(user.name || user.nickname)
|
||||||
|
|
||||||
%{
|
%{
|
||||||
"id" => user.id,
|
"id" => user.id,
|
||||||
|
"avatar" => avatar,
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
|
"display_name" => display_name,
|
||||||
"deactivated" => user.info.deactivated,
|
"deactivated" => user.info.deactivated,
|
||||||
"local" => user.local,
|
"local" => user.local,
|
||||||
"roles" => Info.roles(user.info),
|
"roles" => Info.roles(user.info),
|
||||||
|
|
|
@ -8,7 +8,6 @@ defmodule Pleroma.Web.AdminAPI.ReportView do
|
||||||
alias Pleroma.HTML
|
alias Pleroma.HTML
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.Web.CommonAPI.Utils
|
alias Pleroma.Web.CommonAPI.Utils
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
|
||||||
alias Pleroma.Web.MastodonAPI.StatusView
|
alias Pleroma.Web.MastodonAPI.StatusView
|
||||||
|
|
||||||
def render("index.json", %{reports: reports}) do
|
def render("index.json", %{reports: reports}) do
|
||||||
|
@ -38,12 +37,17 @@ def render("show.json", %{report: report}) do
|
||||||
|
|
||||||
%{
|
%{
|
||||||
id: report.id,
|
id: report.id,
|
||||||
account: AccountView.render("account.json", %{user: account}),
|
account: merge_account_views(account),
|
||||||
actor: AccountView.render("account.json", %{user: user}),
|
actor: merge_account_views(user),
|
||||||
content: content,
|
content: content,
|
||||||
created_at: created_at,
|
created_at: created_at,
|
||||||
statuses: StatusView.render("index.json", %{activities: statuses, as: :activity}),
|
statuses: StatusView.render("index.json", %{activities: statuses, as: :activity}),
|
||||||
state: report.data["state"]
|
state: report.data["state"]
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp merge_account_views(user) do
|
||||||
|
Pleroma.Web.MastodonAPI.AccountView.render("account.json", %{user: user})
|
||||||
|
|> Map.merge(Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user}))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,9 +6,11 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
|
||||||
use Pleroma.Web.ConnCase
|
use Pleroma.Web.ConnCase
|
||||||
|
|
||||||
alias Pleroma.Activity
|
alias Pleroma.Activity
|
||||||
|
alias Pleroma.HTML
|
||||||
alias Pleroma.User
|
alias Pleroma.User
|
||||||
alias Pleroma.UserInviteToken
|
alias Pleroma.UserInviteToken
|
||||||
alias Pleroma.Web.CommonAPI
|
alias Pleroma.Web.CommonAPI
|
||||||
|
alias Pleroma.Web.MediaProxy
|
||||||
import Pleroma.Factory
|
import Pleroma.Factory
|
||||||
|
|
||||||
describe "/api/pleroma/admin/users" do
|
describe "/api/pleroma/admin/users" do
|
||||||
|
@ -58,7 +60,9 @@ test "Show", %{conn: conn} do
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
|
|
||||||
assert expected == json_response(conn, 200)
|
assert expected == json_response(conn, 200)
|
||||||
|
@ -445,7 +449,9 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do
|
||||||
"nickname" => admin.nickname,
|
"nickname" => admin.nickname,
|
||||||
"roles" => %{"admin" => true, "moderator" => false},
|
"roles" => %{"admin" => true, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(admin) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(admin.name || admin.nickname)
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
"deactivated" => user.info.deactivated,
|
"deactivated" => user.info.deactivated,
|
||||||
|
@ -453,7 +459,9 @@ test "renders users array for the first page", %{conn: conn, admin: admin} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => false,
|
"local" => false,
|
||||||
"tags" => ["foo", "bar"]
|
"tags" => ["foo", "bar"],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|> Enum.sort_by(& &1["nickname"])
|
|> Enum.sort_by(& &1["nickname"])
|
||||||
|
@ -492,7 +500,9 @@ test "regular search", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -514,7 +524,9 @@ test "search by domain", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -536,7 +548,9 @@ test "search by full nickname", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -558,7 +572,9 @@ test "search by display name", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -580,7 +596,9 @@ test "search by email", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -602,7 +620,9 @@ test "regular search with page size", %{conn: conn} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -619,7 +639,9 @@ test "regular search with page size", %{conn: conn} do
|
||||||
"nickname" => user2.nickname,
|
"nickname" => user2.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user2) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user2.name || user2.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -646,7 +668,9 @@ test "only local users" do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -671,7 +695,9 @@ test "only local users with no query", %{admin: old_admin} do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
"deactivated" => admin.info.deactivated,
|
"deactivated" => admin.info.deactivated,
|
||||||
|
@ -679,7 +705,9 @@ test "only local users with no query", %{admin: old_admin} do
|
||||||
"nickname" => admin.nickname,
|
"nickname" => admin.nickname,
|
||||||
"roles" => %{"admin" => true, "moderator" => false},
|
"roles" => %{"admin" => true, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(admin) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(admin.name || admin.nickname)
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
"deactivated" => false,
|
"deactivated" => false,
|
||||||
|
@ -687,7 +715,9 @@ test "only local users with no query", %{admin: old_admin} do
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"nickname" => old_admin.nickname,
|
"nickname" => old_admin.nickname,
|
||||||
"roles" => %{"admin" => true, "moderator" => false},
|
"roles" => %{"admin" => true, "moderator" => false},
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(old_admin) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(old_admin.name || old_admin.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|> Enum.sort_by(& &1["nickname"])
|
|> Enum.sort_by(& &1["nickname"])
|
||||||
|
@ -714,7 +744,9 @@ test "load only admins", %{conn: conn, admin: admin} do
|
||||||
"nickname" => admin.nickname,
|
"nickname" => admin.nickname,
|
||||||
"roles" => %{"admin" => true, "moderator" => false},
|
"roles" => %{"admin" => true, "moderator" => false},
|
||||||
"local" => admin.local,
|
"local" => admin.local,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(admin) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(admin.name || admin.nickname)
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
"deactivated" => false,
|
"deactivated" => false,
|
||||||
|
@ -722,7 +754,9 @@ test "load only admins", %{conn: conn, admin: admin} do
|
||||||
"nickname" => second_admin.nickname,
|
"nickname" => second_admin.nickname,
|
||||||
"roles" => %{"admin" => true, "moderator" => false},
|
"roles" => %{"admin" => true, "moderator" => false},
|
||||||
"local" => second_admin.local,
|
"local" => second_admin.local,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(second_admin) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(second_admin.name || second_admin.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|> Enum.sort_by(& &1["nickname"])
|
|> Enum.sort_by(& &1["nickname"])
|
||||||
|
@ -751,7 +785,9 @@ test "load only moderators", %{conn: conn} do
|
||||||
"nickname" => moderator.nickname,
|
"nickname" => moderator.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => true},
|
"roles" => %{"admin" => false, "moderator" => true},
|
||||||
"local" => moderator.local,
|
"local" => moderator.local,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(moderator) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(moderator.name || moderator.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -773,7 +809,9 @@ test "load users with tags list", %{conn: conn} do
|
||||||
"nickname" => user1.nickname,
|
"nickname" => user1.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => user1.local,
|
"local" => user1.local,
|
||||||
"tags" => ["first"]
|
"tags" => ["first"],
|
||||||
|
"avatar" => User.avatar_url(user1) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user1.name || user1.nickname)
|
||||||
},
|
},
|
||||||
%{
|
%{
|
||||||
"deactivated" => false,
|
"deactivated" => false,
|
||||||
|
@ -781,7 +819,9 @@ test "load users with tags list", %{conn: conn} do
|
||||||
"nickname" => user2.nickname,
|
"nickname" => user2.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => user2.local,
|
"local" => user2.local,
|
||||||
"tags" => ["second"]
|
"tags" => ["second"],
|
||||||
|
"avatar" => User.avatar_url(user2) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user2.name || user2.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|> Enum.sort_by(& &1["nickname"])
|
|> Enum.sort_by(& &1["nickname"])
|
||||||
|
@ -815,7 +855,9 @@ test "it works with multiple filters" do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => user.local,
|
"local" => user.local,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -838,7 +880,9 @@ test "PATCH /api/pleroma/admin/users/:nickname/toggle_activation" do
|
||||||
"nickname" => user.nickname,
|
"nickname" => user.nickname,
|
||||||
"roles" => %{"admin" => false, "moderator" => false},
|
"roles" => %{"admin" => false, "moderator" => false},
|
||||||
"local" => true,
|
"local" => true,
|
||||||
"tags" => []
|
"tags" => [],
|
||||||
|
"avatar" => User.avatar_url(user) |> MediaProxy.url(),
|
||||||
|
"display_name" => HTML.strip_tags(user.name || user.nickname)
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,16 @@ test "renders a report" do
|
||||||
|
|
||||||
expected = %{
|
expected = %{
|
||||||
content: nil,
|
content: nil,
|
||||||
actor: AccountView.render("account.json", %{user: user}),
|
actor:
|
||||||
account: AccountView.render("account.json", %{user: other_user}),
|
Map.merge(
|
||||||
|
AccountView.render("account.json", %{user: user}),
|
||||||
|
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user})
|
||||||
|
),
|
||||||
|
account:
|
||||||
|
Map.merge(
|
||||||
|
AccountView.render("account.json", %{user: other_user}),
|
||||||
|
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: other_user})
|
||||||
|
),
|
||||||
statuses: [],
|
statuses: [],
|
||||||
state: "open",
|
state: "open",
|
||||||
id: activity.id
|
id: activity.id
|
||||||
|
@ -42,8 +50,16 @@ test "includes reported statuses" do
|
||||||
|
|
||||||
expected = %{
|
expected = %{
|
||||||
content: nil,
|
content: nil,
|
||||||
actor: AccountView.render("account.json", %{user: user}),
|
actor:
|
||||||
account: AccountView.render("account.json", %{user: other_user}),
|
Map.merge(
|
||||||
|
AccountView.render("account.json", %{user: user}),
|
||||||
|
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: user})
|
||||||
|
),
|
||||||
|
account:
|
||||||
|
Map.merge(
|
||||||
|
AccountView.render("account.json", %{user: other_user}),
|
||||||
|
Pleroma.Web.AdminAPI.AccountView.render("show.json", %{user: other_user})
|
||||||
|
),
|
||||||
statuses: [StatusView.render("status.json", %{activity: activity})],
|
statuses: [StatusView.render("status.json", %{activity: activity})],
|
||||||
state: "open",
|
state: "open",
|
||||||
id: report_activity.id
|
id: report_activity.id
|
||||||
|
|
Loading…
Reference in New Issue