ensure dashboard title is unique in folder

This commit is contained in:
bergquist
2018-01-31 14:18:54 +01:00
parent bb3183f6cd
commit 7e96052594
4 changed files with 336 additions and 211 deletions
+24
View File
@@ -20,6 +20,8 @@ func init() {
bus.AddHandler("sql", GetDashboardsByPluginId)
}
func SaveDashboard(cmd *m.SaveDashboardCommand) error {
return inTransaction(func(sess *DBSession) error {
dash := cmd.GetDashboardModel()
@@ -69,6 +71,11 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
}
}
err = guaranteeDashboardNameIsUniqueInFolder(sess, dash)
if err != nil {
return err
}
err = setHasAcl(sess, dash)
if err != nil {
return err
@@ -140,6 +147,23 @@ func SaveDashboard(cmd *m.SaveDashboardCommand) error {
})
}
func guaranteeDashboardNameIsUniqueInFolder(sess *DBSession, dash *m.Dashboard) error {
var sameNameInFolder m.Dashboard
sameNameInFolderExist, err := sess.Where("org_id=? AND title=? AND folder_id = ? AND uid <> ?",
dash.OrgId, dash.Title, dash.FolderId, dash.Uid).
Get(&sameNameInFolder)
if err != nil {
return err
}
if sameNameInFolderExist {
return m.ErrDashboardWithSameNameInFolderExists
}
return nil
}
func setHasAcl(sess *DBSession, dash *m.Dashboard) error {
// check if parent has acl
if dash.FolderId > 0 {