don't delete config settings on admin update

This commit is contained in:
Alexander Strizhakov 2019-06-27 04:19:44 +00:00 committed by kaniini
parent cfb5be3ced
commit c6705144a2
4 changed files with 15 additions and 7 deletions

View file

@ -579,7 +579,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
## `/api/pleroma/admin/config` ## `/api/pleroma/admin/config`
### Update config settings ### Update config settings
Module name can be passed as string, which starts with `Pleroma`, e.g. `"Pleroma.Upload"`. 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"`. Integer with `i:`, e.g. `"i:150"`.
Tuple with more than 2 values with `{"tuple": ["first_val", Pleroma.Module, []]}`. 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, []}`. `{"tuple": ["some_string", "Pleroma.Some.Module", []]}` will be converted to `{"some_string", Pleroma.Some.Module, []}`.

View file

@ -36,9 +36,11 @@ def run(["migrate_to_db"]) do
end end
end end
def run(["migrate_from_db", env]) do def run(["migrate_from_db", env, delete?]) do
start_pleroma() start_pleroma()
delete? = if delete? == "true", do: true, else: false
if Pleroma.Config.get([:instance, :dynamic_configuration]) do if Pleroma.Config.get([:instance, :dynamic_configuration]) do
config_path = "config/#{env}.exported_from_db.secret.exs" config_path = "config/#{env}.exported_from_db.secret.exs"
@ -47,7 +49,11 @@ def run(["migrate_from_db", env]) do
Repo.all(Config) Repo.all(Config)
|> Enum.each(fn 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( IO.write(
file, file,
@ -56,8 +62,10 @@ def run(["migrate_from_db", env]) do
}\r\n" }\r\n"
) )
{:ok, _} = Repo.delete(config) if delete? do
Mix.shell().info("#{config.key} deleted from DB.") {:ok, _} = Repo.delete(config)
Mix.shell().info("#{config.key} deleted from DB.")
end
end) end)
File.close(file) File.close(file)

View file

@ -388,7 +388,7 @@ def config_update(conn, %{"configs" => configs}) do
|> Enum.reject(&is_nil(&1)) |> Enum.reject(&is_nil(&1))
Pleroma.Config.TransferTask.load_and_update_env() 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 updated
else else
[] []

View file

@ -51,7 +51,7 @@ test "settings are migrated to file and deleted from db", %{temp_file: temp_file
value: [key: "valu2", key2: [Pleroma.Repo]] 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 Repo.all(Config) == []
assert File.exists?(temp_file) assert File.exists?(temp_file)