summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzciński <ayufan@ayufan.eu>2015-07-30 13:45:27 +0000
committerKamil Trzciński <ayufan@ayufan.eu>2015-07-30 13:45:27 +0000
commitdc51460c34b185ec85cb27c69767878eeb02779a (patch)
tree7b6636c78baed3d28faa491554461489f21fcf01 /app
parentdb03907e8fa773af4e7d5934e65c3fd0da92d6f3 (diff)
parent6c1a756768bcf9370d104c2532077e62253f05e3 (diff)
downloadgitlab-ci-dc51460c34b185ec85cb27c69767878eeb02779a.tar.gz
Merge branch 'application_settings' into 'master'
Added Application Settings This moves some of the settings from application.yml to Admin page. ![Screen_Shot_2015-07-30_at_12.22.27](https://gitlab.com/gitlab-org/gitlab-ci/uploads/d37aa0003d9afaeb85aa350bb02e6f07/Screen_Shot_2015-07-30_at_12.22.27.png) /cc @sytses @vsizov See merge request !215
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/application_settings_controller.rb29
-rw-r--r--app/models/application_setting.rb25
-rw-r--r--app/models/project.rb16
-rw-r--r--app/views/admin/application_settings/_form.html.haml24
-rw-r--r--app/views/admin/application_settings/show.html.haml3
-rw-r--r--app/views/layouts/_nav_admin.html.haml8
6 files changed, 97 insertions, 8 deletions
diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb
new file mode 100644
index 0000000..8f673b9
--- /dev/null
+++ b/app/controllers/admin/application_settings_controller.rb
@@ -0,0 +1,29 @@
+class Admin::ApplicationSettingsController < Admin::ApplicationController
+ before_action :set_application_setting
+
+ def show
+ end
+
+ def update
+ if @application_setting.update_attributes(application_setting_params)
+ redirect_to admin_application_settings_path,
+ notice: 'Application settings saved successfully'
+ else
+ render :show
+ end
+ end
+
+ private
+
+ def set_application_setting
+ @application_setting = ApplicationSetting.current
+ @application_setting ||= ApplicationSetting.create_from_defaults
+ end
+
+ def application_setting_params
+ params.require(:application_setting).permit(
+ :all_broken_builds,
+ :add_pusher,
+ )
+ end
+end
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
new file mode 100644
index 0000000..f68f10a
--- /dev/null
+++ b/app/models/application_setting.rb
@@ -0,0 +1,25 @@
+# == Schema Information
+#
+# Table name: application_settings
+#
+# id :integer not null, primary key
+# all_broken_builds :boolean
+# add_pusher :boolean
+# created_at :datetime
+# updated_at :datetime
+#
+
+class ApplicationSetting < ActiveRecord::Base
+
+ def self.current
+ ApplicationSetting.last
+ end
+
+ def self.create_from_defaults
+ create(
+ all_broken_builds: Settings.gitlab_ci['all_broken_builds'],
+ add_pusher: Settings.gitlab_ci['add_pusher'],
+ )
+ end
+
+end
diff --git a/app/models/project.rb b/app/models/project.rb
index 4e3e966..b4a3ffc 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -61,6 +61,8 @@ class Project < ActiveRecord::Base
before_validation :set_default_values
class << self
+ include CurrentSettings
+
def base_build_script
<<-eos
git submodule update --init
@@ -70,13 +72,13 @@ ls -la
def parse(project)
params = {
- name: project.name_with_namespace,
- gitlab_id: project.id,
- path: project.path_with_namespace,
- default_ref: project.default_branch || 'master',
- ssh_url_to_repo: project.ssh_url_to_repo,
- email_add_pusher: GitlabCi.config.gitlab_ci.add_pusher,
- email_only_broken_builds: GitlabCi.config.gitlab_ci.all_broken_builds,
+ name: project.name_with_namespace,
+ gitlab_id: project.id,
+ path: project.path_with_namespace,
+ default_ref: project.default_branch || 'master',
+ ssh_url_to_repo: project.ssh_url_to_repo,
+ email_add_pusher: current_application_settings.add_pusher,
+ email_only_broken_builds: current_application_settings.all_broken_builds,
}
project = Project.new(params)
diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml
new file mode 100644
index 0000000..a767257
--- /dev/null
+++ b/app/views/admin/application_settings/_form.html.haml
@@ -0,0 +1,24 @@
+= form_for @application_setting, url: admin_application_settings_path, html: { class: 'form-horizontal fieldset-form' } do |f|
+ - if @application_setting.errors.any?
+ #error_explanation
+ .alert.alert-danger
+ - @application_setting.errors.full_messages.each do |msg|
+ %p= msg
+
+ %fieldset
+ %legend Default Project Settings
+ .form-group
+ .col-sm-offset-2.col-sm-10
+ .checkbox
+ = f.label :all_broken_builds do
+ = f.check_box :all_broken_builds
+ Send emails only on broken builds
+ .form-group
+ .col-sm-offset-2.col-sm-10
+ .checkbox
+ = f.label :add_pusher do
+ = f.check_box :add_pusher
+ Add pusher to recipients list
+
+ .form-actions
+ = f.submit 'Save', class: 'btn btn-primary'
diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml
new file mode 100644
index 0000000..7ef0aa8
--- /dev/null
+++ b/app/views/admin/application_settings/show.html.haml
@@ -0,0 +1,3 @@
+%h3.page-title Settings
+%hr
+= render 'form'
diff --git a/app/views/layouts/_nav_admin.html.haml b/app/views/layouts/_nav_admin.html.haml
index 12bfb80..94b5468 100644
--- a/app/views/layouts/_nav_admin.html.haml
+++ b/app/views/layouts/_nav_admin.html.haml
@@ -19,4 +19,10 @@
Builds
%small.pull-right
= Build.count(:all)
-
+ %li
+ %hr
+ = nav_link(controller: :application_settings, html_options: { class: 'separate-item'}) do
+ = link_to admin_application_settings_path do
+ %i.icon-cogs
+ %span
+ Settings