Dashboard: Support configuring default timezone via config file (#27404)
Add a default timezone that the administrator can set in the settings.
This setting is be used as default for the users timezone preference.
Can be used when creating Grafana instances without administrator
intervention, in order to give user the correct default timezone.
Fixes #25654
(cherry picked from commit 39eba5065b)
This commit is contained in:
committed by
Hugo Häggmark
parent
cfc13f7e30
commit
a4689e646a
@@ -10,13 +10,13 @@ import (
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
)
|
||||
|
||||
func init() {
|
||||
func (ss *SqlStore) addPreferencesQueryAndCommandHandlers() {
|
||||
bus.AddHandler("sql", GetPreferences)
|
||||
bus.AddHandler("sql", GetPreferencesWithDefaults)
|
||||
bus.AddHandler("sql", ss.GetPreferencesWithDefaults)
|
||||
bus.AddHandler("sql", SavePreferences)
|
||||
}
|
||||
|
||||
func GetPreferencesWithDefaults(query *models.GetPreferencesWithDefaultsQuery) error {
|
||||
func (ss *SqlStore) GetPreferencesWithDefaults(query *models.GetPreferencesWithDefaultsQuery) error {
|
||||
params := make([]interface{}, 0)
|
||||
filter := ""
|
||||
|
||||
@@ -43,7 +43,7 @@ func GetPreferencesWithDefaults(query *models.GetPreferencesWithDefaultsQuery) e
|
||||
|
||||
res := &models.Preferences{
|
||||
Theme: setting.DefaultTheme,
|
||||
Timezone: "browser",
|
||||
Timezone: ss.Cfg.DateFormats.DefaultTimezone,
|
||||
HomeDashboardId: 0,
|
||||
}
|
||||
|
||||
|
||||
@@ -11,14 +11,17 @@ import (
|
||||
|
||||
func TestPreferencesDataAccess(t *testing.T) {
|
||||
Convey("Testing preferences data access", t, func() {
|
||||
InitTestDB(t)
|
||||
ss := InitTestDB(t)
|
||||
|
||||
Convey("GetPreferencesWithDefaults with no saved preferences should return defaults", func() {
|
||||
setting.DefaultTheme = "light"
|
||||
ss.Cfg.DateFormats.DefaultTimezone = "UTC"
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{}}
|
||||
err := GetPreferencesWithDefaults(query)
|
||||
err := ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.Theme, ShouldEqual, setting.DefaultTheme)
|
||||
So(query.Result.Timezone, ShouldEqual, "browser")
|
||||
So(query.Result.Theme, ShouldEqual, "light")
|
||||
So(query.Result.Timezone, ShouldEqual, "UTC")
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 0)
|
||||
})
|
||||
|
||||
@@ -29,7 +32,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1, UserId: 1}}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 4)
|
||||
})
|
||||
@@ -41,7 +44,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1, UserId: 2}}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 1)
|
||||
})
|
||||
@@ -57,7 +60,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, Teams: []int64{2, 3}},
|
||||
}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 3)
|
||||
})
|
||||
@@ -71,7 +74,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
So(err, ShouldBeNil)
|
||||
|
||||
query := &models.GetPreferencesWithDefaultsQuery{User: &models.SignedInUser{OrgId: 1}}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 1)
|
||||
})
|
||||
@@ -89,7 +92,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, UserId: 1, Teams: []int64{2, 3}},
|
||||
}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 4)
|
||||
})
|
||||
@@ -107,7 +110,7 @@ func TestPreferencesDataAccess(t *testing.T) {
|
||||
query := &models.GetPreferencesWithDefaultsQuery{
|
||||
User: &models.SignedInUser{OrgId: 1, UserId: 2},
|
||||
}
|
||||
err = GetPreferencesWithDefaults(query)
|
||||
err = ss.GetPreferencesWithDefaults(query)
|
||||
So(err, ShouldBeNil)
|
||||
So(query.Result.HomeDashboardId, ShouldEqual, 1)
|
||||
})
|
||||
|
||||
@@ -102,6 +102,7 @@ func (ss *SqlStore) Init() error {
|
||||
// Register handlers
|
||||
ss.addUserQueryAndCommandHandlers()
|
||||
ss.addAlertNotificationUidByIdHandler()
|
||||
ss.addPreferencesQueryAndCommandHandlers()
|
||||
|
||||
err = ss.logOrgsNotice()
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user