Patch #22320 » 0001-Replace-Date.today-with-User.current.today.patch
app/controllers/activities_controller.rb | ||
---|---|---|
27 | 27 |
begin; @date_to = params[:from].to_date + 1; rescue; end |
28 | 28 |
end |
29 | 29 | |
30 |
@date_to ||= Date.today + 1
|
|
30 |
@date_to ||= User.current.today + 1
|
|
31 | 31 |
@date_from = @date_to - @days |
32 | 32 |
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') |
33 | 33 |
if params[:user_id].present? |
app/controllers/calendars_controller.rb | ||
---|---|---|
35 | 35 |
@month = params[:month].to_i |
36 | 36 |
end |
37 | 37 |
end |
38 |
@year ||= Date.today.year
|
|
39 |
@month ||= Date.today.month
|
|
38 |
@year ||= User.current.today.year
|
|
39 |
@month ||= User.current.today.month
|
|
40 | 40 | |
41 | 41 |
@calendar = Redmine::Helpers::Calendar.new(Date.civil(@year, @month, 1), current_language, :month) |
42 | 42 |
retrieve_query |
app/controllers/issues_controller.rb | ||
---|---|---|
442 | 442 |
@issue.project ||= @issue.allowed_target_projects.first |
443 | 443 |
end |
444 | 444 |
@issue.author ||= User.current |
445 |
@issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
|
|
445 |
@issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date?
|
|
446 | 446 | |
447 | 447 |
attrs = (params[:issue] || {}).deep_dup |
448 | 448 |
if action_name == 'new' && params[:was_default_status] == attrs[:status_id] |
app/controllers/repositories_controller.rb | ||
---|---|---|
350 | 350 |
end |
351 | 351 | |
352 | 352 |
def graph_commits_per_month(repository) |
353 |
@date_to = Date.today
|
|
353 |
@date_to = User.current.today
|
|
354 | 354 |
@date_from = @date_to << 11 |
355 | 355 |
@date_from = Date.civil(@date_from.year, @date_from.month, 1) |
356 | 356 |
commits_by_day = Changeset. |
... | ... | |
369 | 369 |
changes_by_day.each {|c| changes_by_month[(@date_to.month - c.first.to_date.month) % 12] += c.last } |
370 | 370 | |
371 | 371 |
fields = [] |
372 |
12.times {|m| fields << month_name(((Date.today.month - 1 - m) % 12) + 1)} |
|
372 |
today = User.current.today |
|
373 |
12.times {|m| fields << month_name(((today.month - 1 - m) % 12) + 1)} |
|
373 | 374 | |
374 | 375 |
graph = SVG::Graph::Bar.new( |
375 | 376 |
:height => 300, |
app/helpers/application_helper.rb | ||
---|---|---|
252 | 252 | |
253 | 253 |
def due_date_distance_in_words(date) |
254 | 254 |
if date |
255 |
l((date < Date.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(Date.today, date))
|
|
255 |
l((date < User.current.today ? :label_roadmap_overdue : :label_roadmap_due_in), distance_of_date_in_words(User.current.today, date))
|
|
256 | 256 |
end |
257 | 257 |
end |
258 | 258 |
app/helpers/my_helper.rb | ||
---|---|---|
65 | 65 | |
66 | 66 |
def timelog_items |
67 | 67 |
TimeEntry. |
68 |
where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, Date.today - 6, Date.today).
|
|
68 |
where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, User.current.today - 6, User.current.today).
|
|
69 | 69 |
joins(:activity, :project). |
70 | 70 |
references(:issue => [:tracker, :status]). |
71 | 71 |
includes(:issue => [:tracker, :status]). |
app/helpers/settings_helper.rb | ||
---|---|---|
182 | 182 |
# Returns the options for the date_format setting |
183 | 183 |
def date_format_setting_options(locale) |
184 | 184 |
Setting::DATE_FORMATS.map do |f| |
185 |
today = ::I18n.l(Date.today, :locale => locale, :format => f)
|
|
185 |
today = ::I18n.l(User.current.today, :locale => locale, :format => f)
|
|
186 | 186 |
format = f.gsub('%', '').gsub(/[dmY]/) do |
187 | 187 |
{'d' => 'dd', 'm' => 'mm', 'Y' => 'yyyy'}[$&] |
188 | 188 |
end |
app/models/issue.rb | ||
---|---|---|
806 | 806 | |
807 | 807 |
# Returns true if the issue is overdue |
808 | 808 |
def overdue? |
809 |
due_date.present? && (due_date < Date.today) && !closed?
|
|
809 |
due_date.present? && (due_date < User.current.today) && !closed?
|
|
810 | 810 |
end |
811 | 811 | |
812 | 812 |
# Is the amount of work done less than it should for the due date |
813 | 813 |
def behind_schedule? |
814 | 814 |
return false if start_date.nil? || due_date.nil? |
815 | 815 |
done_date = start_date + ((due_date - start_date + 1) * done_ratio / 100).floor |
816 |
return done_date <= Date.today
|
|
816 |
return done_date <= User.current.today
|
|
817 | 817 |
end |
818 | 818 | |
819 | 819 |
# Does this issue have children? |
app/models/mail_handler.rb | ||
---|---|---|
206 | 206 |
issue.subject = '(no subject)' |
207 | 207 |
end |
208 | 208 |
issue.description = cleaned_up_text_body |
209 |
issue.start_date ||= Date.today if Setting.default_issue_start_date_to_creation_date?
|
|
209 |
issue.start_date ||= User.current.today if Setting.default_issue_start_date_to_creation_date?
|
|
210 | 210 |
issue.is_private = (handler_options[:issue][:is_private] == '1') |
211 | 211 | |
212 | 212 |
# add To and Cc as watchers before saving so the watchers can reply to Redmine |
app/models/project.rb | ||
---|---|---|
594 | 594 |
end |
595 | 595 | |
596 | 596 |
def overdue? |
597 |
active? && !due_date.nil? && (due_date < Date.today)
|
|
597 |
active? && !due_date.nil? && (due_date < User.current.today)
|
|
598 | 598 |
end |
599 | 599 | |
600 | 600 |
# Returns the percent completed for this project, based on the |
app/models/query.rb | ||
---|---|---|
869 | 869 |
when "w" |
870 | 870 |
# = this week |
871 | 871 |
first_day_of_week = l(:general_first_day_of_week).to_i |
872 |
day_of_week = Date.today.cwday
|
|
872 |
day_of_week = User.current.today.cwday
|
|
873 | 873 |
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week) |
874 | 874 |
sql = relative_date_clause(db_table, db_field, - days_ago, - days_ago + 6, is_custom_filter) |
875 | 875 |
when "lw" |
876 | 876 |
# = last week |
877 | 877 |
first_day_of_week = l(:general_first_day_of_week).to_i |
878 |
day_of_week = Date.today.cwday
|
|
878 |
day_of_week = User.current.today.cwday
|
|
879 | 879 |
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week) |
880 | 880 |
sql = relative_date_clause(db_table, db_field, - days_ago - 7, - days_ago - 1, is_custom_filter) |
881 | 881 |
when "l2w" |
882 | 882 |
# = last 2 weeks |
883 | 883 |
first_day_of_week = l(:general_first_day_of_week).to_i |
884 |
day_of_week = Date.today.cwday
|
|
884 |
day_of_week = User.current.today.cwday
|
|
885 | 885 |
days_ago = (day_of_week >= first_day_of_week ? day_of_week - first_day_of_week : day_of_week + 7 - first_day_of_week) |
886 | 886 |
sql = relative_date_clause(db_table, db_field, - days_ago - 14, - days_ago - 1, is_custom_filter) |
887 | 887 |
when "m" |
888 | 888 |
# = this month |
889 |
date = Date.today
|
|
889 |
date = User.current.today
|
|
890 | 890 |
sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter) |
891 | 891 |
when "lm" |
892 | 892 |
# = last month |
893 |
date = Date.today.prev_month
|
|
893 |
date = User.current.today.prev_month
|
|
894 | 894 |
sql = date_clause(db_table, db_field, date.beginning_of_month, date.end_of_month, is_custom_filter) |
895 | 895 |
when "y" |
896 | 896 |
# = this year |
897 |
date = Date.today
|
|
897 |
date = User.current.today
|
|
898 | 898 |
sql = date_clause(db_table, db_field, date.beginning_of_year, date.end_of_year, is_custom_filter) |
899 | 899 |
when "~" |
900 | 900 |
sql = sql_contains("#{db_table}.#{db_field}", value.first) |
... | ... | |
994 | 994 | |
995 | 995 |
# Returns a SQL clause for a date or datetime field using relative dates. |
996 | 996 |
def relative_date_clause(table, field, days_from, days_to, is_custom_filter) |
997 |
date_clause(table, field, (days_from ? Date.today + days_from : nil), (days_to ? Date.today + days_to : nil), is_custom_filter)
|
|
997 |
date_clause(table, field, (days_from ? User.current.today + days_from : nil), (days_to ? User.current.today + days_to : nil), is_custom_filter)
|
|
998 | 998 |
end |
999 | 999 | |
1000 | 1000 |
# Returns a Date or Time from the given filter value |
app/models/user.rb | ||
---|---|---|
510 | 510 |
if time_zone.nil? |
511 | 511 |
Date.today |
512 | 512 |
else |
513 |
# TODO replace with time_zone.today |
|
513 | 514 |
Time.now.in_time_zone(time_zone).to_date |
514 | 515 |
end |
515 | 516 |
end |
app/models/version.rb | ||
---|---|---|
104 | 104 | |
105 | 105 |
# Returns true if the version is completed: closed or due date reached and no open issues |
106 | 106 |
def completed? |
107 |
closed? || (effective_date && (effective_date < Date.today) && (open_issues_count == 0))
|
|
107 |
closed? || (effective_date && (effective_date < User.current.today) && (open_issues_count == 0))
|
|
108 | 108 |
end |
109 | 109 | |
110 | 110 |
def behind_schedule? |
... | ... | |
112 | 112 |
return false |
113 | 113 |
elsif due_date && start_date |
114 | 114 |
done_date = start_date + ((due_date - start_date+1)* completed_percent/100).floor |
115 |
return done_date <= Date.today
|
|
115 |
return done_date <= User.current.today
|
|
116 | 116 |
else |
117 | 117 |
false # No issues so it's not late |
118 | 118 |
end |
... | ... | |
141 | 141 | |
142 | 142 |
# Returns true if the version is overdue: due date reached and some open issues |
143 | 143 |
def overdue? |
144 |
effective_date && (effective_date < Date.today) && (open_issues_count > 0)
|
|
144 |
effective_date && (effective_date < User.current.today) && (open_issues_count > 0)
|
|
145 | 145 |
end |
146 | 146 | |
147 | 147 |
# Returns assigned issues count |
app/views/activities/index.html.erb | ||
---|---|---|
31 | 31 |
<%= link_to_content_update(l(:label_next) + " \xc2\xbb", |
32 | 32 |
params.merge(:from => @date_to + @days - 1), |
33 | 33 |
:title => l(:label_date_from_to, :start => format_date(@date_to), :end => format_date(@date_to + @days - 1)), |
34 |
:accesskey => accesskey(:next)) unless @date_to >= Date.today %>
|
|
34 |
:accesskey => accesskey(:next)) unless @date_to >= User.current.today %>
|
|
35 | 35 |
</div> |
36 | 36 |
|
37 | 37 |
<% other_formats_links do |f| %> |
app/views/common/_calendar.html.erb | ||
---|---|---|
7 | 7 |
<% day = calendar.startdt |
8 | 8 |
while day <= calendar.enddt %> |
9 | 9 |
<%= ("<td class='week-number' title='#{ l(:label_week) }'>#{(day+(11-day.cwday)%7).cweek}</td>".html_safe) if day.cwday == calendar.first_wday %> |
10 |
<td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if Date.today == day %>">
|
|
10 |
<td class="<%= day.month==calendar.month ? 'even' : 'odd' %><%= ' today' if User.current.today == day %>">
|
|
11 | 11 |
<p class="day-num"><%= day.day %></p> |
12 | 12 |
<% calendar.events_on(day).each do |i| %> |
13 | 13 |
<% if i.is_a? Issue %> |
app/views/gantts/show.html.erb | ||
---|---|---|
302 | 302 |
<%= @gantt.lines.html_safe %> |
303 | 303 | |
304 | 304 |
<% ###### Today red line (excluded from cache) ###### %> |
305 |
<% if Date.today >= @gantt.date_from and Date.today <= @gantt.date_to %>
|
|
305 |
<% if User.current.today >= @gantt.date_from and User.current.today <= @gantt.date_to %>
|
|
306 | 306 |
<% |
307 |
today_left = (((Date.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i
|
|
307 |
today_left = (((User.current.today - @gantt.date_from + 1) * zoom).floor() - 1).to_i
|
|
308 | 308 |
style = "" |
309 | 309 |
style += "position: absolute;" |
310 | 310 |
style += "height: #{g_height}px;" |
app/views/my/blocks/_calendar.html.erb | ||
---|---|---|
1 | 1 |
<h3><%= l(:label_calendar) %></h3> |
2 | 2 | |
3 |
<% calendar = Redmine::Helpers::Calendar.new(Date.today, current_language, :week)
|
|
3 |
<% calendar = Redmine::Helpers::Calendar.new(User.current.today, current_language, :week)
|
|
4 | 4 |
calendar.events = calendar_items(calendar.startdt, calendar.enddt) %> |
5 | 5 | |
6 | 6 |
<%= render :partial => 'common/calendar', :locals => {:calendar => calendar } %> |
app/views/my/blocks/_timelog.html.erb | ||
---|---|---|
29 | 29 |
<tbody> |
30 | 30 |
<% entries_by_day.keys.sort.reverse.each do |day| %> |
31 | 31 |
<tr class="odd"> |
32 |
<td><strong><%= day == Date.today ? l(:label_today).titleize : format_date(day) %></strong></td>
|
|
32 |
<td><strong><%= day == User.current.today ? l(:label_today).titleize : format_date(day) %></strong></td>
|
|
33 | 33 |
<td colspan="2"></td> |
34 | 34 |
<td class="hours"><em><%= html_hours("%.2f" % entries_by_day[day].sum(&:hours).to_f) %></em></td> |
35 | 35 |
<td></td> |
lib/redmine/export/pdf/issues_pdf_helper.rb | ||
---|---|---|
26 | 26 |
pdf = ITCPDF.new(current_language) |
27 | 27 |
pdf.set_title("#{issue.project} - #{issue.tracker} ##{issue.id}") |
28 | 28 |
pdf.alias_nb_pages |
29 |
pdf.footer_date = format_date(Date.today)
|
|
29 |
pdf.footer_date = format_date(User.current.today)
|
|
30 | 30 |
pdf.add_page |
31 | 31 |
pdf.SetFontStyle('B',11) |
32 | 32 |
buf = "#{issue.project} - #{issue.tracker} ##{issue.id}" |
... | ... | |
246 | 246 |
title = "#{project} - #{title}" if project |
247 | 247 |
pdf.set_title(title) |
248 | 248 |
pdf.alias_nb_pages |
249 |
pdf.footer_date = format_date(Date.today)
|
|
249 |
pdf.footer_date = format_date(User.current.today)
|
|
250 | 250 |
pdf.set_auto_page_break(false) |
251 | 251 |
pdf.add_page("L") |
252 | 252 |
|
lib/redmine/export/pdf/wiki_pdf_helper.rb | ||
---|---|---|
26 | 26 |
pdf = Redmine::Export::PDF::ITCPDF.new(current_language) |
27 | 27 |
pdf.set_title(project.name) |
28 | 28 |
pdf.alias_nb_pages |
29 |
pdf.footer_date = format_date(Date.today)
|
|
29 |
pdf.footer_date = format_date(User.current.today)
|
|
30 | 30 |
pdf.add_page |
31 | 31 |
pdf.SetFontStyle('B',11) |
32 | 32 |
pdf.RDMMultiCell(190,5, project.name) |
... | ... | |
43 | 43 |
pdf = ITCPDF.new(current_language) |
44 | 44 |
pdf.set_title("#{project} - #{page.title}") |
45 | 45 |
pdf.alias_nb_pages |
46 |
pdf.footer_date = format_date(Date.today)
|
|
46 |
pdf.footer_date = format_date(User.current.today)
|
|
47 | 47 |
pdf.add_page |
48 | 48 |
pdf.SetFontStyle('B',11) |
49 | 49 |
pdf.RDMMultiCell(190,5, |
lib/redmine/helpers/gantt.rb | ||
---|---|---|
59 | 59 |
@month_from = 1 |
60 | 60 |
end |
61 | 61 |
else |
62 |
@month_from ||= Date.today.month
|
|
63 |
@year_from ||= Date.today.year
|
|
62 |
@month_from ||= User.current.today.month
|
|
63 |
@year_from ||= User.current.today.year
|
|
64 | 64 |
end |
65 | 65 |
zoom = (options[:zoom] || User.current.pref[:gantt_zoom]).to_i |
66 | 66 |
@zoom = (zoom > 0 && zoom < 5) ? zoom : 2 |
... | ... | |
428 | 428 |
lines(:image => gc, :top => top, :zoom => zoom, |
429 | 429 |
:subject_width => subject_width, :format => :image) |
430 | 430 |
# today red line |
431 |
if Date.today >= @date_from and Date.today <= date_to
|
|
431 |
if User.current.today >= @date_from and User.current.today <= date_to
|
|
432 | 432 |
gc.stroke('red') |
433 |
x = (Date.today - @date_from + 1) * zoom + subject_width
|
|
433 |
x = (User.current.today - @date_from + 1) * zoom + subject_width
|
|
434 | 434 |
gc.line(x, headers_height, x, headers_height + g_height - 1) |
435 | 435 |
end |
436 | 436 |
gc.draw(imgl) |
... | ... | |
442 | 442 |
pdf = ::Redmine::Export::PDF::ITCPDF.new(current_language) |
443 | 443 |
pdf.SetTitle("#{l(:label_gantt)} #{project}") |
444 | 444 |
pdf.alias_nb_pages |
445 |
pdf.footer_date = format_date(Date.today)
|
|
445 |
pdf.footer_date = format_date(User.current.today)
|
|
446 | 446 |
pdf.AddPage("L") |
447 | 447 |
pdf.SetFontStyle('B', 12) |
448 | 448 |
pdf.SetX(15) |
... | ... | |
592 | 592 |
coords[:bar_progress_end] = self.date_to - self.date_from + 1 |
593 | 593 |
end |
594 | 594 |
end |
595 |
if progress_date < Date.today
|
|
596 |
late_date = [Date.today, end_date].min
|
|
595 |
if progress_date < User.current.today
|
|
596 |
late_date = [User.current.today, end_date].min
|
|
597 | 597 |
if late_date > self.date_from && late_date > start_date |
598 | 598 |
if late_date < self.date_to |
599 | 599 |
coords[:bar_late_end] = late_date - self.date_from + 1 |
lib/redmine/helpers/time_report.rb | ||
---|---|---|
70 | 70 |
end |
71 | 71 |
|
72 | 72 |
min = @hours.collect {|row| row['spent_on']}.min |
73 |
@from = min ? min.to_date : Date.today
|
|
73 |
@from = min ? min.to_date : User.current.today
|
|
74 | 74 | |
75 | 75 |
max = @hours.collect {|row| row['spent_on']}.max |
76 |
@to = max ? max.to_date : Date.today
|
|
76 |
@to = max ? max.to_date : User.current.today
|
|
77 | 77 |
|
78 | 78 |
@total_hours = @hours.inject(0) {|s,k| s = s + k['hours'].to_f} |
79 | 79 |
test/unit/issue_test.rb | ||
---|---|---|
2745 | 2745 |
issue.reload.assigned_to = nil |
2746 | 2746 |
assert_equal group, issue.assigned_to_was |
2747 | 2747 |
end |
2748 | ||
2749 |
def test_issue_overdue_should_respect_user_timezone |
|
2750 |
user_in_europe = users(:users_001) |
|
2751 |
user_in_europe.pref.update_attribute :time_zone, 'UTC' |
|
2752 | ||
2753 |
user_in_asia = users(:users_002) |
|
2754 |
user_in_asia.pref.update_attribute :time_zone, 'Hongkong' |
|
2755 | ||
2756 |
issue = Issue.generate! :due_date => Date.parse('2016-03-20') |
|
2757 | ||
2758 |
# server time is UTC |
|
2759 |
time = Time.parse '2016-03-20 20:00 UTC' |
|
2760 |
Time.stubs(:now).returns(time) |
|
2761 |
Date.stubs(:today).returns(time.to_date) |
|
2762 | ||
2763 |
# for a user in the same time zone as the server the issue is not overdue |
|
2764 |
# yet |
|
2765 |
User.current = user_in_europe |
|
2766 |
assert !issue.overdue? |
|
2767 | ||
2768 |
# at the same time, a user in East Asia looks at the issue - it's already |
|
2769 |
# March 21st and the issue should be marked overdue |
|
2770 |
User.current = user_in_asia |
|
2771 |
assert issue.overdue? |
|
2772 | ||
2773 |
end |
|
2748 | 2774 |
end |