From 04ec79579cdcd5cf647ef3ff33d35ecfa7550b49 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Wed, 30 Aug 2017 13:36:52 +0800
Subject: [PATCH] fix orgnization webhooks (#2422)

* fix org webhooks

* remove trace code
---
 models/webhook.go                    | 19 ++++++++++++++++---
 models/webhook_discord.go            |  2 --
 routers/routes/routes.go             |  2 +-
 templates/org/settings/hook_new.tmpl |  1 +
 4 files changed, 18 insertions(+), 6 deletions(-)

diff --git a/models/webhook.go b/models/webhook.go
index 5ad27ee8f3..9e5742cb52 100644
--- a/models/webhook.go
+++ b/models/webhook.go
@@ -221,6 +221,13 @@ func getWebhook(bean *Webhook) (*Webhook, error) {
 	return bean, nil
 }
 
+// GetWebhookByID returns webhook of repository by given ID.
+func GetWebhookByID(id int64) (*Webhook, error) {
+	return getWebhook(&Webhook{
+		ID: id,
+	})
+}
+
 // GetWebhookByRepoID returns webhook of repository by given ID.
 func GetWebhookByRepoID(repoID, id int64) (*Webhook, error) {
 	return getWebhook(&Webhook{
@@ -271,6 +278,12 @@ func UpdateWebhook(w *Webhook) error {
 	return err
 }
 
+// UpdateWebhookLastStatus updates last status of webhook.
+func UpdateWebhookLastStatus(w *Webhook) error {
+	_, err := x.ID(w.ID).Cols("last_status").Update(w)
+	return err
+}
+
 // deleteWebhook uses argument bean as query condition,
 // ID must be specified and do not assign unnecessary fields.
 func deleteWebhook(bean *Webhook) (err error) {
@@ -603,7 +616,7 @@ func (t *HookTask) deliver() {
 		}
 
 		// Update webhook last delivery status.
-		w, err := GetWebhookByRepoID(t.RepoID, t.HookID)
+		w, err := GetWebhookByID(t.HookID)
 		if err != nil {
 			log.Error(5, "GetWebhookByID: %v", err)
 			return
@@ -613,8 +626,8 @@ func (t *HookTask) deliver() {
 		} else {
 			w.LastStatus = HookStatusFail
 		}
-		if err = UpdateWebhook(w); err != nil {
-			log.Error(5, "UpdateWebhook: %v", err)
+		if err = UpdateWebhookLastStatus(w); err != nil {
+			log.Error(5, "UpdateWebhookLastStatus: %v", err)
 			return
 		}
 	}()
diff --git a/models/webhook_discord.go b/models/webhook_discord.go
index bdb363af73..4426a945b4 100644
--- a/models/webhook_discord.go
+++ b/models/webhook_discord.go
@@ -142,8 +142,6 @@ func getDiscordPushPayload(p *api.PushPayload, meta *DiscordMeta) (*DiscordPaylo
 		}
 	}
 
-	fmt.Println(text)
-
 	return &DiscordPayload{
 		Username:  meta.Username,
 		AvatarURL: meta.IconURL,
diff --git a/routers/routes/routes.go b/routers/routes/routes.go
index a51c809588..5fa93fdb09 100644
--- a/routers/routes/routes.go
+++ b/routers/routes/routes.go
@@ -396,7 +396,7 @@ func RegisterRoutes(m *macaron.Macaron) {
 					m.Post("/gitea/new", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksNewPost)
 					m.Post("/gogs/new", bindIgnErr(auth.NewGogshookForm{}), repo.GogsHooksNewPost)
 					m.Post("/slack/new", bindIgnErr(auth.NewSlackHookForm{}), repo.SlackHooksNewPost)
-					m.Post("/discord/new", bindIgnErr(auth.NewDiscordHookForm{}), repo.DiscordHooksEditPost)
+					m.Post("/discord/new", bindIgnErr(auth.NewDiscordHookForm{}), repo.DiscordHooksNewPost)
 					m.Get("/:id", repo.WebHooksEdit)
 					m.Post("/gitea/:id", bindIgnErr(auth.NewWebhookForm{}), repo.WebHooksEditPost)
 					m.Post("/gogs/:id", bindIgnErr(auth.NewGogshookForm{}), repo.GogsHooksEditPost)
diff --git a/templates/org/settings/hook_new.tmpl b/templates/org/settings/hook_new.tmpl
index 8d55e80ea8..1710713f94 100644
--- a/templates/org/settings/hook_new.tmpl
+++ b/templates/org/settings/hook_new.tmpl
@@ -22,6 +22,7 @@
 					{{template "repo/settings/hook_gitea" .}}
 					{{template "repo/settings/hook_gogs" .}}
 					{{template "repo/settings/hook_slack" .}}
+					{{template "repo/settings/hook_discord" .}}
 				</div>
 
 				{{template "repo/settings/hook_history" .}}