summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2015-07-30 12:16:08 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2015-07-30 12:23:25 +0200
commit861dd8ff0010436c882ebe1ccfa448a0a3029116 (patch)
tree20261417b95703395b313faa574595105e7e46ab /app
parent6ec3f9873a61449e50521face3a1b32b03eb9feb (diff)
downloadgitlab-ci-861dd8ff0010436c882ebe1ccfa448a0a3029116.tar.gz
Added Application Settings
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.rb15
-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, 96 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..1b98e19 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -27,6 +27,7 @@
class Project < ActiveRecord::Base
include ProjectStatus
+ include CurrentSettings
has_many :commits, dependent: :destroy
has_many :builds, through: :commits, dependent: :destroy
@@ -70,13 +71,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