Delete releases attachments if release is deleted (#6068)

* delete attachments from the database and file system

* add migration

* fix import statements

* fix package name

* remove conditional should in case the confi has been changed and the server restarted

* simplify deletion of attachments in DB

* fix CI build

* fix review

* add copyright in the proper place

* fix review
This commit is contained in:
Lanre Adelowo 2019-09-22 10:05:48 +01:00 committed by Lauris BH
parent 6322d254e7
commit 63ff61615e
4 changed files with 63 additions and 1 deletions

View file

@ -1,4 +1,5 @@
// Copyright 2014 The Gogs Authors. All rights reserved.
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
@ -6,6 +7,7 @@ package models
import (
"fmt"
"os"
"sort"
"strings"
@ -357,6 +359,17 @@ func DeleteReleaseByID(id int64, doer *User, delTag bool) error {
return fmt.Errorf("LoadAttributes: %v", err)
}
if _, err := x.Delete(&Attachment{ReleaseID: id}); err != nil {
return err
}
for i := range rel.Attachments {
attachment := rel.Attachments[i]
if err := os.RemoveAll(attachment.LocalPath()); err != nil {
return err
}
}
mode, _ := AccessLevel(doer, rel.Repo)
if err := PrepareWebhooks(rel.Repo, HookEventRelease, &api.ReleasePayload{
Action: api.HookReleaseDeleted,