Override setters so it also accepts string visibility levels
Override the `ApplicationSetting` default visibility_level setters so they accept strings & integers for the levels.
This commit is contained in:
parent
a3fdd6acd2
commit
c3b1cb71f0
2 changed files with 17 additions and 15 deletions
|
@ -278,6 +278,22 @@ class ApplicationSetting < ActiveRecord::Base
|
||||||
self.repository_storages = [value]
|
self.repository_storages = [value]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def default_project_visibility=(level)
|
||||||
|
super(Gitlab::VisibilityLevel.level_value(level))
|
||||||
|
end
|
||||||
|
|
||||||
|
def default_snippet_visibility=(level)
|
||||||
|
super(Gitlab::VisibilityLevel.level_value(level))
|
||||||
|
end
|
||||||
|
|
||||||
|
def default_group_visibility=(level)
|
||||||
|
super(Gitlab::VisibilityLevel.level_value(level))
|
||||||
|
end
|
||||||
|
|
||||||
|
def restricted_visibility_levels=(levels)
|
||||||
|
super(levels.map { |level| Gitlab::VisibilityLevel.level_value(level) })
|
||||||
|
end
|
||||||
|
|
||||||
# Choose one of the available repository storage options. Currently all have
|
# Choose one of the available repository storage options. Currently all have
|
||||||
# equal weighting.
|
# equal weighting.
|
||||||
def pick_repository_storage
|
def pick_repository_storage
|
||||||
|
|
|
@ -7,20 +7,6 @@ module API
|
||||||
@current_setting ||=
|
@current_setting ||=
|
||||||
(ApplicationSetting.current || ApplicationSetting.create_from_defaults)
|
(ApplicationSetting.current || ApplicationSetting.create_from_defaults)
|
||||||
end
|
end
|
||||||
|
|
||||||
def map_setting_visibility_levels(attrs)
|
|
||||||
[:default_project_visibility, :default_snippet_visibility, :default_group_visibility].each do |param|
|
|
||||||
visibility = attrs.delete(param)
|
|
||||||
if visibility
|
|
||||||
attrs[param] = Gitlab::VisibilityLevel.string_options[visibility]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
restricted_levels = attrs.delete(:restricted_visibility_levels)
|
|
||||||
if restricted_levels
|
|
||||||
attrs[:restricted_visibility_levels] = Gitlab::VisibilityLevel.string_options.values_at(*restricted_levels)
|
|
||||||
end
|
|
||||||
attrs
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
desc 'Get the current application settings' do
|
desc 'Get the current application settings' do
|
||||||
|
@ -142,7 +128,7 @@ module API
|
||||||
:housekeeping_enabled, :terminal_max_session_time
|
:housekeeping_enabled, :terminal_max_session_time
|
||||||
end
|
end
|
||||||
put "application/settings" do
|
put "application/settings" do
|
||||||
attrs = map_setting_visibility_levels(declared_params(include_missing: false))
|
attrs = declared_params(include_missing: false)
|
||||||
|
|
||||||
if current_settings.update_attributes(attrs)
|
if current_settings.update_attributes(attrs)
|
||||||
present current_settings, with: Entities::ApplicationSetting
|
present current_settings, with: Entities::ApplicationSetting
|
||||||
|
|
Loading…
Reference in a new issue