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 }