Commit 17e2e536 authored by Małgorzata Ksionek's avatar Małgorzata Ksionek

Add new attribute to application settings

Add migration and setting
parent 0f66d1ff
......@@ -8,6 +8,7 @@
.form-group
= f.label s_('ProjectCreationLevel|Default project creation protection'), class: 'label-bold'
= f.select :default_project_creation, options_for_select(Gitlab::Access.project_creation_options, @application_setting.default_project_creation), {}, class: 'form-control'
= render_if_exists 'admin/application_settings/default_project_deletion_protection_setting', form: f
.form-group.visibility-level-setting
= f.label :default_project_visibility, class: 'label-bold'
= render('shared/visibility_radios', model_method: :default_project_visibility, form: f, selected_level: @application_setting.default_project_visibility, form_model: Project.new)
......
......@@ -138,6 +138,7 @@ Settings['issues_tracker'] ||= {}
#
Settings['gitlab'] ||= Settingslogic.new({})
Settings.gitlab['default_project_creation'] ||= ::Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS
Settings.gitlab['default_project_deletion_protection'] ||= false
Settings.gitlab['default_projects_limit'] ||= 100000
Settings.gitlab['default_branch_protection'] ||= 2
Settings.gitlab['default_can_create_group'] = true if Settings.gitlab['default_can_create_group'].nil?
......
......@@ -226,6 +226,7 @@ ActiveRecord::Schema.define(version: 20190611161641) do
t.text "encrypted_lets_encrypt_private_key"
t.text "encrypted_lets_encrypt_private_key_iv"
t.boolean "dns_rebinding_protection_enabled", default: true, null: false
t.boolean "default_project_deletion_protection", default: false, null: false
t.index ["custom_project_templates_group_id"], name: "index_application_settings_on_custom_project_templates_group_id", using: :btree
t.index ["file_template_project_id"], name: "index_application_settings_on_file_template_project_id", using: :btree
t.index ["usage_stats_set_by_user_id"], name: "index_application_settings_on_usage_stats_set_by_user_id", using: :btree
......
......@@ -26,6 +26,10 @@ module EE
attrs << :pseudonymizer_enabled
end
if License.feature_available?(:default_project_deletion_protection)
attrs << :default_project_deletion_protection
end
attrs
end
end
......
......@@ -75,6 +75,7 @@ module EE
def defaults
super.merge(
allow_group_owners_to_manage_ldap: true,
default_project_deletion_protection: false,
elasticsearch_aws: false,
elasticsearch_aws_region: ENV['ELASTIC_REGION'] || 'us-east-1',
elasticsearch_replicas: 1,
......
......@@ -69,6 +69,7 @@ class License < ApplicationRecord
reject_unsigned_commits
commit_committer_check
ci_cd_projects
default_project_deletion_protection
protected_environments
custom_project_templates
group_project_templates
......
- return unless License.feature_available?(:default_project_deletion_protection)
- f = local_assigns.fetch(:form)
.form-group
= f.label s_('ProjectCreationLevel|Default project deletion protection'), class: 'label-bold'
.form-check
= f.check_box :default_project_deletion_protection, class: 'form-check-input'
= f.label :default_project_deletion_protection, class: 'form-check-label' do
= _('Only admins can delete project')
# frozen_string_literal: true
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class AddDefaultProjectDeletionProtectionToApplicationSettings < ActiveRecord::Migration[5.1]
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
add_column_with_default :application_settings, :default_project_deletion_protection, :boolean, default: false, allow_null: false
end
def down
remove_column :application_settings, :default_project_deletion_protection
end
end
......@@ -24,6 +24,10 @@ module EE
attrs = attrs.except(:file_template_project_id)
end
unless ::License.feature_available?(:default_project_deletion_protection)
attrs = attrs.except(:default_project_deletion_protection)
end
attrs
end
# rubocop: enable CodeReuse/ActiveRecord
......
......@@ -142,6 +142,13 @@ describe API::Settings, 'EE Settings' do
it_behaves_like 'settings for licensed features'
end
context 'mirroring settings' do
let(:settings) { { default_project_deletion_protection: true } }
let(:feature) { :default_project_deletion_protection }
it_behaves_like 'settings for licensed features'
end
context 'custom file template project' do
let(:settings) { { file_template_project_id: project.id } }
let(:feature) { :custom_file_templates }
......
......@@ -9050,6 +9050,9 @@ msgstr ""
msgid "Only admins"
msgstr ""
msgid "Only admins can delete project"
msgstr ""
msgid "Only mirror protected branches"
msgstr ""
......@@ -10208,6 +10211,9 @@ msgstr ""
msgid "ProjectCreationLevel|Default project creation protection"
msgstr ""
msgid "ProjectCreationLevel|Default project deletion protection"
msgstr ""
msgid "ProjectCreationLevel|Developers + Maintainers"
msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment