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 |