Patch #1705 » rails_timezones.patch
app/controllers/application.rb (working copy) | ||
---|---|---|
18 | 18 |
require 'uri' |
19 | 19 | |
20 | 20 |
class ApplicationController < ActionController::Base |
21 |
before_filter :user_setup, :check_if_login_required, :set_localization |
|
21 |
before_filter :user_setup, :check_if_login_required, :set_localization, |
|
22 |
:set_time_zone |
|
23 | ||
22 | 24 |
filter_parameter_logging :password |
23 | 25 |
|
24 | 26 |
include Redmine::MenuManager::MenuController |
... | ... | |
28 | 30 |
require_dependency "repository/#{scm.underscore}" |
29 | 31 |
end |
30 | 32 |
|
33 |
def set_time_zone |
|
34 |
Time.zone = User.current.time_zone if User.current |
|
35 |
end |
|
36 | ||
31 | 37 |
def current_role |
32 | 38 |
@current_role ||= User.current.role_for_project(@project) |
33 | 39 |
end |
app/helpers/application_helper.rb (working copy) | ||
---|---|---|
88 | 88 |
def format_time(time, include_date = true) |
89 | 89 |
return nil unless time |
90 | 90 |
time = time.to_time if time.is_a?(String) |
91 |
zone = User.current.time_zone |
|
92 |
local = zone ? time.in_time_zone(zone) : (time.utc? ? time.utc_to_local : time) |
|
93 | 91 |
@date_format ||= (Setting.date_format.blank? || Setting.date_format.size < 2 ? l(:general_fmt_date) : Setting.date_format) |
94 | 92 |
@time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format) |
95 |
include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format) |
|
93 |
format = include_date ? "#{@date_format} #{@time_format}" : @time_format |
|
94 |
time.strftime(format) |
|
96 | 95 |
end |
97 | 96 |
|
98 | 97 |
# Truncates and returns the string as a single line |
config/environment.rb (working copy) | ||
---|---|---|
43 | 43 |
# config.active_record.observers = :cacher, :garbage_collector |
44 | 44 |
config.active_record.observers = :message_observer |
45 | 45 | |
46 |
# Make Active Record use UTC-base instead of local time |
|
47 |
# config.active_record.default_timezone = :utc |
|
46 |
#turn on Rails' support of time zones. Place your server's timezone here, |
|
47 |
# use rake time:zones:local to list seem-to-be suitable timezones. |
|
48 |
config.time_zone = 'Moscow' |
|
48 | 49 |
|
49 | 50 |
# Use Active Record's schema dumper instead of SQL when creating the test database |
50 | 51 |
# (enables use of different database adapters for development and test environments) |
lib/tasks/convert_database_times_to_utc.rake (revision 0) | ||
---|---|---|
1 |
# Be sure to correct LOCAL_UTC_OFFSET and back up database prior to running. |
|
2 |
namespace :redmine do |
|
3 |
desc 'Migrates existing time values in database to UTC.' |
|
4 |
task :convert_database_times_to_utc => :environment do |
|
5 |
LOCAL_UTC_OFFSET = 1.hours #Time offset of server that Redmine was running on. 1.hours is for e.g. BST. |
|
6 |
[Issue, Journal, Version, Message, Attachment, Project, Changeset, News, |
|
7 |
TimeEntry, WikiPage, WikiContent, WikiContent::Version].each do |klass| |
|
8 |
puts "\n\nUpdating #{klass} timestamps to UTC" |
|
9 |
time_columns = klass.columns.select do |c| |
|
10 |
[:datetime, :timestamp].include?(c.type) |
|
11 |
end |
|
12 |
klass.all.each do |obj| |
|
13 |
modified = false |
|
14 |
time_columns.each do |c| |
|
15 |
obj.send("#{c.name}=", obj.send("#{c.name}")) - LOCAL_UTC_OFFSET |
|
16 |
modified = true |
|
17 |
end |
|
18 |
if modified |
|
19 |
raise "error saving #{obj}" if !obj.save_with_validation(false) |
|
20 |
print '.' |
|
21 |
end |
|
22 |
end |
|
23 |
end |
|
24 |
end |
|
25 |
end |