Commit 78cb222d authored by egrieff's avatar egrieff Committed by Fatih Acet

Add bulk update endpoint for groups

parent b74d846c
...@@ -92,7 +92,7 @@ module IssuableActions ...@@ -92,7 +92,7 @@ module IssuableActions
end end
def bulk_update def bulk_update
result = Issuable::BulkUpdateService.new(project, current_user, bulk_update_params).execute(resource_name) result = Issuable::BulkUpdateService.new(parent, current_user, bulk_update_params).execute(resource_name)
quantity = result[:count] quantity = result[:count]
render json: { notice: "#{quantity} #{resource_name.pluralize(quantity)} updated" } render json: { notice: "#{quantity} #{resource_name.pluralize(quantity)} updated" }
......
# Language: Ruby, Level: Level 3
# frozen_string_literal: true # frozen_string_literal: true
module Issuable module Issuable
class BulkUpdateService < IssuableBaseService class BulkUpdateService < IssuableBaseService
def initialize(parent, user = nil, params = {})
super
end
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
def execute(type) def execute(type)
model_class = type.classify.constantize model_class = type.classify.constantize
......
- @project = @group.projects.first - @can_bulk_update = can?(current_user, :admin_issue, @group)
- @can_bulk_update = can?(current_user, :admin_issue, @project)
- page_title "Issues" - page_title "Issues"
= content_for :meta_tags do = content_for :meta_tags do
...@@ -21,6 +20,6 @@ ...@@ -21,6 +20,6 @@
= render 'shared/issuable/search_bar', type: :issues = render 'shared/issuable/search_bar', type: :issues
- if @can_bulk_update - if @can_bulk_update
= render 'shared/issuable/bulk_update_sidebar', type: :issues = render 'shared/issuable/group_bulk_update_sidebar', type: :issues
= render 'shared/issues' = render 'shared/issues'
- type = local_assigns.fetch(:type)
- @project = @group.projects.first
%aside.issues-bulk-update.js-right-sidebar.right-sidebar{ "aria-live" => "polite", data: { 'signed-in': current_user.present? } }
.issuable-sidebar.hidden
-# = form_tag [:bulk_update, @project.namespace.becomes(Namespace), @project, type], method: :post, class: "bulk-update" do
= form_tag bulk_update_group_issues_path(@group), method: :post, class: "bulk-update" do
.block.issuable-sidebar-header
.filter-item.inline.update-issues-btn.float-left
= button_tag "Update all", class: "btn update-selected-issues btn-info", disabled: true
= button_tag "Cancel", class: "btn btn-default js-bulk-update-menu-hide float-right"
.block
.title
Milestone
.filter-item
= dropdown_tag("Select milestone", options: { title: "Assign milestone", toggle_class: "js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update", filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: "Search milestones", data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: project_milestones_path(@project, :json), use_id: true, default_label: "Milestone" } })
= hidden_field_tag "update[issuable_ids]", []
= hidden_field_tag :state_event, params[:state_event]
...@@ -6,9 +6,14 @@ module EE ...@@ -6,9 +6,14 @@ module EE
extend ::Gitlab::Utils::Override extend ::Gitlab::Utils::Override
EE_PERMITTED_KEYS = %w[ EE_PERMITTED_KEYS = %w[
weight weight
].freeze ].freeze
override :authorize_admin_issuable!
def authorize_admin_issuable!
return access_denied! unless can?(current_user, :"admin_#{resource_name}", parent)
end
override :permitted_keys override :permitted_keys
def permitted_keys def permitted_keys
@permitted_keys ||= (super + EE_PERMITTED_KEYS).freeze @permitted_keys ||= (super + EE_PERMITTED_KEYS).freeze
......
# frozen_string_literal: true
class Groups::IssuesController < Groups::ApplicationController
include IssuableActions
end
...@@ -72,6 +72,12 @@ constraints(::Constraints::GroupUrlConstrainer.new) do ...@@ -72,6 +72,12 @@ constraints(::Constraints::GroupUrlConstrainer.new) do
end end
end end
resources :issues, only: [] do
collection do
post :bulk_update
end
end
resources :todos, only: [:create] resources :todos, only: [:create]
resources :boards, only: [:create, :update, :destroy] do resources :boards, only: [:create, :update, :destroy] do
collection do collection do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment