don't delete config settings on admin update
authorAlexander Strizhakov <alex.strizhakov@gmail.com>
Thu, 27 Jun 2019 04:19:44 +0000 (04:19 +0000)
committerkaniini <nenolod@gmail.com>
Thu, 27 Jun 2019 04:19:44 +0000 (04:19 +0000)
docs/api/admin_api.md
lib/mix/tasks/pleroma/config.ex
lib/pleroma/web/admin_api/admin_api_controller.ex
test/tasks/config_test.exs

index c05a353d763f8ef49ec7e919dba531e08aad9123..4be0ab0f8db8df0f5bdb91b32916a19a322419b9 100644 (file)
@@ -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, []}`.
index 4ed2c978940fcac2c4fd844f2924c52a80a6124c..faa605d9bf091dbd61c02f3c21ee3247e2770484 100644 (file)
@@ -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)
index 953a22ea09468f023eca96ba858622770f35194b..498beb56a02df7c05d01466414b1778e7cb2ced1 100644 (file)
@@ -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
         []
index 9c9a31bf48f9c22be1f18398f26dcbff5f9ddd1a..83a363356c302c922b03969d0ab794a823946f1e 100644 (file)
@@ -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)