summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-06-27 04:19:44 +0000
committerkaniini <nenolod@gmail.com>2019-06-27 04:19:44 +0000
commit6587e2358c4746d760b212a25f6cd8b751158045 (patch)
tree720c05e354aa1dcc1295400d8665bb1d9b13b675
parentcfb5be3cedcd0e486851ebaf2b3abb4b838fc909 (diff)
parentc6705144a2758c76943ad7967da412572efcbc2d (diff)
Merge branch 'fix/admin-configure' into 'develop'
don't delete config settings on admin update See merge request pleroma/pleroma!1340
-rw-r--r--docs/api/admin_api.md2
-rw-r--r--lib/mix/tasks/pleroma/config.ex16
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex2
-rw-r--r--test/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
index c05a353d7..4be0ab0f8 100644
--- 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
index 4ed2c9789..faa605d9b 100644
--- 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
index 953a22ea0..498beb56a 100644
--- 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
index 9c9a31bf4..83a363356 100644
--- 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)