##// END OF EJS Templates
Fixed: reminder mails are not sent when delivery_method is :async_smtp (#5058)....
Fixed: reminder mails are not sent when delivery_method is :async_smtp (#5058). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9367 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9016:1ec2d98c14bd
r9233:fde9c7315ac6
Show More
time_entry.rb
120 lines | 4.4 KiB | text/x-ruby | RubyLexer
Jean-Philippe Lang
Replaces TimeEntry.visible_by with a visible scope....
r5029 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
Added time report....
r569 #
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700 #
Jean-Philippe Lang
Added time report....
r569 # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700 #
Jean-Philippe Lang
Added time report....
r569 # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 class TimeEntry < ActiveRecord::Base
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a time entry (#10390)....
r9016 include Redmine::SafeAttributes
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 # could have used polymorphic association
# project association here allows easy loading of time entries at project level with one database trip
belongs_to :project
belongs_to :issue
belongs_to :user
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 belongs_to :activity, :class_name => 'TimeEntryActivity', :foreign_key => 'activity_id'
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek
Jean-Philippe Lang
Adds atom feed on time entries details (#1479)....
r1546
Jean-Philippe Lang
Adds custom fields on time entries (#772)....
r1672 acts_as_customizable
Jean-Philippe Lang
Adds spent time to the activity view (#3809)....
r2763 acts_as_event :title => Proc.new {|o| "#{l_hours(o.hours)} (#{(o.issue || o.project).event_title})"},
Jean-Philippe Lang
Fixed: timelog link in the activity broken by recent refactoring (#6702)....
r4163 :url => Proc.new {|o| {:controller => 'timelog', :action => 'index', :project_id => o.project, :issue_id => o.issue}},
Jean-Philippe Lang
Adds atom feed on time entries details (#1479)....
r1546 :author => :user,
:description => :comments
Jean-Philippe Lang
Adds spent time to the activity view (#3809)....
r2763
acts_as_activity_provider :timestamp => "#{table_name}.created_on",
:author_key => :user_id,
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700 :find_options => {:include => :project}
Jean-Philippe Lang
Adds spent time to the activity view (#3809)....
r2763
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 validates_numericality_of :hours, :allow_nil => true, :message => :invalid
Jean-Philippe Lang
Fixed: Comment too long message when updating issue (#1550)....
r1594 validates_length_of :comments, :maximum => 255, :allow_nil => true
Toshi MARUYAMA
Rails3: model: replace deprecated 'before_validation' method at TimeEntry model...
r7333 before_validation :set_project_if_nil
Toshi MARUYAMA
Rails3: model: replace deprecated 'validate' method at TimeEntry model...
r7328 validate :validate_time_entry
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
named_scope :visible, lambda {|*args| {
Jean-Philippe Lang
Replaces TimeEntry.visible_by with a visible scope....
r5029 :include => :project,
Jean-Philippe Lang
Makes visible scopes accept projects option and deprecate Project.visible_by....
r5204 :conditions => Project.allowed_to_condition(args.shift || User.current, :view_time_entries, *args)
Jean-Philippe Lang
Replaces TimeEntry.visible_by with a visible scope....
r5029 }}
Jean-Philippe Lang
Adds named scopes for time entries index....
r7964 named_scope :on_issue, lambda {|issue| {
:include => :issue,
:conditions => "#{Issue.table_name}.root_id = #{issue.root_id} AND #{Issue.table_name}.lft >= #{issue.lft} AND #{Issue.table_name}.rgt <= #{issue.rgt}"
}}
named_scope :on_project, lambda {|project, include_subprojects| {
:include => :project,
:conditions => project.project_condition(include_subprojects)
}}
Jean-Philippe Lang
Removed unnecessary calculations in time entries index....
r7965 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
}
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a time entry (#10390)....
r9016 safe_attributes 'hours', 'comments', 'issue_id', 'activity_id', 'spent_on', 'custom_field_values'
Jean-Philippe Lang
Removed after_initialize methods....
r8168 def initialize(attributes=nil, *args)
super
Jean-Philippe Lang
Fixed: time entries created with the default activity even if a different one is specified (#1302)....
r1519 if new_record? && self.activity.nil?
Eric Davis
Changed Enumerations to use a Single Table Inheritance...
r2677 if default_activity = TimeEntryActivity.default
Jean-Philippe Lang
Fixed: time entries created with the default activity even if a different one is specified (#1302)....
r1519 self.activity_id = default_activity.id
end
Jean-Philippe Lang
Force TimeEntry#hours default to nil (#3075, #4449)....
r3118 self.hours = nil if hours == 0
Jean-Philippe Lang
Fixed: IssueController#edit doesn't set default Activity as default (#1302)....
r1447 end
end
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Toshi MARUYAMA
Rails3: model: replace deprecated 'before_validation' method at TimeEntry model...
r7333 def set_project_if_nil
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 self.project = issue.project if issue && project.nil?
end
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Toshi MARUYAMA
Rails3: model: replace deprecated 'validate' method at TimeEntry model...
r7328 def validate_time_entry
Jean-Philippe Lang
Merged Rails 2.2 branch. Redmine now requires Rails 2.2.2....
r2430 errors.add :hours, :invalid if hours && (hours < 0 || hours >= 1000)
errors.add :project_id, :invalid if project.nil?
errors.add :issue_id, :invalid if (issue_id && !issue) || (issue && project!=issue.project)
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 end
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 def hours=(h)
Jean-Philippe Lang
Fixed: no error is raised when entering invalid hours on the issue update form (#2465)....
r2249 write_attribute :hours, (h.is_a?(String) ? (h.to_hours || h) : h)
Jean-Philippe Lang
Accept the following formats for the timelog "hours" field: 1h, 1 h, 1 hour, 2 hours, 30m, 30min, 1h30, 1h30m, 1:30....
r1305 end
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Jean-Philippe Lang
Round hours when reading TimeEntry attribute....
r8860 def hours
h = read_attribute(:hours)
if h.is_a?(Float)
h.round(2)
else
h
end
end
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 # tyear, tmonth, tweek assigned where setting spent_on attributes
# these attributes make time aggregations easier
def spent_on=(date)
super
Jean-Philippe Lang
Fixes TimeEntry#spent_on= so that datetimes don't get stored in SQLite3 (#7258)....
r4588 if spent_on.is_a?(Time)
self.spent_on = spent_on.to_date
end
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 self.tyear = spent_on ? spent_on.year : nil
self.tmonth = spent_on ? spent_on.month : nil
Jean-Philippe Lang
Fixed: 10342 Creation of Schema in Oracle...
r476 self.tweek = spent_on ? Date.civil(spent_on.year, spent_on.month, spent_on.day).cweek : nil
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 end
Toshi MARUYAMA
remove trailing white-spaces from time entry model source....
r5700
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 # Returns true if the time entry can be edited by usr, otherwise false
def editable_by?(usr)
Jean-Philippe Lang
Adds 2 permissions (closes #859):...
r1235 (usr == user && usr.allowed_to?(:edit_own_time_entries, project)) || usr.allowed_to?(:edit_time_entries, project)
Jean-Philippe Lang
Adds date range filter and pagination on time entries detail view (closes #434)....
r1159 end
Jean-Philippe Lang
Simple time tracking functionality added. Time can be logged at issue or project level....
r365 end