summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Koenig <etk39@cornell.edu>2017-06-25 02:15:09 -0400
committerLunny Xiao <xiaolunwen@gmail.com>2017-06-25 14:15:09 +0800
commit2559a34b97c4f156a4fec82b03b88a6ba4caeb76 (patch)
tree915aeaa4ddb5f577ee3445d42f2b94cd578876c7
parentf64c232953d13043b262dc8da55acb3738e58d15 (diff)
downloadgitea-2559a34b97c4f156a4fec82b03b88a6ba4caeb76.tar.gz
gitea-2559a34b97c4f156a4fec82b03b88a6ba4caeb76.zip
Load label ID in NewLabels (#2045)
-rw-r--r--models/issue_label.go25
-rw-r--r--models/issue_label_test.go2
-rw-r--r--routers/api/v1/repo/label.go2
-rw-r--r--routers/repo/issue_label.go2
4 files changed, 25 insertions, 6 deletions
diff --git a/models/issue_label.go b/models/issue_label.go
index 19bf01c6c7..5ecd355a6b 100644
--- a/models/issue_label.go
+++ b/models/issue_label.go
@@ -96,12 +96,31 @@ func (label *Label) ForegroundColor() template.CSS {
return template.CSS("#000")
}
-// NewLabels creates new label(s) for a repository.
-func NewLabels(labels ...*Label) error {
- _, err := x.Insert(labels)
+func newLabel(e Engine, label *Label) error {
+ _, err := e.Insert(label)
return err
}
+// NewLabel creates a new label for a repository
+func NewLabel(label *Label) error {
+ return newLabel(x, label)
+}
+
+// NewLabels creates new labels for a repository.
+func NewLabels(labels ...*Label) error {
+ sess := x.NewSession()
+ defer sess.Close()
+ if err := sess.Begin(); err != nil {
+ return err
+ }
+ for _, label := range labels {
+ if err := newLabel(sess, label); err != nil {
+ return err
+ }
+ }
+ return sess.Commit()
+}
+
// getLabelInRepoByName returns a label by Name in given repository.
// If pass repoID as 0, then ORM will ignore limitation of repository
// and can return arbitrary label with any valid ID.
diff --git a/models/issue_label_test.go b/models/issue_label_test.go
index 2ef396668a..33630cd901 100644
--- a/models/issue_label_test.go
+++ b/models/issue_label_test.go
@@ -52,7 +52,7 @@ func TestNewLabels(t *testing.T) {
}
assert.NoError(t, NewLabels(labels...))
for _, label := range labels {
- AssertExistsAndLoadBean(t, label)
+ AssertExistsAndLoadBean(t, label, Cond("id = ?", label.ID))
}
CheckConsistencyFor(t, &Label{}, &Repository{})
}
diff --git a/routers/api/v1/repo/label.go b/routers/api/v1/repo/label.go
index c22db517c3..c932fb1585 100644
--- a/routers/api/v1/repo/label.go
+++ b/routers/api/v1/repo/label.go
@@ -64,7 +64,7 @@ func CreateLabel(ctx *context.APIContext, form api.CreateLabelOption) {
Color: form.Color,
RepoID: ctx.Repo.Repository.ID,
}
- if err := models.NewLabels(label); err != nil {
+ if err := models.NewLabel(label); err != nil {
ctx.Error(500, "NewLabel", err)
return
}
diff --git a/routers/repo/issue_label.go b/routers/repo/issue_label.go
index cfbc2ae3e5..3422677943 100644
--- a/routers/repo/issue_label.go
+++ b/routers/repo/issue_label.go
@@ -89,7 +89,7 @@ func NewLabel(ctx *context.Context, form auth.CreateLabelForm) {
Name: form.Title,
Color: form.Color,
}
- if err := models.NewLabels(l); err != nil {
+ if err := models.NewLabel(l); err != nil {
ctx.Handle(500, "NewLabel", err)
return
}