make GET /api/v1/admin/reports match Mastodon admin API
Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
parent
ae763ff6cf
commit
11281d740a
3 changed files with 49 additions and 3 deletions
|
|
@ -28,6 +28,7 @@ defmodule Pleroma.Web.ApiSpec.MastodonAdmin.ReportOperation do
|
|||
parameters:
|
||||
[
|
||||
Operation.parameter(:resolved, :query, :boolean, "Filter for resolved reports"),
|
||||
Operation.parameter(:unresolved, :query, :boolean, "Filter for open reports"),
|
||||
Operation.parameter(:account_id, :query, :string, "Filter by author account id"),
|
||||
Operation.parameter(
|
||||
:target_account_id,
|
||||
|
|
|
|||
|
|
@ -89,11 +89,46 @@ defmodule Pleroma.Web.MastodonAPI.Admin.ReportController do
|
|||
end
|
||||
end
|
||||
|
||||
def assign_to_self(%{assigns: %{user: admin}} = conn, %{id: id}) do
|
||||
with {:ok, activity} <- CommonAPI.assign_report_to_account(id, admin.id),
|
||||
report <- Activity.get_by_id_with_user_actor(activity.id) do
|
||||
ModerationLog.insert_log(%{
|
||||
action: "report_assigned",
|
||||
actor: admin,
|
||||
subject: activity,
|
||||
subject_actor: report.user_actor,
|
||||
assigned_account: admin.nickname
|
||||
})
|
||||
|
||||
render(conn, "show.json", Report.extract_report_info(report))
|
||||
else
|
||||
{:error, error} ->
|
||||
json_response(conn, :bad_request, %{error: error})
|
||||
end
|
||||
end
|
||||
|
||||
def unassign(%{assigns: %{user: admin}} = conn, %{id: id}) do
|
||||
with {:ok, activity} <- CommonAPI.assign_report_to_account(id, nil),
|
||||
report <- Activity.get_by_id_with_user_actor(activity.id) do
|
||||
ModerationLog.insert_log(%{
|
||||
action: "report_unassigned",
|
||||
actor: admin,
|
||||
subject: activity,
|
||||
subject_actor: report.user_actor
|
||||
})
|
||||
|
||||
render(conn, "show.json", Report.extract_report_info(report))
|
||||
else
|
||||
{:error, error} ->
|
||||
json_response(conn, :bad_request, %{error: error})
|
||||
end
|
||||
end
|
||||
|
||||
defp restrict_state(opts, %{resolved: true}), do: Map.put(opts, :state, "resolved")
|
||||
|
||||
defp restrict_state(opts, %{resolved: false}), do: Map.put(opts, :state, "open")
|
||||
defp restrict_state(opts, %{resolved: _}), do: Map.put(opts, :state, "resolved")
|
||||
|
||||
defp restrict_state(opts, _params), do: opts
|
||||
defp restrict_state(opts, _params), do: Map.put(opts, :state, "open")
|
||||
|
||||
defp restrict_actor(opts, %{account_id: actor}) do
|
||||
with %User{ap_id: ap_id} <- User.get_by_id(actor) do
|
||||
|
|
|
|||
|
|
@ -50,7 +50,17 @@ defmodule Pleroma.Web.MastodonAPI.Admin.ReportControllerTest do
|
|||
|
||||
assert [%{"id" => ^report_id1}] =
|
||||
conn
|
||||
|> get("/api/v1/admin/reports?resolved=false")
|
||||
|> get("/api/v1/admin/reports?unresolved=true")
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [%{"id" => ^report_id1}] =
|
||||
conn
|
||||
|> get("/api/v1/admin/reports")
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [%{"id" => ^report_id2}, %{"id" => ^report_id1}] =
|
||||
conn
|
||||
|> get("/api/v1/admin/reports?resolved=true&unresolved=true")
|
||||
|> json_response_and_validate_schema(200)
|
||||
|
||||
assert [%{"id" => ^report_id2}] =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue