mirror of
https://github.com/meineerde/redmine.git
synced 2026-01-05 07:01:30 +00:00
Merged r4087 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.0-stable@4146 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
7ad17f92b1
commit
b5bbc93325
@ -260,8 +260,8 @@ private
|
||||
end
|
||||
|
||||
@from, @to = @to, @from if @from && @to && @from > @to
|
||||
@from ||= (TimeEntry.earilest_date_for_project || Date.today) - 1
|
||||
@to ||= (TimeEntry.latest_date_for_project || Date.today)
|
||||
@from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
|
||||
@to ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
|
||||
end
|
||||
|
||||
def load_available_criterias
|
||||
|
||||
@ -449,6 +449,15 @@ class Project < ActiveRecord::Base
|
||||
enabled_modules.clear
|
||||
end
|
||||
end
|
||||
|
||||
# Returns an array of projects that are in this project's hierarchy
|
||||
#
|
||||
# Example: parents, children, siblings
|
||||
def hierarchy
|
||||
parents = project.self_and_ancestors || []
|
||||
descendants = project.descendants || []
|
||||
project_hierarchy = parents | descendants # Set union
|
||||
end
|
||||
|
||||
# Returns an auto-generated project identifier based on the last identifier used
|
||||
def self.next_identifier
|
||||
|
||||
@ -82,11 +82,19 @@ class TimeEntry < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def self.earilest_date_for_project
|
||||
TimeEntry.minimum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries))
|
||||
def self.earilest_date_for_project(project=nil)
|
||||
finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
|
||||
if project
|
||||
finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
|
||||
end
|
||||
TimeEntry.minimum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
|
||||
end
|
||||
|
||||
def self.latest_date_for_project
|
||||
TimeEntry.maximum(:spent_on, :include => :project, :conditions => Project.allowed_to_condition(User.current, :view_time_entries))
|
||||
def self.latest_date_for_project(project=nil)
|
||||
finder_conditions = ARCondition.new(Project.allowed_to_condition(User.current, :view_time_entries))
|
||||
if project
|
||||
finder_conditions << ["project_id IN (?)", project.hierarchy.collect(&:id)]
|
||||
end
|
||||
TimeEntry.maximum(:spent_on, :include => :project, :conditions => finder_conditions.conditions)
|
||||
end
|
||||
end
|
||||
|
||||
@ -283,7 +283,7 @@ class TimelogControllerTest < ActionController::TestCase
|
||||
assert_not_nil assigns(:total_hours)
|
||||
assert_equal "162.90", "%.2f" % assigns(:total_hours)
|
||||
# display all time by default
|
||||
assert_equal '2007-03-11'.to_date, assigns(:from)
|
||||
assert_equal '2007-03-12'.to_date, assigns(:from)
|
||||
assert_equal '2007-04-22'.to_date, assigns(:to)
|
||||
end
|
||||
|
||||
@ -325,8 +325,8 @@ class TimelogControllerTest < ActionController::TestCase
|
||||
assert_equal 2, assigns(:entries).size
|
||||
assert_not_nil assigns(:total_hours)
|
||||
assert_equal 154.25, assigns(:total_hours)
|
||||
# display all time by default
|
||||
assert_equal '2007-03-11'.to_date, assigns(:from)
|
||||
# display all time based on what's been logged
|
||||
assert_equal '2007-03-12'.to_date, assigns(:from)
|
||||
assert_equal '2007-04-22'.to_date, assigns(:to)
|
||||
end
|
||||
|
||||
|
||||
@ -50,17 +50,50 @@ class TimeEntryTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
context "#earilest_date_for_project" do
|
||||
should "return the lowest spent_on value that is visible to the current user" do
|
||||
setup do
|
||||
User.current = nil
|
||||
assert_equal "2007-03-12", TimeEntry.earilest_date_for_project.to_s
|
||||
@public_project = Project.generate!(:is_public => true)
|
||||
@issue = Issue.generate_for_project!(@public_project)
|
||||
TimeEntry.generate!(:spent_on => '2010-01-01',
|
||||
:issue => @issue,
|
||||
:project => @public_project)
|
||||
end
|
||||
|
||||
context "without a project" do
|
||||
should "return the lowest spent_on value that is visible to the current user" do
|
||||
assert_equal "2007-03-12", TimeEntry.earilest_date_for_project.to_s
|
||||
end
|
||||
end
|
||||
|
||||
context "with a project" do
|
||||
should "return the lowest spent_on value that is visible to the current user for that project and it's subprojects only" do
|
||||
assert_equal "2010-01-01", TimeEntry.earilest_date_for_project(@public_project).to_s
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
context "#latest_date_for_project" do
|
||||
should "return the highest spent_on value that is visible to the current user" do
|
||||
setup do
|
||||
User.current = nil
|
||||
assert_equal "2007-04-22", TimeEntry.latest_date_for_project.to_s
|
||||
@public_project = Project.generate!(:is_public => true)
|
||||
@issue = Issue.generate_for_project!(@public_project)
|
||||
TimeEntry.generate!(:spent_on => '2010-01-01',
|
||||
:issue => @issue,
|
||||
:project => @public_project)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
context "without a project" do
|
||||
should "return the highest spent_on value that is visible to the current user" do
|
||||
assert_equal "2010-01-01", TimeEntry.latest_date_for_project.to_s
|
||||
end
|
||||
end
|
||||
|
||||
context "with a project" do
|
||||
should "return the highest spent_on value that is visible to the current user for that project and it's subprojects only" do
|
||||
project = Project.find(1)
|
||||
assert_equal "2007-04-22", TimeEntry.latest_date_for_project(project).to_s
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user