logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma
commit: 6587e2358c4746d760b212a25f6cd8b751158045
parent: cfb5be3cedcd0e486851ebaf2b3abb4b838fc909
Author: kaniini <nenolod@gmail.com>
Date:   Thu, 27 Jun 2019 04:19:44 +0000

Merge branch 'fix/admin-configure' into 'develop'

don't delete config settings on admin update

See merge request pleroma/pleroma!1340

Diffstat:

Mdocs/api/admin_api.md2+-
Mlib/mix/tasks/pleroma/config.ex16++++++++++++----
Mlib/pleroma/web/admin_api/admin_api_controller.ex2+-
Mtest/tasks/config_test.exs2+-
4 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/docs/api/admin_api.md b/docs/api/admin_api.md @@ -579,7 +579,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret ## `/api/pleroma/admin/config` ### Update config settings Module name can be passed as string, which starts with `Pleroma`, e.g. `"Pleroma.Upload"`. -Atom or boolean value can be passed with `:` in the beginning, e.g. `":true"`, `":upload"`. +Atom or boolean value can be passed with `:` in the beginning, e.g. `":true"`, `":upload"`. For keys it is not needed. Integer with `i:`, e.g. `"i:150"`. Tuple with more than 2 values with `{"tuple": ["first_val", Pleroma.Module, []]}`. `{"tuple": ["some_string", "Pleroma.Some.Module", []]}` will be converted to `{"some_string", Pleroma.Some.Module, []}`. diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex @@ -36,9 +36,11 @@ defmodule Mix.Tasks.Pleroma.Config do end end - def run(["migrate_from_db", env]) do + def run(["migrate_from_db", env, delete?]) do start_pleroma() + delete? = if delete? == "true", do: true, else: false + if Pleroma.Config.get([:instance, :dynamic_configuration]) do config_path = "config/#{env}.exported_from_db.secret.exs" @@ -47,7 +49,11 @@ defmodule Mix.Tasks.Pleroma.Config do Repo.all(Config) |> Enum.each(fn config -> - mark = if String.starts_with?(config.key, "Pleroma."), do: ",", else: ":" + mark = + if String.starts_with?(config.key, "Pleroma.") or + String.starts_with?(config.key, "Ueberauth"), + do: ",", + else: ":" IO.write( file, @@ -56,8 +62,10 @@ defmodule Mix.Tasks.Pleroma.Config do }\r\n" ) - {:ok, _} = Repo.delete(config) - Mix.shell().info("#{config.key} deleted from DB.") + if delete? do + {:ok, _} = Repo.delete(config) + Mix.shell().info("#{config.key} deleted from DB.") + end end) File.close(file) diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -388,7 +388,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do |> Enum.reject(&is_nil(&1)) Pleroma.Config.TransferTask.load_and_update_env() - Mix.Tasks.Pleroma.Config.run(["migrate_from_db", Pleroma.Config.get(:env)]) + Mix.Tasks.Pleroma.Config.run(["migrate_from_db", Pleroma.Config.get(:env), "false"]) updated else [] diff --git a/test/tasks/config_test.exs b/test/tasks/config_test.exs @@ -51,7 +51,7 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do value: [key: "valu2", key2: [Pleroma.Repo]] }) - Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "temp"]) + Mix.Tasks.Pleroma.Config.run(["migrate_from_db", "temp", "true"]) assert Repo.all(Config) == [] assert File.exists?(temp_file)