Project

General

Profile

Defect #33521 » diff.patch

Mizuki ISHIKAWA, 2021-08-04 10:49

View differences:

app/controllers/application_controller.rb
411 411
    @attachments = att || []
412 412
  end
413 413

  
414
  def parse_params_for_bulk_update(params)
415
    attributes = (params || {}).reject {|k, v| v.blank?}
416
    attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'}
417
    if custom = attributes[:custom_field_values]
418
      custom.reject! {|k, v| v.blank?}
419
      custom.keys.each do |k|
414
  def parse_none_to_blank(params)
415
    attributes = (params || {})
416
    attributes.each_key {|k| attributes[k] = '' if attributes[k] == 'none'}
417
    if (custom = attributes[:custom_field_values])
418
      custom.each_key do |k|
420 419
        if custom[k].is_a?(Array)
421 420
          custom[k] << '' if custom[k].delete('__none__')
422 421
        else
......
427 426
    attributes
428 427
  end
429 428

  
429
  def parse_params_for_bulk_update(params)
430
    attributes = (params || {}).reject {|k, v| v.blank?}
431
    if custom = attributes[:custom_field_values]
432
      custom.reject! {|k, v| v.blank?}
433
    end
434

  
435
    parse_none_to_blank(attributes)
436
  end
437

  
430 438
  # make sure that the user is a member of the project (or admin) if project is private
431 439
  # used as a before_action for actions that do not require any particular permission on the project
432 440
  def check_project_privacy
app/controllers/issues_controller.rb
561 561
        return false
562 562
      end
563 563
    end
564
    issue_attributes = parse_none_to_blank(issue_attributes)
564 565
    @issue.safe_attributes = issue_attributes
565 566
    @priorities = IssuePriority.active
566 567
    @allowed_statuses = @issue.new_statuses_allowed_to(User.current)
test/functional/issues_controller_test.rb
6660 6660
    assert_equal 2, issue.reload.assigned_to_id
6661 6661
  end
6662 6662

  
6663
  def test_update_with_value_of_none
6664
    @request.session[:user_id] = 2
6665
    issue = Issue.find(1)
6666
    issue.custom_field_values = {1 => 'MySQL'}
6667
    issue.assigned_to_id = 2
6668
    issue.save!
6669

  
6670
    put(
6671
      :update,
6672
      params: {
6673
        id: issue.id,
6674
        issue: {
6675
          assigned_to_id: 'none',
6676
          category_id: 'none',
6677
          fixed_version_id: 'none',
6678
          custom_field_values: { 1 => '__none__' }
6679
        }
6680
      }
6681
    )
6682

  
6683
    issue.reload
6684
    assert_nil issue.assigned_to
6685
    assert_nil issue.category
6686
    assert_nil issue.fixed_version
6687
    assert_equal '', issue.custom_field_value(1)
6688
  end
6689

  
6663 6690
  def test_get_bulk_edit
6664 6691
    @request.session[:user_id] = 2
6665 6692
    get(:bulk_edit, :params => {:ids => [1, 3]})
(5-5/5)