diff options
| author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-08-07 09:38:05 +0300 | 
|---|---|---|
| committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2020-08-07 09:38:05 +0300 | 
| commit | 1298a2ea2c63f14cc080eb549377c6a1274b1628 (patch) | |
| tree | fe50b19542682173af1314766571731f69e904f5 /priv | |
| parent | b8021016ebef23903c59e5140d4efb456a84a347 (diff) | |
| parent | b9ebb55d2aabdf4c99b05efab9d4ad31b25f888d (diff) | |
| download | pleroma-1298a2ea2c63f14cc080eb549377c6a1274b1628.tar.gz pleroma-1298a2ea2c63f14cc080eb549377c6a1274b1628.zip  | |
Merge remote-tracking branch 'remotes/origin/develop' into 2168-media-preview-proxy
# Conflicts:
#	mix.lock
Diffstat (limited to 'priv')
7 files changed, 229 insertions, 0 deletions
diff --git a/priv/repo/migrations/20200712234852_add_approval_fields_to_users.exs b/priv/repo/migrations/20200712234852_add_approval_fields_to_users.exs new file mode 100644 index 000000000..43f741a5b --- /dev/null +++ b/priv/repo/migrations/20200712234852_add_approval_fields_to_users.exs @@ -0,0 +1,10 @@ +defmodule Pleroma.Repo.Migrations.AddApprovalFieldsToUsers do +  use Ecto.Migration + +  def change do +    alter table(:users) do +      add(:approval_pending, :boolean) +      add(:registration_reason, :text) +    end +  end +end diff --git a/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs b/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs new file mode 100644 index 000000000..570acba84 --- /dev/null +++ b/priv/repo/migrations/20200716195806_autolinker_to_linkify.exs @@ -0,0 +1,36 @@ +defmodule Pleroma.Repo.Migrations.AutolinkerToLinkify do +  use Ecto.Migration +  alias Pleroma.ConfigDB + +  @autolinker_path %{group: :auto_linker, key: :opts} +  @linkify_path %{group: :pleroma, key: Pleroma.Formatter} + +  @compat_opts [:class, :rel, :new_window, :truncate, :strip_prefix, :extra] + +  def change do +    with {:ok, {old, new}} <- maybe_get_params() do +      move_config(old, new) +    end +  end + +  defp move_config(%{} = old, %{} = new) do +    {:ok, _} = ConfigDB.update_or_create(new) +    {:ok, _} = ConfigDB.delete(old) +    :ok +  end + +  defp maybe_get_params() do +    with %ConfigDB{value: opts} <- ConfigDB.get_by_params(@autolinker_path), +         opts <- transform_opts(opts), +         %{} = linkify_params <- Map.put(@linkify_path, :value, opts) do +      {:ok, {@autolinker_path, linkify_params}} +    end +  end + +  def transform_opts(opts) when is_list(opts) do +    opts +    |> Enum.into(%{}) +    |> Map.take(@compat_opts) +    |> Map.to_list() +  end +end diff --git a/priv/repo/migrations/20200722185515_fix_malformed_formatter_config.exs b/priv/repo/migrations/20200722185515_fix_malformed_formatter_config.exs new file mode 100644 index 000000000..77b760825 --- /dev/null +++ b/priv/repo/migrations/20200722185515_fix_malformed_formatter_config.exs @@ -0,0 +1,26 @@ +defmodule Pleroma.Repo.Migrations.FixMalformedFormatterConfig do +  use Ecto.Migration +  alias Pleroma.ConfigDB + +  @config_path %{group: :pleroma, key: Pleroma.Formatter} + +  def change do +    with %ConfigDB{value: %{} = opts} <- ConfigDB.get_by_params(@config_path), +         fixed_opts <- Map.to_list(opts) do +      fix_config(fixed_opts) +    else +      _ -> :skipped +    end +  end + +  defp fix_config(fixed_opts) when is_list(fixed_opts) do +    {:ok, _} = +      ConfigDB.update_or_create(%{ +        group: :pleroma, +        key: Pleroma.Formatter, +        value: fixed_opts +      }) + +    :ok +  end +end diff --git a/priv/repo/migrations/20200724133313_move_welcome_settings.exs b/priv/repo/migrations/20200724133313_move_welcome_settings.exs new file mode 100644 index 000000000..323a8fcee --- /dev/null +++ b/priv/repo/migrations/20200724133313_move_welcome_settings.exs @@ -0,0 +1,94 @@ +defmodule Pleroma.Repo.Migrations.MoveWelcomeSettings do +  use Ecto.Migration + +  alias Pleroma.ConfigDB + +  @old_keys [:welcome_user_nickname, :welcome_message] + +  def up do +    with {:ok, config, {keep_values, move_values}} <- get_old_values() do +      insert_welcome_settings(move_values) +      update_instance_config(config, keep_values) +    end +  end + +  def down do +    with {:ok, welcome_config, revert_values} <- get_revert_values() do +      revert_instance_config(revert_values) +      Pleroma.Repo.delete(welcome_config) +    end +  end + +  defp insert_welcome_settings([_ | _] = values) do +    unless String.trim(values[:welcome_message]) == "" do +      config_values = [ +        direct_message: %{ +          enabled: true, +          sender_nickname: values[:welcome_user_nickname], +          message: values[:welcome_message] +        }, +        email: %{ +          enabled: false, +          sender: nil, +          subject: "Welcome to <%= instance_name %>", +          html: "Welcome to <%= instance_name %>", +          text: "Welcome to <%= instance_name %>" +        } +      ] + +      {:ok, _} = +        %ConfigDB{} +        |> ConfigDB.changeset(%{group: :pleroma, key: :welcome, value: config_values}) +        |> Pleroma.Repo.insert() +    end + +    :ok +  end + +  defp insert_welcome_settings(_), do: :noop + +  defp revert_instance_config(%{} = revert_values) do +    values = [ +      welcome_user_nickname: revert_values[:sender_nickname], +      welcome_message: revert_values[:message] +    ] + +    ConfigDB.update_or_create(%{group: :pleroma, key: :instance, value: values}) +  end + +  defp revert_instance_config(_), do: :noop + +  defp update_instance_config(config, values) do +    {:ok, _} = +      config +      |> ConfigDB.changeset(%{value: values}) +      |> Pleroma.Repo.update() + +    :ok +  end + +  defp get_revert_values do +    config = ConfigDB.get_by_params(%{group: :pleroma, key: :welcome}) + +    cond do +      is_nil(config) -> {:noop, nil, nil} +      true -> {:ok, config, config.value[:direct_message]} +    end +  end + +  defp get_old_values do +    config = ConfigDB.get_by_params(%{group: :pleroma, key: :instance}) + +    cond do +      is_nil(config) -> +        {:noop, config, {}} + +      is_binary(config.value[:welcome_message]) -> +        {:ok, config, +         {Keyword.drop(config.value, @old_keys), Keyword.take(config.value, @old_keys)}} + +      true -> +        {:ok, config, {Keyword.drop(config.value, @old_keys), []}} +    end +  end +end diff --git a/priv/repo/migrations/20200802170532_fix_legacy_tags.exs b/priv/repo/migrations/20200802170532_fix_legacy_tags.exs new file mode 100644 index 000000000..f7274b44e --- /dev/null +++ b/priv/repo/migrations/20200802170532_fix_legacy_tags.exs @@ -0,0 +1,37 @@ +# Fix legacy tags set by AdminFE that don't align with TagPolicy MRF + +defmodule Pleroma.Repo.Migrations.FixLegacyTags do +  use Ecto.Migration +  alias Pleroma.Repo +  alias Pleroma.User +  import Ecto.Query + +  @old_new_map %{ +    "force_nsfw" => "mrf_tag:media-force-nsfw", +    "strip_media" => "mrf_tag:media-strip", +    "force_unlisted" => "mrf_tag:force-unlisted", +    "sandbox" => "mrf_tag:sandbox", +    "disable_remote_subscription" => "mrf_tag:disable-remote-subscription", +    "disable_any_subscription" => "mrf_tag:disable-any-subscription" +  } + +  def change do +    legacy_tags = Map.keys(@old_new_map) + +    from(u in User, where: fragment("? && ?", u.tags, ^legacy_tags)) +    |> Repo.all() +    |> Enum.each(fn user -> +      fix_tags_changeset(user) +      |> Repo.update() +    end) +  end + +  defp fix_tags_changeset(%User{tags: tags} = user) do +    new_tags = +      Enum.map(tags, fn tag -> +        Map.get(@old_new_map, tag, tag) +      end) + +    Ecto.Changeset.change(user, tags: new_tags) +  end +end diff --git a/priv/repo/migrations/20200804180322_remove_nonlocal_expirations.exs b/priv/repo/migrations/20200804180322_remove_nonlocal_expirations.exs new file mode 100644 index 000000000..389935f0d --- /dev/null +++ b/priv/repo/migrations/20200804180322_remove_nonlocal_expirations.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RemoveNonlocalExpirations do +  use Ecto.Migration + +  def up do +    statement = """ +    DELETE FROM +      activity_expirations A USING activities B +    WHERE +      A.activity_id = B.id +      AND B.local = false; +    """ + +    execute(statement) +  end + +  def down do +    :ok +  end +end diff --git a/priv/repo/migrations/20200804183107_add_unique_index_to_app_client_id.exs b/priv/repo/migrations/20200804183107_add_unique_index_to_app_client_id.exs new file mode 100644 index 000000000..83de18096 --- /dev/null +++ b/priv/repo/migrations/20200804183107_add_unique_index_to_app_client_id.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.AddUniqueIndexToAppClientId do +  use Ecto.Migration + +  def change do +    create(unique_index(:apps, [:client_id])) +  end +end  | 
