aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-15 12:27:34 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-15 12:27:34 -0500
commit8c62cc95e6c4c0455be3f690cc9fc2d16140225c (patch)
tree3a8a0194cf6b770bdecb37dcb12ec3495f46d1d1 /lib
parent73ed23e2fd6997450ba82e2e0b3301b2960751fa (diff)
downloadpleroma-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.ex7
-rw-r--r--lib/pleroma/web/admin_api/controllers/email_list_controller.ex17
-rw-r--r--lib/pleroma/web/router.ex1
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