Removed unnecessary calculations in time entries index.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8085 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2011-12-04 23:01:42 +00:00
parent 9e5ed4208b
commit 1050993348
4 changed files with 17 additions and 75 deletions

View File

@ -320,8 +320,6 @@ private
end
@from, @to = @to, @from if @from && @to && @from > @to
@from ||= (TimeEntry.earilest_date_for_project(@project) || Date.today)
@to ||= (TimeEntry.latest_date_for_project(@project) || Date.today)
end
def parse_params_for_bulk_time_entry_attributes(params)

View File

@ -53,10 +53,18 @@ class TimeEntry < ActiveRecord::Base
:include => :project,
:conditions => project.project_condition(include_subprojects)
}}
named_scope :spent_between, lambda {|from, to| {
:conditions => ["#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to]
}}
named_scope :spent_between, lambda {|from, to|
if from && to
{:conditions => ["#{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", from, to]}
elsif from
{:conditions => ["#{TimeEntry.table_name}.spent_on >= ?", from]}
elsif to
{:conditions => ["#{TimeEntry.table_name}.spent_on <= ?", to]}
else
{}
end
}
def after_initialize
if new_record? && self.activity.nil?
if default_activity = TimeEntryActivity.default
@ -96,20 +104,4 @@ class TimeEntry < ActiveRecord::Base
def editable_by?(usr)
(usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project)
end
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(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

View File

@ -270,8 +270,8 @@ 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-12'.to_date, assigns(:from)
assert_equal '2007-04-22'.to_date, assigns(:to)
assert_nil assigns(:from)
assert_nil assigns(:to)
assert_tag :form,
:attributes => {:action => "/projects/ecookbook/time_entries", :id => 'query_form'}
end
@ -320,9 +320,9 @@ 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 based on what's been logged
assert_equal '2007-03-12'.to_date, assigns(:from)
assert_equal '2007-04-22'.to_date, assigns(:to)
# display all time
assert_nil assigns(:from)
assert_nil assigns(:to)
# TODO: remove /projects/:project_id/issues/:issue_id/time_entries routes
# to use /issues/:issue_id/time_entries
assert_tag :form,

View File

@ -125,52 +125,4 @@ class TimeEntryTest < ActiveSupport::TestCase
:activity => activity)
assert_equal project.id, te.project.id
end
context "#earilest_date_for_project" do
setup do
User.current = nil
@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
setup do
User.current = nil
@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 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