Timezone feature (#8185)
* Add supported timezones into config Remove Timezone list creation in favor of timezone from configs Add Timezone field to Users table Clean up format of SupportedTimezones in config * Remove unwanted change * Add test for updating user timezone * Add empty map[string]string if Timezone is null * Add EnableTimezoneSelection config * Revert back to map[string]string for ClientConfig * Refactor SupportedTimezones into timezones.json * Include timezones.json in TestConfigFlag * Add timezone api endpoint * Bump varchar size to 256 and setMaxSize in user_store * Refactor LoadConfig to LoadConfig and LoadTimezoneConfig * Remove unnecessary argument in LoadConfig, mail_test * Add test for timezone endpoint * Add license header * Refactor timezones endpoint to system.go * Add system base route to timezone endpoint * db timezone upgrade in db v4.9 * Avoid saving SupportedTimezones to config.json * Add timezonePath support in config * Remove EnableTimezoneSelection from config * Use return statement without return parameter * Refactor test for SupportedTimezones * Check for supportedTimezone != nil instead of using len * Decouple SupportedTimezones out of Config * Fix failing test * Add LastTeamIconUpdate back in upgrade.go * Write timezone config in config_flag_test * Add code fallback for default timezone support
Этот коммит содержится в:
коммит произвёл
Joram Wilander
родитель
9d701c7044
Коммит
74e703f58d
@@ -21,6 +21,15 @@ func TestConfig(t *testing.T) {
|
||||
InitTranslations(cfg.LocalizationSettings)
|
||||
}
|
||||
|
||||
func TestTimezoneConfig(t *testing.T) {
|
||||
TranslationsPreInit()
|
||||
supportedTimezones := LoadTimezones("timezones.json")
|
||||
assert.Equal(t, len(supportedTimezones) > 0, true)
|
||||
|
||||
supportedTimezones2 := LoadTimezones("timezones_file_does_not_exists.json")
|
||||
assert.Equal(t, len(supportedTimezones2) > 0, true)
|
||||
}
|
||||
|
||||
func TestFindConfigFile(t *testing.T) {
|
||||
dir, err := ioutil.TempDir("", "")
|
||||
require.NoError(t, err)
|
||||
|
||||
25
utils/timezone.go
Обычный файл
25
utils/timezone.go
Обычный файл
@@ -0,0 +1,25 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See License.txt for license information.
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/mattermost/mattermost-server/model"
|
||||
)
|
||||
|
||||
func LoadTimezones(fileName string) model.SupportedTimezones {
|
||||
var supportedTimezones model.SupportedTimezones
|
||||
|
||||
if timezoneFile := FindConfigFile(fileName); timezoneFile == "" {
|
||||
return model.DefaultSupportedTimezones
|
||||
} else if raw, err := ioutil.ReadFile(timezoneFile); err != nil {
|
||||
return model.DefaultSupportedTimezones
|
||||
} else if err := json.Unmarshal(raw, &supportedTimezones); err != nil {
|
||||
return model.DefaultSupportedTimezones
|
||||
} else {
|
||||
return supportedTimezones
|
||||
}
|
||||
}
|
||||
Ссылка в новой задаче
Block a user