Просмотр исходного кода

#3274 fix can't get webhook detail of organization

Unknwon лет назад: 7
Родитель
Сommit
3d93532c87
5 измененных файлов с 26 добавлено и 9 удалено
  1. 17 5
      models/webhook.go
  2. 1 1
      routers/api/v1/repo/hook.go
  3. 1 1
      routers/org/setting.go
  4. 6 1
      routers/repo/webhook.go
  5. 1 1
      templates/repo/home.tmpl

+ 17 - 5
models/webhook.go

@@ -174,8 +174,8 @@ func CreateWebhook(w *Webhook) error {
 	return err
 }
 
-// GetWebhookByID returns webhook of repository by given ID.
-func GetWebhookByID(repoID, id int64) (*Webhook, error) {
+// GetWebhookByRepoID returns webhook of repository by given ID.
+func GetWebhookByRepoID(repoID, id int64) (*Webhook, error) {
 	w := new(Webhook)
 	has, err := x.Id(id).And("repo_id=?", repoID).Get(w)
 	if err != nil {
@@ -186,6 +186,18 @@ func GetWebhookByID(repoID, id int64) (*Webhook, error) {
 	return w, nil
 }
 
+// GetWebhookByOrgID returns webhook of organization by given ID.
+func GetWebhookByOrgID(orgID, id int64) (*Webhook, error) {
+	w := new(Webhook)
+	has, err := x.Id(id).And("org_id=?", orgID).Get(w)
+	if err != nil {
+		return nil, err
+	} else if !has {
+		return nil, ErrWebhookNotExist{id}
+	}
+	return w, nil
+}
+
 // GetActiveWebhooksByRepoID returns all active webhooks of repository.
 func GetActiveWebhooksByRepoID(repoID int64) (ws []*Webhook, err error) {
 	err = x.Where("repo_id=?", repoID).And("is_active=?", true).Find(&ws)
@@ -221,8 +233,8 @@ func DeleteWebhook(id int64) (err error) {
 	return sess.Commit()
 }
 
-// GetWebhooksByOrgId returns all webhooks for an organization.
-func GetWebhooksByOrgId(orgID int64) (ws []*Webhook, err error) {
+// GetWebhooksByOrgID returns all webhooks for an organization.
+func GetWebhooksByOrgID(orgID int64) (ws []*Webhook, err error) {
 	err = x.Find(&ws, &Webhook{OrgID: orgID})
 	return ws, err
 }
@@ -548,7 +560,7 @@ func (t *HookTask) deliver() {
 		}
 
 		// Update webhook last delivery status.
-		w, err := GetWebhookByID(t.RepoID, t.HookID)
+		w, err := GetWebhookByRepoID(t.RepoID, t.HookID)
 		if err != nil {
 			log.Error(5, "GetWebhookByID: %v", err)
 			return

+ 1 - 1
routers/api/v1/repo/hook.go

@@ -98,7 +98,7 @@ func CreateHook(ctx *context.APIContext, form api.CreateHookOption) {
 
 // https://github.com/gogits/go-gogs-client/wiki/Repositories#edit-a-hook
 func EditHook(ctx *context.APIContext, form api.EditHookOption) {
-	w, err := models.GetWebhookByID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
+	w, err := models.GetWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
 	if err != nil {
 		if models.IsErrWebhookNotExist(err) {
 			ctx.Status(404)

+ 1 - 1
routers/org/setting.go

@@ -154,7 +154,7 @@ func Webhooks(ctx *context.Context) {
 		return
 	}
 
-	ws, err := models.GetWebhooksByOrgId(ctx.Org.Organization.Id)
+	ws, err := models.GetWebhooksByOrgID(ctx.Org.Organization.Id)
 	if err != nil {
 		ctx.Handle(500, "GetWebhooksByOrgId", err)
 		return

+ 6 - 1
routers/repo/webhook.go

@@ -220,7 +220,12 @@ func checkWebhook(ctx *context.Context) (*OrgRepoCtx, *models.Webhook) {
 	}
 	ctx.Data["BaseLink"] = orCtx.Link
 
-	w, err := models.GetWebhookByID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
+	var w *models.Webhook
+	if orCtx.RepoID > 0 {
+		w, err = models.GetWebhookByRepoID(ctx.Repo.Repository.ID, ctx.ParamsInt64(":id"))
+	} else {
+		w, err = models.GetWebhookByOrgID(ctx.Org.Organization.Id, ctx.ParamsInt64(":id"))
+	}
 	if err != nil {
 		if models.IsErrWebhookNotExist(err) {
 			ctx.Handle(404, "GetWebhookByID", nil)

+ 1 - 1
templates/repo/home.tmpl

@@ -9,7 +9,7 @@
 		<div class="ui secondary menu">
 			{{if .PullRequestCtx.Allowed}}
 				<div class="fitted item">
-					<a href="{{.BaseRepo.RepoLink}}/compare/{{.BaseRepo.DefaultBranch}}...{{.PullRequestCtx.HeadInfo}}">
+					<a href="{{.BaseRepo.Link}}/compare/{{.BaseRepo.DefaultBranch}}...{{.PullRequestCtx.HeadInfo}}">
 						<button class="ui green small button"><i class="octicon octicon-git-compare"></i></button>
 					</a>
 				</div>