summaryrefslogtreecommitdiff
path: root/db/migrate/20160301124843_add_visibility_level_to_groups.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/migrate/20160301124843_add_visibility_level_to_groups.rb')
-rw-r--r--db/migrate/20160301124843_add_visibility_level_to_groups.rb28
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