Merge branch 'config-changes' into 'develop'

Config changes

Closes #1547

See merge request pleroma/pleroma!2174
This commit is contained in:
feld 2020-02-06 16:02:46 +00:00
commit 5499f172b2
4 changed files with 35 additions and 57 deletions

View file

@ -871,7 +871,7 @@ config :pleroma, :config_description, [
}, },
%{ %{
key: :limit_to_local_content, key: :limit_to_local_content,
type: [:atom, false], type: {:dropdown, :atom},
description: description:
"Limit unauthenticated users to search for local statutes and users only. Default: `:unauthenticated`.", "Limit unauthenticated users to search for local statutes and users only. Default: `:unauthenticated`.",
suggestions: [ suggestions: [
@ -942,7 +942,7 @@ config :pleroma, :config_description, [
children: [ children: [
%{ %{
key: :level, key: :level,
type: :atom, type: {:dropdown, :atom},
description: "Log level", description: "Log level",
suggestions: [:debug, :info, :warn, :error] suggestions: [:debug, :info, :warn, :error]
}, },
@ -974,7 +974,7 @@ config :pleroma, :config_description, [
children: [ children: [
%{ %{
key: :level, key: :level,
type: :atom, type: {:dropdown, :atom},
description: "Log level", description: "Log level",
suggestions: [:debug, :info, :warn, :error] suggestions: [:debug, :info, :warn, :error]
}, },
@ -998,7 +998,7 @@ config :pleroma, :config_description, [
children: [ children: [
%{ %{
key: :level, key: :level,
type: :atom, type: {:dropdown, :atom},
description: "Log level", description: "Log level",
suggestions: [:debug, :info, :warn, :error] suggestions: [:debug, :info, :warn, :error]
}, },
@ -1969,7 +1969,7 @@ config :pleroma, :config_description, [
}, },
%{ %{
key: :verbose, key: :verbose,
type: [:atom, false], type: {:dropdown, :atom},
description: "Logs verbose mode", description: "Logs verbose mode",
suggestions: [false, :error, :warn, :info, :debug] suggestions: [false, :error, :warn, :info, :debug]
}, },
@ -2178,7 +2178,7 @@ config :pleroma, :config_description, [
%{ %{
key: :new_window, key: :new_window,
type: :boolean, type: :boolean,
description: "Set to `false` to remove target='_blank' attribute" description: "Link urls will open in new window/tab"
}, },
%{ %{
key: :truncate, key: :truncate,

View file

@ -689,7 +689,6 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
- Response: - Response:
- On failure: - On failure:
- 400 Bad Request `"To use this endpoint you need to enable configuration from database."` - 400 Bad Request `"To use this endpoint you need to enable configuration from database."`
- 400 Bad Request `"To use configuration from database migrate your settings to database."`
```json ```json
{ {

View file

@ -797,16 +797,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
with :ok <- configurable_from_database(conn) do with :ok <- configurable_from_database(conn) do
configs = Pleroma.Repo.all(ConfigDB) configs = Pleroma.Repo.all(ConfigDB)
if configs == [] do conn
errors( |> put_view(ConfigView)
conn, |> render("index.json", %{configs: configs})
{:error, "To use configuration from database migrate your settings to database."}
)
else
conn
|> put_view(ConfigView)
|> render("index.json", %{configs: configs})
end
end end
end end
@ -814,45 +807,38 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
with :ok <- configurable_from_database(conn) do with :ok <- configurable_from_database(conn) do
configs = ConfigDB.get_all_as_keyword() configs = ConfigDB.get_all_as_keyword()
if configs == [] do merged =
errors( Pleroma.Config.Holder.config()
conn, |> ConfigDB.merge(configs)
{:error, "To use configuration from database migrate your settings to database."} |> Enum.map(fn {group, values} ->
) Enum.map(values, fn {key, value} ->
else db =
merged = if configs[group][key] do
Pleroma.Config.Holder.config() ConfigDB.get_db_keys(configs[group][key], key)
|> ConfigDB.merge(configs) end
|> Enum.map(fn {group, values} ->
Enum.map(values, fn {key, value} ->
db =
if configs[group][key] do
ConfigDB.get_db_keys(configs[group][key], key)
end
db_value = configs[group][key] db_value = configs[group][key]
merged_value = merged_value =
if !is_nil(db_value) and Keyword.keyword?(db_value) and if !is_nil(db_value) and Keyword.keyword?(db_value) and
ConfigDB.sub_key_full_update?(group, key, Keyword.keys(db_value)) do ConfigDB.sub_key_full_update?(group, key, Keyword.keys(db_value)) do
ConfigDB.merge_group(group, key, value, db_value) ConfigDB.merge_group(group, key, value, db_value)
else else
value value
end end
setting = %{ setting = %{
group: ConfigDB.convert(group), group: ConfigDB.convert(group),
key: ConfigDB.convert(key), key: ConfigDB.convert(key),
value: ConfigDB.convert(merged_value) value: ConfigDB.convert(merged_value)
} }
if db, do: Map.put(setting, :db, db), else: setting if db, do: Map.put(setting, :db, db), else: setting
end)
end) end)
|> List.flatten() end)
|> List.flatten()
json(conn, %{configs: merged}) json(conn, %{configs: merged})
end
end end
end end

View file

@ -1899,13 +1899,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
"To use this endpoint you need to enable configuration from database." "To use this endpoint you need to enable configuration from database."
end end
test "without any settings in db", %{conn: conn} do
conn = get(conn, "/api/pleroma/admin/config")
assert json_response(conn, 400) ==
"To use configuration from database migrate your settings to database."
end
test "with settings only in db", %{conn: conn} do test "with settings only in db", %{conn: conn} do
config1 = insert(:config) config1 = insert(:config)
config2 = insert(:config) config2 = insert(:config)