add more webhooks
This commit is contained in:
parent
81661c2b47
commit
9ee330c0c7
|
@ -10,7 +10,6 @@ import (
|
|||
"strings"
|
||||
|
||||
"code.gitea.io/git"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/process"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
@ -195,24 +194,6 @@ func CreateRelease(gitRepo *git.Repository, rel *Release, attachmentUUIDs []stri
|
|||
return err
|
||||
}
|
||||
|
||||
if !rel.IsDraft {
|
||||
if err := rel.LoadAttributes(); err != nil {
|
||||
log.Error(2, "LoadAttributes: %v", err)
|
||||
} else {
|
||||
mode, _ := AccessLevel(rel.PublisherID, rel.Repo)
|
||||
if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleasePublished,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -391,38 +372,26 @@ func UpdateRelease(doer *User, gitRepo *git.Repository, rel *Release, attachment
|
|||
|
||||
err = addReleaseAttachments(rel.ID, attachmentUUIDs)
|
||||
|
||||
mode, _ := accessLevel(x, doer.ID, rel.Repo)
|
||||
if err1 := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleaseUpdated,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err1 != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// DeleteReleaseByID deletes a release and corresponding Git tag by given ID.
|
||||
func DeleteReleaseByID(id int64, u *User, delTag bool) error {
|
||||
func DeleteReleaseByID(id int64, u *User, delTag bool) (*Release, error) {
|
||||
rel, err := GetReleaseByID(id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("GetReleaseByID: %v", err)
|
||||
return nil, fmt.Errorf("GetReleaseByID: %v", err)
|
||||
}
|
||||
|
||||
repo, err := GetRepositoryByID(rel.RepoID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("GetRepositoryByID: %v", err)
|
||||
return nil, fmt.Errorf("GetRepositoryByID: %v", err)
|
||||
}
|
||||
|
||||
has, err := HasAccess(u.ID, repo, AccessModeWrite)
|
||||
if err != nil {
|
||||
return fmt.Errorf("HasAccess: %v", err)
|
||||
return nil, fmt.Errorf("HasAccess: %v", err)
|
||||
} else if !has {
|
||||
return fmt.Errorf("DeleteReleaseByID: permission denied")
|
||||
return nil, fmt.Errorf("DeleteReleaseByID: permission denied")
|
||||
}
|
||||
|
||||
if delTag {
|
||||
|
@ -430,11 +399,11 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
|
|||
fmt.Sprintf("DeleteReleaseByID (git tag -d): %d", rel.ID),
|
||||
"git", "tag", "-d", rel.TagName)
|
||||
if err != nil && !strings.Contains(stderr, "not found") {
|
||||
return fmt.Errorf("git tag -d: %v - %s", err, stderr)
|
||||
return nil, fmt.Errorf("git tag -d: %v - %s", err, stderr)
|
||||
}
|
||||
|
||||
if _, err = x.ID(rel.ID).Delete(new(Release)); err != nil {
|
||||
return fmt.Errorf("Delete: %v", err)
|
||||
return nil, fmt.Errorf("Delete: %v", err)
|
||||
}
|
||||
} else {
|
||||
rel.IsTag = true
|
||||
|
@ -444,28 +413,12 @@ func DeleteReleaseByID(id int64, u *User, delTag bool) error {
|
|||
rel.Note = ""
|
||||
|
||||
if _, err = x.ID(rel.ID).AllCols().Update(rel); err != nil {
|
||||
return fmt.Errorf("Update: %v", err)
|
||||
return nil, fmt.Errorf("Update: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
rel.Repo = repo
|
||||
if err = rel.LoadAttributes(); err != nil {
|
||||
return fmt.Errorf("LoadAttributes: %v", err)
|
||||
}
|
||||
|
||||
mode, _ := accessLevel(x, u.ID, rel.Repo)
|
||||
if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleaseDeleted,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
return rel, nil
|
||||
}
|
||||
|
||||
// SyncReleasesWithTags synchronizes release table with repository tags
|
||||
|
|
|
@ -1934,19 +1934,6 @@ func DeleteRepository(doer *User, uid, repoID int64) error {
|
|||
return fmt.Errorf("Commit: %v", err)
|
||||
}
|
||||
|
||||
if org.IsOrganization() {
|
||||
if err = PrepareWebhooks(repo, HookEventRepository, &api.RepositoryPayload{
|
||||
Action: api.HookRepoDeleted,
|
||||
Repository: repo.APIFormat(AccessModeOwner),
|
||||
Organization: org.APIFormat(),
|
||||
Sender: doer.APIFormat(),
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
go HookQueue.Add(repo.ID)
|
||||
}
|
||||
|
||||
DeleteRepoFromIndexer(repo)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -2145,7 +2132,7 @@ func gatherMissingRepoRecords() ([]*Repository, error) {
|
|||
}
|
||||
|
||||
// DeleteMissingRepositories deletes all repository records that lost Git files.
|
||||
func DeleteMissingRepositories(doer *User) error {
|
||||
func DeleteMissingRepositories(doer *User, onDeleted func(doer *User, repo *Repository)) error {
|
||||
repos, err := gatherMissingRepoRecords()
|
||||
if err != nil {
|
||||
return fmt.Errorf("gatherMissingRepoRecords: %v", err)
|
||||
|
@ -2161,6 +2148,8 @@ func DeleteMissingRepositories(doer *User) error {
|
|||
if err2 := CreateRepositoryNotice(fmt.Sprintf("DeleteRepository [%d]: %v", repo.ID, err)); err2 != nil {
|
||||
return fmt.Errorf("CreateRepositoryNotice: %v", err)
|
||||
}
|
||||
} else {
|
||||
onDeleted(doer, repo)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
@ -2462,19 +2451,6 @@ func ForkRepository(doer, u *User, oldRepo *Repository, name, desc string) (_ *R
|
|||
return nil, err
|
||||
}
|
||||
|
||||
oldMode, _ := AccessLevel(doer.ID, oldRepo)
|
||||
mode, _ := AccessLevel(doer.ID, repo)
|
||||
|
||||
if err = PrepareWebhooks(oldRepo, HookEventFork, &api.ForkPayload{
|
||||
Forkee: oldRepo.APIFormat(oldMode),
|
||||
Repo: repo.APIFormat(mode),
|
||||
Sender: doer.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks [repo_id: %d]: %v", oldRepo.ID, err)
|
||||
} else {
|
||||
go HookQueue.Add(oldRepo.ID)
|
||||
}
|
||||
|
||||
if err = repo.UpdateSize(); err != nil {
|
||||
log.Error(4, "Failed to update size for repository: %v", err)
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ var (
|
|||
)
|
||||
|
||||
// NewNotifier returns a new actionNotifier
|
||||
func NewNotifier() *actionNotifier {
|
||||
func NewNotifier() base.Notifier {
|
||||
return &actionNotifier{}
|
||||
}
|
||||
|
||||
|
@ -79,3 +79,20 @@ func (r *actionNotifier) NotifyDeleteComment(doer *models.User, c *models.Commen
|
|||
log.Error(4, "UpdateCommentAction [%d]: %v", c.ID, err)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *actionNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
|
||||
}
|
||||
|
||||
func (r *actionNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
|
||||
}
|
||||
|
||||
func (r *actionNotifier) NotifyNewRelease(rel *models.Release) {
|
||||
}
|
||||
|
||||
func (r *actionNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
||||
func (r *actionNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
|
|
@ -20,4 +20,9 @@ type Notifier interface {
|
|||
NotifyNewPullRequest(*models.PullRequest)
|
||||
NotifyUpdateComment(*models.User, *models.Comment, string)
|
||||
NotifyDeleteComment(*models.User, *models.Comment)
|
||||
NotifyDeleteRepository(doer *models.User, repo *models.Repository)
|
||||
NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository)
|
||||
NotifyNewRelease(rel *models.Release)
|
||||
NotifyUpdateRelease(doer *models.User, rel *models.Release)
|
||||
NotifyDeleteRelease(doer *models.User, rel *models.Release)
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ var (
|
|||
)
|
||||
|
||||
// NewNotifier create a new indexerNotifier notifier
|
||||
func NewNotifier() *indexerNotifier {
|
||||
func NewNotifier() base.Notifier {
|
||||
return &indexerNotifier{}
|
||||
}
|
||||
|
||||
|
@ -55,3 +55,20 @@ func (r *indexerNotifier) NotifyDeleteComment(doer *models.User, comment *models
|
|||
models.UpdateIssueIndexer(comment.IssueID)
|
||||
}
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
models.DeleteRepoFromIndexer(repo)
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyNewRelease(rel *models.Release) {
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
||||
func (r *indexerNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ var (
|
|||
)
|
||||
|
||||
// NewNotifier create a new mailNotifier notifier
|
||||
func NewNotifier() *mailNotifier {
|
||||
func NewNotifier() base.Notifier {
|
||||
return &mailNotifier{}
|
||||
}
|
||||
|
||||
|
@ -57,3 +57,18 @@ func (m *mailNotifier) NotifyUpdateComment(doer *models.User, c *models.Comment,
|
|||
|
||||
func (m *mailNotifier) NotifyDeleteComment(doer *models.User, c *models.Comment) {
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyNewRelease(rel *models.Release) {
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
||||
func (m *mailNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
|
|
@ -76,9 +76,44 @@ func NotifyUpdateComment(doer *models.User, c *models.Comment, oldContent string
|
|||
}
|
||||
}
|
||||
|
||||
// NotifyDeleteComment notifies update comment to notifiers
|
||||
// NotifyDeleteComment notifies delete comment to notifiers
|
||||
func NotifyDeleteComment(doer *models.User, c *models.Comment) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyDeleteComment(doer, c)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyDeleteRepository notifies delete repository to notifiers
|
||||
func NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyDeleteRepository(doer, repo)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyForkRepository notifies fork repository to notifiers
|
||||
func NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyForkRepository(doer, oldRepo, repo)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyNewRelease notifies new release to notifiers
|
||||
func NotifyNewRelease(rel *models.Release) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyNewRelease(rel)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyUpdateRelease notifies update release to notifiers
|
||||
func NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyUpdateRelease(doer, rel)
|
||||
}
|
||||
}
|
||||
|
||||
// NotifyDeleteRelease notifies delete release to notifiers
|
||||
func NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
for _, notifier := range notifiers {
|
||||
notifier.NotifyDeleteRelease(doer, rel)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ var (
|
|||
)
|
||||
|
||||
// NewNotifier create a new notificationService notifier
|
||||
func NewNotifier() *notificationService {
|
||||
func NewNotifier() base.Notifier {
|
||||
return ¬ificationService{
|
||||
issueQueue: make(chan issueNotificationOpts, 100),
|
||||
}
|
||||
|
@ -81,3 +81,18 @@ func (ns *notificationService) NotifyUpdateComment(doer *models.User, c *models.
|
|||
|
||||
func (ns *notificationService) NotifyDeleteComment(doer *models.User, c *models.Comment) {
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyNewRelease(rel *models.Release) {
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
||||
func (ns *notificationService) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ var (
|
|||
)
|
||||
|
||||
// NewNotifier returns a new webhookNotifier
|
||||
func NewNotifier() *webhookNotifier {
|
||||
func NewNotifier() base.Notifier {
|
||||
return &webhookNotifier{}
|
||||
}
|
||||
|
||||
|
@ -171,3 +171,94 @@ func (w *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models
|
|||
go models.HookQueue.Add(comment.Issue.Repo.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *webhookNotifier) NotifyDeleteRepository(doer *models.User, repo *models.Repository) {
|
||||
org, err := models.GetUserByID(repo.OwnerID)
|
||||
if err != nil {
|
||||
log.Error(2, "GetUserByID [repo_id: %d]: %v", repo.ID, err)
|
||||
return
|
||||
}
|
||||
|
||||
if org.IsOrganization() {
|
||||
if err := models.PrepareWebhooks(repo, models.HookEventRepository, &api.RepositoryPayload{
|
||||
Action: api.HookRepoDeleted,
|
||||
Repository: repo.APIFormat(models.AccessModeOwner),
|
||||
Organization: org.APIFormat(),
|
||||
Sender: doer.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks [repo_id: %d]: %v", repo.ID, err)
|
||||
} else {
|
||||
go models.HookQueue.Add(repo.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (w *webhookNotifier) NotifyForkRepository(doer *models.User, oldRepo, repo *models.Repository) {
|
||||
oldMode, _ := models.AccessLevel(doer.ID, oldRepo)
|
||||
mode, _ := models.AccessLevel(doer.ID, repo)
|
||||
|
||||
if err := models.PrepareWebhooks(oldRepo, models.HookEventFork, &api.ForkPayload{
|
||||
Forkee: oldRepo.APIFormat(oldMode),
|
||||
Repo: repo.APIFormat(mode),
|
||||
Sender: doer.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks [repo_id: %d]: %v", oldRepo.ID, err)
|
||||
} else {
|
||||
go models.HookQueue.Add(oldRepo.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *webhookNotifier) NotifyNewRelease(rel *models.Release) {
|
||||
if rel.IsDraft {
|
||||
return
|
||||
}
|
||||
|
||||
if err := rel.LoadAttributes(); err != nil {
|
||||
log.Error(2, "LoadAttributes: %v", err)
|
||||
} else {
|
||||
mode, _ := models.AccessLevel(rel.PublisherID, rel.Repo)
|
||||
if err := models.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleasePublished,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go models.HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (w *webhookNotifier) NotifyUpdateRelease(doer *models.User, rel *models.Release) {
|
||||
mode, _ := models.AccessLevel(doer.ID, rel.Repo)
|
||||
if err := models.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleaseUpdated,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go models.HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *webhookNotifier) NotifyDeleteRelease(doer *models.User, rel *models.Release) {
|
||||
if err := rel.LoadAttributes(); err != nil {
|
||||
log.Error(2, "rel.LoadAttributes: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
mode, _ := models.AccessLevel(doer.ID, rel.Repo)
|
||||
if err := models.PrepareWebhooks(rel.Repo, models.HookEventRelease, &api.ReleasePayload{
|
||||
Action: api.HookReleaseDeleted,
|
||||
Release: rel.APIFormat(),
|
||||
Repository: rel.Repo.APIFormat(mode),
|
||||
Sender: rel.Publisher.APIFormat(),
|
||||
}); err != nil {
|
||||
log.Error(2, "PrepareWebhooks: %v", err)
|
||||
} else {
|
||||
go models.HookQueue.Add(rel.Repo.ID)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,15 +10,16 @@ import (
|
|||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"gopkg.in/macaron.v1"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/cron"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/process"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
"gopkg.in/macaron.v1"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -146,7 +147,7 @@ func Dashboard(ctx *context.Context) {
|
|||
err = models.DeleteRepositoryArchives()
|
||||
case cleanMissingRepos:
|
||||
success = ctx.Tr("admin.dashboard.delete_missing_repos_success")
|
||||
err = models.DeleteMissingRepositories(ctx.User)
|
||||
err = models.DeleteMissingRepositories(ctx.User, notification.NotifyDeleteRepository)
|
||||
case gitGCRepos:
|
||||
success = ctx.Tr("admin.dashboard.git_gc_repos_success")
|
||||
err = models.GitGcRepos()
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/routers"
|
||||
)
|
||||
|
@ -42,6 +43,7 @@ func DeleteRepo(ctx *context.Context) {
|
|||
ctx.ServerError("DeleteRepository", err)
|
||||
return
|
||||
}
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
log.Trace("Repository deleted: %s/%s", repo.MustOwner().Name, repo.Name)
|
||||
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success"))
|
||||
|
|
|
@ -7,6 +7,7 @@ package repo
|
|||
import (
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/routers/api/v1/utils"
|
||||
|
||||
api "code.gitea.io/sdk/gitea"
|
||||
|
@ -104,5 +105,7 @@ func CreateFork(ctx *context.APIContext, form api.CreateForkOption) {
|
|||
ctx.Error(500, "ForkRepository", err)
|
||||
return
|
||||
}
|
||||
notification.NotifyForkRepository(ctx.User, repo, fork)
|
||||
|
||||
ctx.JSON(202, fork.APIFormat(models.AccessModeOwner))
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ package repo
|
|||
import (
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
|
||||
api "code.gitea.io/sdk/gitea"
|
||||
)
|
||||
|
@ -156,6 +157,7 @@ func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
|||
}
|
||||
return
|
||||
}
|
||||
notification.NotifyNewRelease(rel)
|
||||
} else {
|
||||
if !rel.IsTag {
|
||||
ctx.Status(409)
|
||||
|
@ -175,6 +177,8 @@ func CreateRelease(ctx *context.APIContext, form api.CreateReleaseOption) {
|
|||
ctx.ServerError("UpdateRelease", err)
|
||||
return
|
||||
}
|
||||
|
||||
notification.NotifyUpdateRelease(ctx.User, rel)
|
||||
}
|
||||
ctx.JSON(201, rel.APIFormat())
|
||||
}
|
||||
|
@ -250,6 +254,8 @@ func EditRelease(ctx *context.APIContext, form api.EditReleaseOption) {
|
|||
return
|
||||
}
|
||||
|
||||
notification.NotifyUpdateRelease(ctx.User, rel)
|
||||
|
||||
rel, err = models.GetReleaseByID(id)
|
||||
if err != nil {
|
||||
ctx.Error(500, "GetReleaseByID", err)
|
||||
|
@ -301,9 +307,11 @@ func DeleteRelease(ctx *context.APIContext) {
|
|||
ctx.Status(404)
|
||||
return
|
||||
}
|
||||
if err := models.DeleteReleaseByID(id, ctx.User, false); err != nil {
|
||||
rel, err = models.DeleteReleaseByID(id, ctx.User, false)
|
||||
if err != nil {
|
||||
ctx.Error(500, "DeleteReleaseByID", err)
|
||||
return
|
||||
}
|
||||
notification.NotifyDeleteRelease(ctx.User, rel)
|
||||
ctx.Status(204)
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/auth"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/api/v1/convert"
|
||||
|
@ -186,6 +187,8 @@ func CreateUserRepo(ctx *context.APIContext, owner *models.User, opt api.CreateR
|
|||
if repo != nil {
|
||||
if err = models.DeleteRepository(ctx.User, ctx.User.ID, repo.ID); err != nil {
|
||||
log.Error(4, "DeleteRepository: %v", err)
|
||||
} else {
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
}
|
||||
}
|
||||
ctx.Error(500, "CreateRepository", err)
|
||||
|
@ -359,6 +362,8 @@ func Migrate(ctx *context.APIContext, form auth.MigrateRepoForm) {
|
|||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
} else {
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
}
|
||||
}
|
||||
ctx.Error(500, "MigrateRepository", err)
|
||||
|
@ -476,6 +481,8 @@ func Delete(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
|
||||
log.Trace("Repository deleted: %s/%s", owner.Name, repo.Name)
|
||||
ctx.Status(204)
|
||||
}
|
||||
|
|
|
@ -203,6 +203,8 @@ func ForkPost(ctx *context.Context, form auth.CreateRepoForm) {
|
|||
return
|
||||
}
|
||||
|
||||
notification.NotifyForkRepository(ctx.User, forkRepo, repo)
|
||||
|
||||
log.Trace("Repository forked[%d]: %s/%s", forkRepo.ID, ctxUser.Name, repo.Name)
|
||||
ctx.Redirect(setting.AppSubURL + "/" + ctxUser.Name + "/" + repo.Name)
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/markup/markdown"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
|
||||
"github.com/Unknwon/paginater"
|
||||
|
@ -182,6 +183,7 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) {
|
|||
}
|
||||
return
|
||||
}
|
||||
notification.NotifyNewRelease(rel)
|
||||
} else {
|
||||
if !rel.IsTag {
|
||||
ctx.Data["Err_TagName"] = true
|
||||
|
@ -202,6 +204,8 @@ func NewReleasePost(ctx *context.Context, form auth.NewReleaseForm) {
|
|||
ctx.ServerError("UpdateRelease", err)
|
||||
return
|
||||
}
|
||||
|
||||
notification.NotifyUpdateRelease(ctx.User, rel)
|
||||
}
|
||||
log.Trace("Release created: %s/%s:%s", ctx.User.LowerName, ctx.Repo.Repository.Name, form.TagName)
|
||||
|
||||
|
@ -280,14 +284,19 @@ func EditReleasePost(ctx *context.Context, form auth.EditReleaseForm) {
|
|||
ctx.ServerError("UpdateRelease", err)
|
||||
return
|
||||
}
|
||||
|
||||
notification.NotifyUpdateRelease(ctx.User, rel)
|
||||
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/releases")
|
||||
}
|
||||
|
||||
// DeleteRelease delete a release
|
||||
func DeleteRelease(ctx *context.Context) {
|
||||
if err := models.DeleteReleaseByID(ctx.QueryInt64("id"), ctx.User, true); err != nil {
|
||||
rel, err := models.DeleteReleaseByID(ctx.QueryInt64("id"), ctx.User, true)
|
||||
if err != nil {
|
||||
ctx.Flash.Error("DeleteReleaseByID: " + err.Error())
|
||||
} else {
|
||||
notification.NotifyDeleteRelease(ctx.User, rel)
|
||||
ctx.Flash.Success(ctx.Tr("repo.release.deletion_success"))
|
||||
}
|
||||
|
||||
|
|
|
@ -10,17 +10,17 @@ import (
|
|||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/Unknwon/com"
|
||||
|
||||
"code.gitea.io/git"
|
||||
|
||||
"code.gitea.io/gitea/models"
|
||||
"code.gitea.io/gitea/modules/auth"
|
||||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
|
||||
"code.gitea.io/git"
|
||||
"github.com/Unknwon/com"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -184,6 +184,8 @@ func CreatePost(ctx *context.Context, form auth.CreateRepoForm) {
|
|||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
} else {
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -262,6 +264,8 @@ func MigratePost(ctx *context.Context, form auth.MigrateRepoForm) {
|
|||
if repo != nil {
|
||||
if errDelete := models.DeleteRepository(ctx.User, ctxUser.ID, repo.ID); errDelete != nil {
|
||||
log.Error(4, "DeleteRepository: %v", errDelete)
|
||||
} else {
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/base"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/utils"
|
||||
|
@ -320,6 +321,7 @@ func SettingsPost(ctx *context.Context, form auth.RepoSettingForm) {
|
|||
ctx.ServerError("DeleteRepository", err)
|
||||
return
|
||||
}
|
||||
notification.NotifyDeleteRepository(ctx.User, repo)
|
||||
log.Trace("Repository deleted: %s/%s", ctx.Repo.Owner.Name, repo.Name)
|
||||
|
||||
ctx.Flash.Success(ctx.Tr("repo.settings.deletion_success"))
|
||||
|
|
Loading…
Reference in New Issue
Block a user