[#4391] Add a Deliverable filter to the issues list.
This commit is contained in:
@@ -22,6 +22,8 @@ class Deliverable < ActiveRecord::Base
|
||||
|
||||
delegate :name, :to => :contract, :prefix => true, :allow_nil => true
|
||||
|
||||
named_scope :by_title, {:order => "#{Deliverable.table_name}.title ASC"}
|
||||
|
||||
def short_type
|
||||
''
|
||||
end
|
||||
|
||||
5
init.rb
5
init.rb
@@ -44,7 +44,6 @@ end
|
||||
|
||||
require 'dispatcher'
|
||||
Dispatcher.to_prepare :redmine_contracts do
|
||||
|
||||
gem 'inherited_resources', :version => '1.0.6'
|
||||
require_dependency 'inherited_resources'
|
||||
require_dependency 'inherited_resources/base'
|
||||
@@ -65,6 +64,10 @@ Dispatcher.to_prepare :redmine_contracts do
|
||||
Project.send(:include, RedmineContracts::Patches::ProjectPatch)
|
||||
require_dependency 'issue'
|
||||
Issue.send(:include, RedmineContracts::Patches::IssuePatch)
|
||||
require_dependency 'query'
|
||||
unless Query.included_modules.include? RedmineContracts::Patches::QueryPatch
|
||||
Query.send(:include, RedmineContracts::Patches::QueryPatch)
|
||||
end
|
||||
|
||||
unless Query.available_columns.collect(&:name).include?(:deliverable_title)
|
||||
Query.add_available_column(QueryColumn.new(:deliverable_title, :sortable => "#{Deliverable.table_name}.title"))
|
||||
|
||||
@@ -7,8 +7,8 @@ module RedmineContracts
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
unloadable
|
||||
|
||||
has_many :contracts
|
||||
has_many :deliverables, :through => :contracts
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
40
lib/redmine_contracts/patches/query_patch.rb
Normal file
40
lib/redmine_contracts/patches/query_patch.rb
Normal file
@@ -0,0 +1,40 @@
|
||||
module RedmineContracts
|
||||
module Patches
|
||||
module QueryPatch
|
||||
def self.included(base)
|
||||
base.extend(ClassMethods)
|
||||
|
||||
base.send(:include, InstanceMethods)
|
||||
base.class_eval do
|
||||
unloadable
|
||||
|
||||
alias_method_chain :available_filters, :deliverable
|
||||
end
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
end
|
||||
|
||||
module InstanceMethods
|
||||
# TODO: Should have an API on the Redmine core for this
|
||||
def available_filters_with_deliverable
|
||||
@available_filters = available_filters_without_deliverable
|
||||
|
||||
if project
|
||||
deliverable_filters = {
|
||||
"deliverable_id" => {
|
||||
:type => :list_optional,
|
||||
:order => 15,
|
||||
:values => project.deliverables.by_title.collect { |d| [d.title, d.id.to_s] }
|
||||
}
|
||||
}
|
||||
return @available_filters.merge(deliverable_filters)
|
||||
else
|
||||
return @available_filters
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -5,5 +5,6 @@ class RedmineContracts::Patches::ProjectTest < ActionController::TestCase
|
||||
context "Project" do
|
||||
subject { Project.new }
|
||||
should_have_many :contracts
|
||||
should_have_many :deliverables
|
||||
end
|
||||
end
|
||||
|
||||
33
test/unit/lib/redmine_contracts/patches/query_patch_test.rb
Normal file
33
test/unit/lib/redmine_contracts/patches/query_patch_test.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
require File.dirname(__FILE__) + '/../../../../test_helper'
|
||||
|
||||
class RedmineContracts::Patches::QueryTest < ActionController::TestCase
|
||||
|
||||
context "Query" do
|
||||
subject {Query.new}
|
||||
|
||||
context "#available_filters with project" do
|
||||
setup do
|
||||
@query = Query.new
|
||||
@query.project = @project = Project.generate!
|
||||
@contract = Contract.generate!(:project => @project, :name => 'A Contract')
|
||||
@manager = User.generate!
|
||||
@deliverable1 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager, :title => 'One')
|
||||
@deliverable2 = FixedDeliverable.generate!(:contract => @contract, :manager => @manager, :title => 'Two')
|
||||
end
|
||||
|
||||
should "add a deliverable_id filter" do
|
||||
filters = @query.available_filters
|
||||
|
||||
assert filters.keys.include?("deliverable_id")
|
||||
|
||||
deliverable_filter = filters["deliverable_id"]
|
||||
assert_equal :list_optional, deliverable_filter[:type]
|
||||
assert_equal [
|
||||
["One", @deliverable1.id.to_s],
|
||||
["Two", @deliverable2.id.to_s]
|
||||
], deliverable_filter[:values]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user