diff options
Diffstat (limited to 'db/migrate/20160301124843_add_visibility_level_to_groups.rb')
-rw-r--r-- | db/migrate/20160301124843_add_visibility_level_to_groups.rb | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/db/migrate/20160301124843_add_visibility_level_to_groups.rb b/db/migrate/20160301124843_add_visibility_level_to_groups.rb index 89b5ac19983..8121a0c6f90 100644 --- a/db/migrate/20160301124843_add_visibility_level_to_groups.rb +++ b/db/migrate/20160301124843_add_visibility_level_to_groups.rb @@ -1,12 +1,30 @@ class AddVisibilityLevelToGroups < ActiveRecord::Migration - def change - #All groups public by default - add_column :namespaces, :visibility_level, :integer, null: false, default: allowed_visibility_level + def up + add_column :namespaces, :visibility_level, :integer, null: false, default: Gitlab::VisibilityLevel::PUBLIC + add_index :namespaces, :visibility_level + + # Unfortunately, this is needed on top of the `default`, since we don't want the configuration specific + # `allowed_visibility_level` to end up in schema.rb + if allowed_visibility_level < Gitlab::VisibilityLevel::PUBLIC + execute("UPDATE namespaces SET visibility_level = #{allowed_visibility_level}") + end + end + + def down + remove_column :namespaces, :visibility_level end + private + def allowed_visibility_level - # TODO: Don't use `current_application_settings` - allowed_levels = Gitlab::VisibilityLevel.values - current_application_settings.restricted_visibility_levels + return 20 + application_settings = select_one("SELECT restricted_visibility_levels FROM application_settings ORDER BY id DESC LIMIT 1") + if application_settings + restricted_visibility_levels = YAML.safe_load(application_settings["restricted_visibility_levels"]) rescue nil + end + restricted_visibility_levels ||= [] + + allowed_levels = Gitlab::VisibilityLevel.values - restricted_visibility_levels allowed_levels.max end end |