diff options
author | Shinya Maeda <gitlab.shinyamaeda@gmail.com> | 2017-04-07 15:52:25 +0900 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2017-04-07 16:17:27 +0200 |
commit | 76c0364ca52ce0b777f2ddb277fe666d95392256 (patch) | |
tree | 8923dd63370e13a5c769a438c7769cc4120118f1 | |
parent | 2548c155eed13c806951a6303c85dbb0c5772ca3 (diff) | |
download | gitlab-ce-76c0364ca52ce0b777f2ddb277fe666d95392256.tar.gz |
Use allow_destroy. Remove condtion from form.haml.
-rw-r--r-- | app/controllers/projects/triggers_controller.rb | 10 | ||||
-rw-r--r-- | app/models/ci/trigger.rb | 15 | ||||
-rw-r--r-- | app/models/ci/trigger_schedule.rb | 5 | ||||
-rw-r--r-- | app/views/projects/triggers/_form.html.haml | 7 |
4 files changed, 13 insertions, 24 deletions
diff --git a/app/controllers/projects/triggers_controller.rb b/app/controllers/projects/triggers_controller.rb index 5ceeeb1c454..2a3c563890b 100644 --- a/app/controllers/projects/triggers_controller.rb +++ b/app/controllers/projects/triggers_controller.rb @@ -16,6 +16,7 @@ class Projects::TriggersController < Projects::ApplicationController if @trigger.valid? flash[:notice] = 'Trigger was created successfully.' else + puts "@trigger.errors: #{@trigger.errors.inspect}" flash[:alert] = 'You could not create a new trigger.' end @@ -33,6 +34,7 @@ class Projects::TriggersController < Projects::ApplicationController end def edit + @trigger.build_trigger_schedule unless @trigger.trigger_schedule.present? end def update @@ -69,15 +71,15 @@ class Projects::TriggersController < Projects::ApplicationController def create_params params.require(:trigger).permit( - :description, :ref, :trigger_schedule_on, - trigger_schedule_attributes: [ :cron, :cron_timezone ] + :description, :ref, + trigger_schedule_attributes: [ :cron, :cron_timezone, :_destroy ] ) end def update_params params.require(:trigger).permit( - :description, :ref, :trigger_schedule_on, - trigger_schedule_attributes: [ :cron, :cron_timezone ] + :description, :ref, + trigger_schedule_attributes: [ :cron, :cron_timezone, :_destroy ] ) end end diff --git a/app/models/ci/trigger.rb b/app/models/ci/trigger.rb index 225b6253616..f7ceba0d2a5 100644 --- a/app/models/ci/trigger.rb +++ b/app/models/ci/trigger.rb @@ -8,27 +8,16 @@ module Ci belongs_to :owner, class_name: "User" has_many :trigger_requests, dependent: :destroy - has_one :trigger_schedule, dependent: :destroy + has_one :trigger_schedule, dependent: :destroy, inverse_of: :trigger validates :token, presence: true, uniqueness: true before_validation :set_default_values - accepts_nested_attributes_for :trigger_schedule - - attr_accessor :trigger_schedule_on + accepts_nested_attributes_for :trigger_schedule, allow_destroy: true def set_default_values self.token = SecureRandom.hex(15) if self.token.blank? - - if trigger_schedule_on.present? - if trigger_schedule_on.to_i == 1 - self.trigger_schedule.project = project - self.trigger_schedule.trigger = self - else - self.trigger_schedule = nil - end - end end def last_trigger_request diff --git a/app/models/ci/trigger_schedule.rb b/app/models/ci/trigger_schedule.rb index d8a2770ea61..f7d602920ba 100644 --- a/app/models/ci/trigger_schedule.rb +++ b/app/models/ci/trigger_schedule.rb @@ -6,11 +6,11 @@ module Ci acts_as_paranoid belongs_to :project - belongs_to :trigger + belongs_to :trigger, inverse_of: :trigger_schedule delegate :ref, to: :trigger, allow_nil: true - validates :trigger, presence: { unless: :importing? } + validates_presence_of :trigger validates :cron, cron: true, presence: { unless: :importing? } validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? } validates :ref, presence: { unless: :importing? } @@ -19,6 +19,7 @@ module Ci def set_next_run_at self.next_run_at = Gitlab::Ci::CronParser.new(cron, cron_timezone).next_time_from(Time.now) + self.project = trigger.project end def schedule_next_run! diff --git a/app/views/projects/triggers/_form.html.haml b/app/views/projects/triggers/_form.html.haml index 169f6c43225..c56ee3a1130 100644 --- a/app/views/projects/triggers/_form.html.haml +++ b/app/views/projects/triggers/_form.html.haml @@ -18,13 +18,10 @@ .form-group = f.label :ref, "Ref (For scheduled trigger)", class: "label-light" = f.text_field :ref, class: "form-control", title: 'Trigger Schedule Ref is required.', placeholder: "master" - - if action_name == 'edit' - = f.hidden_field :trigger_schedule_on, :value => @trigger.trigger_schedule.present? ? 1 : 0 - - else .form-group .checkbox - = f.label :trigger_schedule_on do - = f.check_box :trigger_schedule_on + = schedule_fields.label :_destroy do + = schedule_fields.check_box :_destroy, { checked: (@trigger.trigger_schedule.id.present?) }, 0, 1 %strong Register as scheduled trigger .help-block If checked, this trigger will be executed periodically according to `cron`, `cron_timezone` and `ref` |