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
@@ -17,6 +17,8 @@ import (
|
||||
func (api *API) InitSystem() {
|
||||
api.BaseRoutes.System.Handle("/ping", api.ApiHandler(getSystemPing)).Methods("GET")
|
||||
|
||||
api.BaseRoutes.System.Handle("/timezones", api.ApiSessionRequired(getSupportedTimezones)).Methods("GET")
|
||||
|
||||
api.BaseRoutes.ApiRoot.Handle("/config", api.ApiSessionRequired(getConfig)).Methods("GET")
|
||||
api.BaseRoutes.ApiRoot.Handle("/config", api.ApiSessionRequired(updateConfig)).Methods("PUT")
|
||||
api.BaseRoutes.ApiRoot.Handle("/config/reload", api.ApiSessionRequired(configReload)).Methods("POST")
|
||||
@@ -378,6 +380,18 @@ func getAnalytics(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
w.Write([]byte(rows.ToJson()))
|
||||
}
|
||||
|
||||
func getSupportedTimezones(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
supportedTimezones := c.App.Timezones()
|
||||
|
||||
if supportedTimezones != nil {
|
||||
w.Write([]byte(model.TimezonesToJson(supportedTimezones)))
|
||||
return
|
||||
}
|
||||
|
||||
emptyTimezones := make([]string, 0)
|
||||
w.Write([]byte(model.TimezonesToJson(emptyTimezones)))
|
||||
}
|
||||
|
||||
func testS3(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
cfg := model.ConfigFromJson(r.Body)
|
||||
if cfg == nil {
|
||||
|
||||
@@ -527,3 +527,15 @@ func TestS3TestConnection(t *testing.T) {
|
||||
t.Fatal("should return error ")
|
||||
}
|
||||
}
|
||||
|
||||
func TestSupportedTimezones(t *testing.T) {
|
||||
th := Setup().InitBasic()
|
||||
defer th.TearDown()
|
||||
Client := th.Client
|
||||
|
||||
supportedTimezonesFromConfig := th.App.Timezones()
|
||||
supportedTimezones, resp := Client.GetSupportedTimezone()
|
||||
|
||||
CheckNoError(t, resp)
|
||||
assert.Equal(t, supportedTimezonesFromConfig, supportedTimezones)
|
||||
}
|
||||
|
||||
@@ -996,6 +996,10 @@ func TestPatchUser(t *testing.T) {
|
||||
patch.Position = new(string)
|
||||
patch.NotifyProps = model.StringMap{}
|
||||
patch.NotifyProps["comment"] = "somethingrandom"
|
||||
patch.Timezone = model.StringMap{}
|
||||
patch.Timezone["useAutomaticTimezone"] = "true"
|
||||
patch.Timezone["automaticTimezone"] = "America/New_York"
|
||||
patch.Timezone["manualTimezone"] = ""
|
||||
|
||||
ruser, resp := Client.PatchUser(user.Id, patch)
|
||||
CheckNoError(t, resp)
|
||||
@@ -1019,6 +1023,15 @@ func TestPatchUser(t *testing.T) {
|
||||
if ruser.NotifyProps["comment"] != "somethingrandom" {
|
||||
t.Fatal("NotifyProps did not update properly")
|
||||
}
|
||||
if ruser.Timezone["useAutomaticTimezone"] != "true" {
|
||||
t.Fatal("useAutomaticTimezone did not update properly")
|
||||
}
|
||||
if ruser.Timezone["automaticTimezone"] != "America/New_York" {
|
||||
t.Fatal("automaticTimezone did not update properly")
|
||||
}
|
||||
if ruser.Timezone["manualTimezone"] != "" {
|
||||
t.Fatal("manualTimezone did not update properly")
|
||||
}
|
||||
|
||||
patch.Username = model.NewString(th.BasicUser2.Username)
|
||||
_, resp = Client.PatchUser(user.Id, patch)
|
||||
|
||||
Ссылка в новой задаче
Block a user