summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-05-07 10:42:22 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-05-07 10:42:22 +0000
commited50d42210eaf7ca216e9cd3a043b36aa68eb51d (patch)
treefbc801683ee622f43e790ec6cf2785fd8f94a43c /app
parent40c9c3e922e15ab7d88b5d06c60e51ed1ba40a7f (diff)
downloadredmine-ed50d42210eaf7ca216e9cd3a043b36aa68eb51d.tar.gz
redmine-ed50d42210eaf7ca216e9cd3a043b36aa68eb51d.zip
Replace Date.today with User.current.today (#22320).
Depending on the offset between a user's configured timezone and the server timezone, Date.today may be more or less often wrong from the user's perspective, leading to things like issues marked as overdue too early or too late, or yesterday / tomorrow being displayed / selected where 'today' is intended. A test case illustrating the problem with Issue#overdue? is included Patch by Jens Kraemer. git-svn-id: http://svn.redmine.org/redmine/trunk@15379 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/activities_controller.rb2
-rw-r--r--app/controllers/calendars_controller.rb4
-rw-r--r--app/controllers/issues_controller.rb2
-rw-r--r--app/controllers/repositories_controller.rb5
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/my_helper.rb2
-rw-r--r--app/helpers/settings_helper.rb2
-rw-r--r--app/models/issue.rb4
-rw-r--r--app/models/mail_handler.rb2
-rw-r--r--app/models/project.rb2
-rw-r--r--app/models/query.rb14
-rw-r--r--app/models/user.rb1
-rw-r--r--app/models/version.rb6
-rw-r--r--app/views/activities/index.html.erb2
-rw-r--r--app/views/common/_calendar.html.erb2
-rw-r--r--app/views/gantts/show.html.erb4
-rw-r--r--app/views/my/blocks/_calendar.html.erb2
-rw-r--r--app/views/my/blocks/_timelog.html.erb2
18 files changed, 31 insertions, 29 deletions
diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb
index ce3f600ae..32df00f97 100644
--- a/app/controllers/activities_controller.rb
+++ b/app/controllers/activities_controller.rb
@@ -27,7 +27,7 @@ class ActivitiesController < ApplicationController
begin; @date_to = params[:from].to_date + 1; rescue; end
end
- @date_to ||= Date.today + 1
+ @date_to ||= User.current.today + 1
@date_from = @date_to - @days
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
if params[:user_id].present?
diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb
index 756d62b44..276d7988d 100644
--- a/app/controllers/calendars_controller.rb
+++ b/app/controllers/calendars_controller.rb
@@ -35,8 +35,8 @@ class CalendarsController < ApplicationController
@month = params[:month].to_i
end
end
- @year ||= Date.today.year
- @month ||= Date.today.month
+ @year ||= User.current.today.year
+ @month ||= User.current.today.month
@calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month)
retrieve_query
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 21b810c8c..7c10769aa 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -441,7 +441,7 @@ class IssuesController < ApplicationController
@issue.project ||= @issue.allowed_target_projects.first
end
@issue.author ||= User.current
- @issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
+ @issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date?
attrs = (params[:issue] || {}).deep_dup
if action_name == 'new' && params[:was_default_status] == attrs[:status_id]
diff --git a/app/controllers/repositories_controller.rb b/app/controllers/repositories_controller.rb
index 734b43983..8f34c0034 100644
--- a/app/controllers/repositories_controller.rb
+++ b/app/controllers/repositories_controller.rb
@@ -352,7 +352,7 @@ class RepositoriesController < ApplicationController
end
def graph_commits_per_month(repository)
- @date_to = Date.today
+ @date_to = User.current.today
@date_from = @date_to << 11
@date_from = Date.civil(@date_from.year, @date_from.month, 1)
commits_by_day = Changeset.
@@ -371,7 +371,8 @@ class RepositoriesController < ApplicationController
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last }
fields = []
- 12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)}
+ today = User.current.today
+ 12.times {|m| fields << month_name(((today.month - 1 - m) % 12) + 1)}
graph = SVG::Graph::Bar.new(
:height => 300,
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index a145a72ac..3e857e3d9 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -252,7 +252,7 @@ module ApplicationHelper
def due_date_distance_in_words(date)
if date
- l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date))
+ l((date < User.current.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(User.current.today, date))
end
end
diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb
index 6a0542234..83cc1e305 100644
--- a/app/helpers/my_helper.rb
+++ b/app/helpers/my_helper.rb
@@ -65,7 +65,7 @@ module MyHelper
def timelog_items
TimeEntry.
- where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, Date.today - 6, Date.today).
+ where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, User.current.today - 6, User.current.today).
joins(:activity, :project).
references(:issue => [:tracker, :status]).
includes(:issue => [:tracker, :status]).
diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb
index 43b2c70b0..2c657f0df 100644
--- a/app/helpers/settings_helper.rb
+++ b/app/helpers/settings_helper.rb
@@ -182,7 +182,7 @@ module SettingsHelper
# Returns the options for the date_format setting
def date_format_setting_options(locale)
Setting::DATE_FORMATS.map do |f|
- today = ::I18n.l(Date.today, :locale => locale, :format => f)
+ today = ::I18n.l(User.current.today, :locale => locale, :format => f)
format = f.gsub('%', '').gsub(/[dmY]/) do
{'d' => 'dd', 'm' => 'mm', 'Y' => 'yyyy'}[$&]
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index 7d7db13e1..0ee8ff3d3 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -807,14 +807,14 @@ class Issue < ActiveRecord::Base
# Returns true if the issue is overdue
def overdue?
- due_date.present? && (due_date < Date.today) && !closed?
+ due_date.present? && (due_date < User.current.today) && !closed?
end
# Is the amount of work done less than it should for the due date
def behind_schedule?
return false if start_date.nil? || due_date.nil?
done_date = start_date + ((due_date - start_date + 1) * done_ratio / 100).floor
- return done_date <= Date.today
+ return done_date <= User.current.today
end
# Does this issue have children?
diff --git a/app/models/mail_handler.rb b/app/models/mail_handler.rb
index d5332e2e6..40bd02a07 100644
--- a/app/models/mail_handler.rb
+++ b/app/models/mail_handler.rb
@@ -206,7 +206,7 @@ class MailHandler < ActionMailer::Base
issue.subject = '(no subject)'
end
issue.description = cleaned_up_text_body
- issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
+ issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date?
issue.is_private = (handler_options[:issue][:is_private] == '1')
# add To and Cc as watchers before saving so the watchers can reply to Redmine
diff --git a/app/models/project.rb b/app/models/project.rb
index 2e3a106f7..dee2e6dfd 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -594,7 +594,7 @@ class Project < ActiveRecord::Base
end
def overdue?
- active? && !due_date.nil? && (due_date < Date.today)
+ active? && !due_date.nil? && (due_date < User.current.today)
end
# Returns the percent completed for this project, based on the
diff --git a/app/models/query.rb b/app/models/query.rb
index 68beb3c97..02e3f6cab 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -874,32 +874,32 @@ class Query < ActiveRecord::Base
when "w"
# = this week
first_day_of_week = l(:general_first_day_of_week).to_i
- day_of_week = Date.today.cwday
+ day_of_week = User.current.today.cwday
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
sql = relative_date_clause(db_table, db_field, - days_ago, - days_ago + 6, is_custom_filter)
when "lw"
# = last week
first_day_of_week = l(:general_first_day_of_week).to_i
- day_of_week = Date.today.cwday
+ day_of_week = User.current.today.cwday
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
sql = relative_date_clause(db_table, db_field, - days_ago - 7, - days_ago - 1, is_custom_filter)
when "l2w"
# = last 2 weeks
first_day_of_week = l(:general_first_day_of_week).to_i
- day_of_week = Date.today.cwday
+ day_of_week = User.current.today.cwday
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week)
sql = relative_date_clause(db_table, db_field, - days_ago - 14, - days_ago - 1, is_custom_filter)
when "m"
# = this month
- date = Date.today
+ date = User.current.today
sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter)
when "lm"
# = last month
- date = Date.today.prev_month
+ date = User.current.today.prev_month
sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter)
when "y"
# = this year
- date = Date.today
+ date = User.current.today
sql = date_clause(db_table, db_field, date.beginning_of_year, date.end_of_year, is_custom_filter)
when "~"
sql = sql_contains("#{db_table}.#{db_field}", value.first)
@@ -999,7 +999,7 @@ class Query < ActiveRecord::Base
# Returns a SQL clause for a date or datetime field using relative dates.
def relative_date_clause(table, field, days_from, days_to, is_custom_filter)
- date_clause(table, field, (days_from ? Date.today + days_from : nil), (days_to ? Date.today + days_to : nil), is_custom_filter)
+ date_clause(table, field, (days_from ? User.current.today + days_from : nil), (days_to ? User.current.today + days_to : nil), is_custom_filter)
end
# Returns a Date or Time from the given filter value
diff --git a/app/models/user.rb b/app/models/user.rb
index b999361f1..d97b38bc1 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -512,6 +512,7 @@ class User < Principal
if time_zone.nil?
Date.today
else
+ # TODO replace with time_zone.today
Time.now.in_time_zone(time_zone).to_date
end
end
diff --git a/app/models/version.rb b/app/models/version.rb
index ad3d816fb..bc71b72e9 100644
--- a/app/models/version.rb
+++ b/app/models/version.rb
@@ -104,7 +104,7 @@ class Version < ActiveRecord::Base
# Returns true if the version is completed: closed or due date reached and no open issues
def completed?
- closed? || (effective_date && (effective_date < Date.today) && (open_issues_count == 0))
+ closed? || (effective_date && (effective_date < User.current.today) && (open_issues_count == 0))
end
def behind_schedule?
@@ -112,7 +112,7 @@ class Version < ActiveRecord::Base
return false
elsif due_date && start_date
done_date = start_date + ((due_date - start_date+1)* completed_percent/100).floor
- return done_date <= Date.today
+ return done_date <= User.current.today
else
false # No issues so it's not late
end
@@ -141,7 +141,7 @@ class Version < ActiveRecord::Base
# Returns true if the version is overdue: due date reached and some open issues
def overdue?
- effective_date && (effective_date < Date.today) && (open_issues_count > 0)
+ effective_date && (effective_date < User.current.today) && (open_issues_count > 0)
end
# Returns assigned issues count
diff --git a/app/views/activities/index.html.erb b/app/views/activities/index.html.erb
index 830f408d3..58664d1cf 100644
--- a/app/views/activities/index.html.erb
+++ b/app/views/activities/index.html.erb
@@ -31,7 +31,7 @@
<%= link_to_content_update(l(:label_next) + " \xc2\xbb",
params.merge(:from => @date_to + @days - 1),
:title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1)),
- :accesskey => accesskey(:next)) unless @date_to >= Date.today %>
+ :accesskey => accesskey(:next)) unless @date_to >= User.current.today %>
</div>
&nbsp;
<% other_formats_links do |f| %>
diff --git a/app/views/common/_calendar.html.erb b/app/views/common/_calendar.html.erb
index d950749aa..eb830b641 100644
--- a/app/views/common/_calendar.html.erb
+++ b/app/views/common/_calendar.html.erb
@@ -7,7 +7,7 @@
<% day = calendar.startdt
while day <= calendar.enddt %>
<%= ("<td class='week-number' title='#{ l(:label_week) }'>#{(day+(11-day.cwday)%7).cweek}</td>".html_safe) if day.cwday == calendar.first_wday %>
-<td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if Date.today == day %>">
+<td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if User.current.today == day %>">
<p class="day-num"><%= day.day %></p>
<% calendar.events_on(day).each do |i| %>
<% if i.is_a? Issue %>
diff --git a/app/views/gantts/show.html.erb b/app/views/gantts/show.html.erb
index 070a0def6..34ee14c5a 100644
--- a/app/views/gantts/show.html.erb
+++ b/app/views/gantts/show.html.erb
@@ -302,9 +302,9 @@
<%= @gantt.lines.html_safe %>
<% ###### Today red line (excluded from cache) ###### %>
-<% if Date.today >= @gantt.date_from and Date.today <= @gantt.date_to %>
+<% if User.current.today >= @gantt.date_from and User.current.today <= @gantt.date_to %>
<%
- today_left = (((Date.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i
+ today_left = (((User.current.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i
style = ""
style += "position: absolute;"
style += "height: #{g_height}px;"
diff --git a/app/views/my/blocks/_calendar.html.erb b/app/views/my/blocks/_calendar.html.erb
index 41ca18a10..89dde0e01 100644
--- a/app/views/my/blocks/_calendar.html.erb
+++ b/app/views/my/blocks/_calendar.html.erb
@@ -1,6 +1,6 @@
<h3><%= l(:label_calendar) %></h3>
-<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week)
+<% calendar = Redmine::Helpers::Calendar.new(User.current.today, current_language, :week)
calendar.events = calendar_items(calendar.startdt, calendar.enddt) %>
<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %>
diff --git a/app/views/my/blocks/_timelog.html.erb b/app/views/my/blocks/_timelog.html.erb
index 7fcac4aa4..14a0711e9 100644
--- a/app/views/my/blocks/_timelog.html.erb
+++ b/app/views/my/blocks/_timelog.html.erb
@@ -29,7 +29,7 @@ entries_by_day = entries.group_by(&:spent_on)
<tbody>
<% entries_by_day.keys.sort.reverse.each do |day| %>
<tr class="odd">
- <td><strong><%= day == Date.today ? l(:label_today).titleize : format_date(day) %></strong></td>
+ <td><strong><%= day == User.current.today ? l(:label_today).titleize : format_date(day) %></strong></td>
<td colspan="2"></td>
<td class="hours"><em><%= html_hours("%.2f" % entries_by_day[day].sum(&:hours).to_f) %></em></td>
<td></td>