From 9ec38657255df77603876432bd3269f12ff56d02 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 14 Jun 2021 20:13:47 -0500 Subject: MailingList --> EmailList --- lib/pleroma/user/email_list.ex | 46 ++++++++++++++++++++++ lib/pleroma/user/mailing_list.ex | 46 ---------------------- .../admin_api/controllers/email_list_controller.ex | 4 +- test/pleroma/user/email_list_test.exs | 26 ++++++++++++ test/pleroma/user/mailing_list_test.exs | 26 ------------ 5 files changed, 74 insertions(+), 74 deletions(-) create mode 100644 lib/pleroma/user/email_list.ex delete mode 100644 lib/pleroma/user/mailing_list.ex create mode 100644 test/pleroma/user/email_list_test.exs delete mode 100644 test/pleroma/user/mailing_list_test.exs diff --git a/lib/pleroma/user/email_list.ex b/lib/pleroma/user/email_list.ex new file mode 100644 index 000000000..f6e5ea619 --- /dev/null +++ b/lib/pleroma/user/email_list.ex @@ -0,0 +1,46 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.EmailList do + @moduledoc """ + Functions for generating email lists from local users. + """ + import Ecto.Query + + alias Pleroma.Repo + alias Pleroma.User + + @header_row ["Email Address"] + + defp subscribers_query do + User.Query.build(%{ + local: true, + is_active: true, + is_approved: true, + is_confirmed: true, + accepts_newsletter: true + }) + |> where([u], not is_nil(u.email)) + end + + def generate_csv do + subscribers_query() + |> generate_csv() + end + + def generate_csv(query) do + query + |> Repo.all() + |> Enum.map(&build_row/1) + |> build_csv() + end + + defp build_row(%User{email: email}), do: [email] + + defp build_csv(lines) do + [@header_row | lines] + |> CSV.encode() + |> Enum.join() + end +end diff --git a/lib/pleroma/user/mailing_list.ex b/lib/pleroma/user/mailing_list.ex deleted file mode 100644 index b60069023..000000000 --- a/lib/pleroma/user/mailing_list.ex +++ /dev/null @@ -1,46 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2021 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.User.MailingList do - @moduledoc """ - Functions for generating email lists from local users. - """ - import Ecto.Query - - alias Pleroma.Repo - alias Pleroma.User - - @header_row ["Email Address"] - - defp subscribers_query do - User.Query.build(%{ - local: true, - is_active: true, - is_approved: true, - is_confirmed: true, - accepts_newsletter: true - }) - |> where([u], not is_nil(u.email)) - end - - def generate_csv do - subscribers_query() - |> generate_csv() - end - - def generate_csv(query) do - query - |> Repo.all() - |> Enum.map(&build_row/1) - |> build_csv() - end - - defp build_row(%User{email: email}), do: [email] - - defp build_csv(lines) do - [@header_row | lines] - |> CSV.encode() - |> Enum.join() - end -end 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 dfe9009b8..d1fb9a306 100644 --- a/lib/pleroma/web/admin_api/controllers/email_list_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/email_list_controller.ex @@ -5,7 +5,7 @@ defmodule Pleroma.Web.AdminAPI.EmailListController do use Pleroma.Web, :controller - alias Pleroma.User.MailingList + alias Pleroma.User.EmailList alias Pleroma.Web.Plugs.OAuthScopesPlug require Logger @@ -16,7 +16,7 @@ defmodule Pleroma.Web.AdminAPI.EmailListController do ) def subscribers(conn, _params) do - csv = MailingList.generate_csv() + csv = EmailList.generate_csv() conn |> put_resp_content_type("text/csv") diff --git a/test/pleroma/user/email_list_test.exs b/test/pleroma/user/email_list_test.exs new file mode 100644 index 000000000..cd3439c1b --- /dev/null +++ b/test/pleroma/user/email_list_test.exs @@ -0,0 +1,26 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2021 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.User.EmailListTest do + alias Pleroma.User.EmailList + + use Pleroma.DataCase + + import Pleroma.Factory + + test "generate_csv/0" do + user1 = insert(:user) + user2 = insert(:user) + user3 = insert(:user) + + expected = """ + Email Address + #{user1.email} + #{user2.email} + #{user3.email}\ + """ + + assert EmailList.generate_csv() == expected + end +end diff --git a/test/pleroma/user/mailing_list_test.exs b/test/pleroma/user/mailing_list_test.exs deleted file mode 100644 index 50b10584c..000000000 --- a/test/pleroma/user/mailing_list_test.exs +++ /dev/null @@ -1,26 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2021 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.User.MailingListTest do - alias Pleroma.User.MailingList - - use Pleroma.DataCase - - import Pleroma.Factory - - test "generate_csv/0" do - user1 = insert(:user) - user2 = insert(:user) - user3 = insert(:user) - - expected = """ - Email Address - #{user1.email} - #{user2.email} - #{user3.email}\ - """ - - assert MailingList.generate_csv() == expected - end -end -- cgit v1.2.3