diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-06-15 12:27:34 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-06-15 12:27:34 -0500 |
commit | 8c62cc95e6c4c0455be3f690cc9fc2d16140225c (patch) | |
tree | 3a8a0194cf6b770bdecb37dcb12ec3495f46d1d1 /lib | |
parent | 73ed23e2fd6997450ba82e2e0b3301b2960751fa (diff) | |
download | pleroma-8c62cc95e6c4c0455be3f690cc9fc2d16140225c.tar.gz |
EmailList: add combined.csv view to display all candidates with subscription status
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user/email_list.ex | 7 | ||||
-rw-r--r-- | lib/pleroma/web/admin_api/controllers/email_list_controller.ex | 17 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 1 |
3 files changed, 18 insertions, 7 deletions
diff --git a/lib/pleroma/user/email_list.ex b/lib/pleroma/user/email_list.ex index b466fd92a..d9e4e8658 100644 --- a/lib/pleroma/user/email_list.ex +++ b/lib/pleroma/user/email_list.ex @@ -30,6 +30,13 @@ defmodule Pleroma.User.EmailList do |> where([u], not is_nil(u.email)) end + defp query(:combined) do + User.Query.build(%{ + local: true + }) + |> where([u], not is_nil(u.email)) + end + def generate_csv(audience) when is_atom(audience) do audience |> query() diff --git a/lib/pleroma/web/admin_api/controllers/email_list_controller.ex b/lib/pleroma/web/admin_api/controllers/email_list_controller.ex index 2b07ff417..861ad7a33 100644 --- a/lib/pleroma/web/admin_api/controllers/email_list_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/email_list_controller.ex @@ -13,16 +13,19 @@ defmodule Pleroma.Web.AdminAPI.EmailListController do plug(OAuthScopesPlug, %{scopes: ["admin:read:accounts"]}) def subscribers(conn, _params) do - csv = EmailList.generate_csv(:subscribers) - - conn - |> put_resp_content_type("text/csv") - |> resp(200, csv) - |> send_resp() + render_csv(conn, :subscribers) end def unsubscribers(conn, _params) do - csv = EmailList.generate_csv(:unsubscribers) + render_csv(conn, :unsubscribers) + end + + def combined(conn, _params) do + render_csv(conn, :combined) + end + + defp render_csv(conn, audience) when is_atom(audience) do + csv = EmailList.generate_csv(audience) conn |> put_resp_content_type("text/csv") diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 885f7c317..7af9b2bd2 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -260,6 +260,7 @@ defmodule Pleroma.Web.Router do get("/email_list/subscribers.csv", EmailListController, :subscribers) get("/email_list/unsubscribers.csv", EmailListController, :unsubscribers) + get("/email_list/combined.csv", EmailListController, :combined) end scope "/api/v1/pleroma/emoji", Pleroma.Web.PleromaAPI do |