diff --git a/app/assets/javascripts/admin/components/site-settings/group-list.js.es6 b/app/assets/javascripts/admin/components/site-settings/group-list.js.es6
index 4e60f1da080..0ab60a34361 100644
--- a/app/assets/javascripts/admin/components/site-settings/group-list.js.es6
+++ b/app/assets/javascripts/admin/components/site-settings/group-list.js.es6
@@ -3,6 +3,8 @@ import computed from "ember-addons/ember-computed-decorators";
export default Ember.Component.extend({
@computed()
groupChoices() {
- return this.site.get("groups").map(g => g.name);
+ return this.site.get("groups").map(g => {
+ return { name: g.name, id: g.id.toString() };
+ });
}
});
diff --git a/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs b/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
index adb6ec50982..005f14398ee 100644
--- a/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
+++ b/app/assets/javascripts/admin/templates/components/site-settings/group-list.hbs
@@ -1,3 +1,3 @@
-{{list-setting settingValue=value choices=groupChoices settingName=setting.setting}}
+{{list-setting settingValue=value choices=groupChoices settingName='name'}}
{{setting-validation-message message=validationMessage}}
{{{unbound setting.description}}}
diff --git a/db/migrate/20190717133743_migrate_group_list_site_settings.rb b/db/migrate/20190717133743_migrate_group_list_site_settings.rb
new file mode 100644
index 00000000000..6a81fe17b0b
--- /dev/null
+++ b/db/migrate/20190717133743_migrate_group_list_site_settings.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class MigrateGroupListSiteSettings < ActiveRecord::Migration[5.2]
+ def up
+ migrate_value(:name, :id)
+ end
+
+ def down
+ migrate_value(:id, :name)
+ end
+
+ def migrate_value(from, to)
+ cast_type = from == :id ? '::int[]' : ''
+ DB.exec <<~SQL
+ UPDATE site_settings
+ SET value = COALESCE(array_to_string(
+ (
+ SELECT array_agg(groups.#{to})
+ FROM groups
+ WHERE groups.#{from} = ANY (string_to_array(site_settings.value, '|', '')#{cast_type})
+ ),
+ '|', ''
+ ), site_settings.value)
+ WHERE data_type = #{SiteSettings::TypeSupervisor.types[:group_list]}
+ SQL
+ end
+end
diff --git a/lib/discourse.rb b/lib/discourse.rb
index d413c1a6af5..b7cf9a91c05 100644
--- a/lib/discourse.rb
+++ b/lib/discourse.rb
@@ -743,5 +743,4 @@ module Discourse
def self.skip_post_deployment_migrations?
['1', 'true'].include?(ENV["SKIP_POST_DEPLOYMENT_MIGRATIONS"]&.to_s)
end
-
end
diff --git a/test/javascripts/admin/components/group-list-setting-test.js.es6 b/test/javascripts/admin/components/group-list-setting-test.js.es6
index e6be2313d39..f998ccbd0b0 100644
--- a/test/javascripts/admin/components/group-list-setting-test.js.es6
+++ b/test/javascripts/admin/components/group-list-setting-test.js.es6
@@ -32,7 +32,7 @@ componentTest("default", {
setting: "foo_bar",
type: "group_list",
validValues: undefined,
- value: "Donuts"
+ value: "1"
})
);
},
@@ -42,16 +42,16 @@ componentTest("default", {
assert.equal(
subject.header().value(),
- "Donuts",
+ "1",
"it selects the setting's value"
);
await subject.expand();
- await subject.selectRowByValue("Cheese cake");
+ await subject.selectRowByValue("2");
assert.equal(
subject.header().value(),
- "Donuts,Cheese cake",
+ "1,2",
"it allows to select a setting from the list of choices"
);
}