diff options
author | Kamil Trzciński <ayufan@ayufan.eu> | 2015-07-30 13:45:27 +0000 |
---|---|---|
committer | Kamil Trzciński <ayufan@ayufan.eu> | 2015-07-30 13:45:27 +0000 |
commit | dc51460c34b185ec85cb27c69767878eeb02779a (patch) | |
tree | 7b6636c78baed3d28faa491554461489f21fcf01 /app | |
parent | db03907e8fa773af4e7d5934e65c3fd0da92d6f3 (diff) | |
parent | 6c1a756768bcf9370d104c2532077e62253f05e3 (diff) | |
download | gitlab-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.rb | 29 | ||||
-rw-r--r-- | app/models/application_setting.rb | 25 | ||||
-rw-r--r-- | app/models/project.rb | 16 | ||||
-rw-r--r-- | app/views/admin/application_settings/_form.html.haml | 24 | ||||
-rw-r--r-- | app/views/admin/application_settings/show.html.haml | 3 | ||||
-rw-r--r-- | app/views/layouts/_nav_admin.html.haml | 8 |
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 |