summaryrefslogtreecommitdiff
path: root/db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@selenight.nl>2016-03-22 00:09:20 +0100
committerDouwe Maan <douwe@selenight.nl>2016-03-22 00:09:20 +0100
commit31266c5be4748f57a7d56bbcc6f06d570cbf5356 (patch)
tree1ee744a7303335cf1a270d92ec6b9e955a52cace /db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb
parentae7b2ef62cdf61c990f914d776a6fdfc2bc49fa2 (diff)
downloadgitlab-ce-31266c5be4748f57a7d56bbcc6f06d570cbf5356.tar.gz
Address feedback
Diffstat (limited to 'db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb')
-rw-r--r--db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb b/db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb
new file mode 100644
index 00000000000..37179926d42
--- /dev/null
+++ b/db/migrate/20160308212903_add_default_group_visibility_to_application_settings.rb
@@ -0,0 +1,27 @@
+# Create visibility level field on DB
+# Sets default_visibility_level to value on settings if not restricted
+# If value is restricted takes higher visibility level allowed
+
+class AddDefaultGroupVisibilityToApplicationSettings < ActiveRecord::Migration
+ def up
+ add_column :application_settings, :default_group_visibility, :integer
+ execute("UPDATE application_settings SET default_group_visibility = #{allowed_visibility_level}")
+ end
+
+ def down
+ remove_column :application_settings, :default_group_visibility
+ end
+
+ private
+
+ def allowed_visibility_level
+ 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