don't delete config settings on admin update
This commit is contained in:
parent
cfb5be3ced
commit
c6705144a2
4 changed files with 15 additions and 7 deletions
|
@ -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, []}`.
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
[]
|
[]
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in a new issue