diff options
Diffstat (limited to 'app/services/issuable_base_service.rb')
-rw-r--r-- | app/services/issuable_base_service.rb | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb index 03115416607..acd6d45af7a 100644 --- a/app/services/issuable_base_service.rb +++ b/app/services/issuable_base_service.rb @@ -162,8 +162,6 @@ class IssuableBaseService < ::BaseProjectService return unless result.success? && result[:escalation_status].present? - @escalation_status_change_reason = result[:escalation_status].delete(:status_change_reason) - params[:incident_management_issuable_escalation_status_attributes] = result[:escalation_status] end @@ -231,7 +229,7 @@ class IssuableBaseService < ::BaseProjectService before_create(issuable) issuable_saved = issuable.with_transaction_returning_status do - issuable.save + transaction_create(issuable) end if issuable_saved @@ -282,8 +280,9 @@ class IssuableBaseService < ::BaseProjectService assign_requested_labels(issuable) assign_requested_assignees(issuable) assign_requested_crm_contacts(issuable) + widget_params = filter_widget_params - if issuable.changed? || params.present? + if issuable.changed? || params.present? || widget_params.present? issuable.assign_attributes(allowed_update_params(params)) if has_title_or_description_changed?(issuable) @@ -303,7 +302,7 @@ class IssuableBaseService < ::BaseProjectService ensure_milestone_available(issuable) issuable_saved = issuable.with_transaction_returning_status do - issuable.save(touch: should_touch) + transaction_update(issuable, { save_with_touch: should_touch }) end if issuable_saved @@ -332,6 +331,16 @@ class IssuableBaseService < ::BaseProjectService issuable end + def transaction_update(issuable, opts = {}) + touch = opts[:save_with_touch] || false + + issuable.save(touch: touch) + end + + def transaction_create(issuable) + issuable.save + end + def update_task(issuable) filter_params(issuable) @@ -590,6 +599,10 @@ class IssuableBaseService < ::BaseProjectService issuable_sla.update(issuable_closed: issuable.closed?) end + + def filter_widget_params + params.delete(:widget_params) + end end IssuableBaseService.prepend_mod_with('IssuableBaseService') |