From 1583a20f18fd8a619c37e554c6a215dad086022b Mon Sep 17 00:00:00 2001 From: Konrad Langenberg Date: Tue, 29 Aug 2017 17:16:54 +0200 Subject: [PATCH] Added method to prevent making an issue dependent on itself Signed-off-by: Konrad --- models/issue_dependency.go | 1 - routers/repo/issue_dependency_add.go | 26 ++++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/models/issue_dependency.go b/models/issue_dependency.go index 95a4517b4..d59d5b22b 100644 --- a/models/issue_dependency.go +++ b/models/issue_dependency.go @@ -44,7 +44,6 @@ func (iw *IssueDependency) BeforeUpdate() { } // CreateIssueDependency creates a new dependency for an issue -// TODO: prevent issues having itself as dependency func CreateIssueDependency(userID, issueID int64, depID int64) (err error, exists bool, depExists bool) { err = x.Sync(new(IssueDependency)) if err != nil { diff --git a/routers/repo/issue_dependency_add.go b/routers/repo/issue_dependency_add.go index ceb672356..05f25f850 100644 --- a/routers/repo/issue_dependency_add.go +++ b/routers/repo/issue_dependency_add.go @@ -28,18 +28,24 @@ func AddDependency(c *context.Context) { return } - err, exists, depExists := models.CreateIssueDependency(c.User.ID, issue.ID, dep); - if err != nil { - c.Handle(http.StatusInternalServerError, "CreateOrUpdateIssueDependency", err) - return - } + // Check if issue and dependency is the same + if dep == issueIndex{ + c.Flash.Error("You cannot make an issue depend on itself!") + } else { - if !depExists { - c.Flash.Error("Dependend issue does not exist!") - } + err, exists, depExists := models.CreateIssueDependency(c.User.ID, issue.ID, dep); + if err != nil { + c.Handle(http.StatusInternalServerError, "CreateOrUpdateIssueDependency", err) + return + } - if exists { - c.Flash.Error("Dependency already exists!") + if !depExists { + c.Flash.Error("Dependend issue does not exist!") + } + + if exists { + c.Flash.Error("Dependency already exists!") + } } url := fmt.Sprintf("%s/issues/%d", c.Repo.RepoLink, issueIndex)