From 3c3855a05c79ccc7a8495cdbf4a361e7bef74248 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 18 Nov 2021 13:58:42 +0800 Subject: [PATCH] Move user functions into user.go (#17659) * Move user functions into user.go * Fix test --- models/admin/main_test.go | 18 ++++++++ models/{admin.go => admin/notice.go} | 43 +++++++------------ .../{admin_test.go => admin/notice_test.go} | 2 +- models/consistency.go | 3 +- models/repo.go | 17 ++++---- models/user.go | 31 +++++++++---- modules/repository/check.go | 13 +++--- routers/web/admin/notice.go | 10 ++--- routers/web/repo/middlewares.go | 4 +- services/cron/tasks.go | 7 +-- services/migrations/gitea_downloader.go | 8 ++-- services/migrations/migrate.go | 3 +- services/mirror/mirror_pull.go | 11 ++--- services/wiki/wiki.go | 3 +- 14 files changed, 101 insertions(+), 72 deletions(-) create mode 100644 models/admin/main_test.go rename models/{admin.go => admin/notice.go} (74%) rename models/{admin_test.go => admin/notice_test.go} (99%) diff --git a/models/admin/main_test.go b/models/admin/main_test.go new file mode 100644 index 0000000000..f6c9dce57a --- /dev/null +++ b/models/admin/main_test.go @@ -0,0 +1,18 @@ +// Copyright 2020 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. + +package admin + +import ( + "path/filepath" + "testing" + + "code.gitea.io/gitea/models/unittest" +) + +func TestMain(m *testing.M) { + unittest.MainTest(m, filepath.Join("..", ".."), + "notice.yml", + ) +} diff --git a/models/admin.go b/models/admin/notice.go similarity index 74% rename from models/admin.go rename to models/admin/notice.go index a003aff7e6..c41e49ed8c 100644 --- a/models/admin.go +++ b/models/admin/notice.go @@ -1,11 +1,11 @@ -// Copyright 2014 The Gogs Authors. All rights reserved. -// Copyright 2020 The Gitea Authors. All rights reserved. +// Copyright 2021 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. -package models +package admin import ( + "context" "fmt" "code.gitea.io/gitea/models/db" @@ -44,10 +44,11 @@ func (n *Notice) TrStr() string { // CreateNotice creates new system notice. func CreateNotice(tp NoticeType, desc string, args ...interface{}) error { - return createNotice(db.GetEngine(db.DefaultContext), tp, desc, args...) + return CreateNoticeCtx(db.DefaultContext, tp, desc, args...) } -func createNotice(e db.Engine, tp NoticeType, desc string, args ...interface{}) error { +// CreateNoticeCtx creates new system notice. +func CreateNoticeCtx(ctx context.Context, tp NoticeType, desc string, args ...interface{}) error { if len(args) > 0 { desc = fmt.Sprintf(desc, args...) } @@ -55,42 +56,43 @@ func createNotice(e db.Engine, tp NoticeType, desc string, args ...interface{}) Type: tp, Description: desc, } - _, err := e.Insert(n) - return err + return db.Insert(ctx, n) } // CreateRepositoryNotice creates new system notice with type NoticeRepository. func CreateRepositoryNotice(desc string, args ...interface{}) error { - return createNotice(db.GetEngine(db.DefaultContext), NoticeRepository, desc, args...) + return CreateNoticeCtx(db.DefaultContext, NoticeRepository, desc, args...) } // RemoveAllWithNotice removes all directories in given path and // creates a system notice when error occurs. func RemoveAllWithNotice(title, path string) { - removeAllWithNotice(db.GetEngine(db.DefaultContext), title, path) + RemoveAllWithNoticeCtx(db.DefaultContext, title, path) } // RemoveStorageWithNotice removes a file from the storage and // creates a system notice when error occurs. func RemoveStorageWithNotice(bucket storage.ObjectStorage, title, path string) { - removeStorageWithNotice(db.GetEngine(db.DefaultContext), bucket, title, path) + removeStorageWithNotice(db.DefaultContext, bucket, title, path) } -func removeStorageWithNotice(e db.Engine, bucket storage.ObjectStorage, title, path string) { +func removeStorageWithNotice(ctx context.Context, bucket storage.ObjectStorage, title, path string) { if err := bucket.Delete(path); err != nil { desc := fmt.Sprintf("%s [%s]: %v", title, path, err) log.Warn(title+" [%s]: %v", path, err) - if err = createNotice(e, NoticeRepository, desc); err != nil { + if err = CreateNoticeCtx(ctx, NoticeRepository, desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } } } -func removeAllWithNotice(e db.Engine, title, path string) { +// RemoveAllWithNoticeCtx removes all directories in given path and +// creates a system notice when error occurs. +func RemoveAllWithNoticeCtx(ctx context.Context, title, path string) { if err := util.RemoveAll(path); err != nil { desc := fmt.Sprintf("%s [%s]: %v", title, path, err) log.Warn(title+" [%s]: %v", path, err) - if err = createNotice(e, NoticeRepository, desc); err != nil { + if err = CreateNoticeCtx(ctx, NoticeRepository, desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } } @@ -142,16 +144,3 @@ func DeleteNoticesByIDs(ids []int64) error { Delete(new(Notice)) return err } - -// GetAdminUser returns the first administrator -func GetAdminUser() (*User, error) { - var admin User - has, err := db.GetEngine(db.DefaultContext).Where("is_admin=?", true).Get(&admin) - if err != nil { - return nil, err - } else if !has { - return nil, ErrUserNotExist{} - } - - return &admin, nil -} diff --git a/models/admin_test.go b/models/admin/notice_test.go similarity index 99% rename from models/admin_test.go rename to models/admin/notice_test.go index 8c1deda5f8..7272df4368 100644 --- a/models/admin_test.go +++ b/models/admin/notice_test.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. -package models +package admin import ( "testing" diff --git a/models/consistency.go b/models/consistency.go index d7bf8ade57..83cfbd0e49 100644 --- a/models/consistency.go +++ b/models/consistency.go @@ -5,6 +5,7 @@ package models import ( + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "xorm.io/builder" @@ -127,7 +128,7 @@ func DeleteOrphanedIssues() error { // Remove issue attachment files. for i := range attachmentPaths { - removeAllWithNotice(db.GetEngine(db.DefaultContext), "Delete issue attachment", attachmentPaths[i]) + admin_model.RemoveAllWithNoticeCtx(db.DefaultContext, "Delete issue attachment", attachmentPaths[i]) } return nil } diff --git a/models/repo.go b/models/repo.go index d45f1b2fc3..57806a86f7 100644 --- a/models/repo.go +++ b/models/repo.go @@ -23,6 +23,7 @@ import ( _ "image/jpeg" // Needed for jpeg support + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/models/webhook" @@ -133,7 +134,7 @@ func NewRepoContext() { loadRepoConfig() unit.LoadUnitConfig() - RemoveAllWithNotice("Clean up repository temporary data", filepath.Join(setting.AppDataPath, "tmp")) + admin_model.RemoveAllWithNotice("Clean up repository temporary data", filepath.Join(setting.AppDataPath, "tmp")) } // RepositoryStatus defines the status of repository @@ -1648,36 +1649,36 @@ func DeleteRepository(doer *User, uid, repoID int64) error { // Remove repository files. repoPath := repo.RepoPath() - removeAllWithNotice(db.GetEngine(db.DefaultContext), "Delete repository files", repoPath) + admin_model.RemoveAllWithNotice("Delete repository files", repoPath) // Remove wiki files if repo.HasWiki() { - removeAllWithNotice(db.GetEngine(db.DefaultContext), "Delete repository wiki", repo.WikiPath()) + admin_model.RemoveAllWithNotice("Delete repository wiki", repo.WikiPath()) } // Remove archives for i := range archivePaths { - removeStorageWithNotice(db.GetEngine(db.DefaultContext), storage.RepoArchives, "Delete repo archive file", archivePaths[i]) + admin_model.RemoveStorageWithNotice(storage.RepoArchives, "Delete repo archive file", archivePaths[i]) } // Remove lfs objects for i := range lfsPaths { - removeStorageWithNotice(db.GetEngine(db.DefaultContext), storage.LFS, "Delete orphaned LFS file", lfsPaths[i]) + admin_model.RemoveStorageWithNotice(storage.LFS, "Delete orphaned LFS file", lfsPaths[i]) } // Remove issue attachment files. for i := range attachmentPaths { - RemoveStorageWithNotice(storage.Attachments, "Delete issue attachment", attachmentPaths[i]) + admin_model.RemoveStorageWithNotice(storage.Attachments, "Delete issue attachment", attachmentPaths[i]) } // Remove release attachment files. for i := range releaseAttachments { - RemoveStorageWithNotice(storage.Attachments, "Delete release attachment", releaseAttachments[i]) + admin_model.RemoveStorageWithNotice(storage.Attachments, "Delete release attachment", releaseAttachments[i]) } // Remove attachment with no issue_id and release_id. for i := range newAttachmentPaths { - RemoveStorageWithNotice(storage.Attachments, "Delete issue attachment", attachmentPaths[i]) + admin_model.RemoveStorageWithNotice(storage.Attachments, "Delete issue attachment", attachmentPaths[i]) } if len(repo.Avatar) > 0 { diff --git a/models/user.go b/models/user.go index a87929a35f..cc6c5a5578 100644 --- a/models/user.go +++ b/models/user.go @@ -22,6 +22,7 @@ import ( _ "image/jpeg" // Needed for jpeg support + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/models/login" "code.gitea.io/gitea/models/unit" @@ -1148,7 +1149,8 @@ func deleteBeans(e db.Engine, beans ...interface{}) (err error) { return nil } -func deleteUser(e db.Engine, u *User) error { +func deleteUser(ctx context.Context, u *User) error { + e := db.GetEngine(ctx) // Note: A user owns any repository or belongs to any organization // cannot perform delete operation. @@ -1304,7 +1306,7 @@ func deleteUser(e db.Engine, u *User) error { path := UserPath(u.Name) if err = util.RemoveAll(path); err != nil { err = fmt.Errorf("Failed to RemoveAll %s: %v", path, err) - _ = createNotice(e, NoticeTask, fmt.Sprintf("delete user '%s': %v", u.Name, err)) + _ = admin_model.CreateNoticeCtx(ctx, admin_model.NoticeTask, fmt.Sprintf("delete user '%s': %v", u.Name, err)) return err } @@ -1312,7 +1314,7 @@ func deleteUser(e db.Engine, u *User) error { avatarPath := u.CustomAvatarRelativePath() if err = storage.Avatars.Delete(avatarPath); err != nil { err = fmt.Errorf("Failed to remove %s: %v", avatarPath, err) - _ = createNotice(e, NoticeTask, fmt.Sprintf("delete user '%s': %v", u.Name, err)) + _ = admin_model.CreateNoticeCtx(ctx, admin_model.NoticeTask, fmt.Sprintf("delete user '%s': %v", u.Name, err)) return err } } @@ -1328,18 +1330,18 @@ func DeleteUser(u *User) (err error) { return fmt.Errorf("%s is an organization not a user", u.Name) } - sess := db.NewSession(db.DefaultContext) - defer sess.Close() - if err = sess.Begin(); err != nil { + ctx, committer, err := db.TxContext() + if err != nil { return err } + defer committer.Close() - if err = deleteUser(sess, u); err != nil { + if err = deleteUser(ctx, u); err != nil { // Note: don't wrapper error here. return err } - return sess.Commit() + return committer.Commit() } // DeleteInactiveUsers deletes all inactive users and email addresses. @@ -1825,3 +1827,16 @@ func GetUserByOpenID(uri string) (*User, error) { return nil, ErrUserNotExist{0, uri, 0} } + +// GetAdminUser returns the first administrator +func GetAdminUser() (*User, error) { + var admin User + has, err := db.GetEngine(db.DefaultContext).Where("is_admin=?", true).Get(&admin) + if err != nil { + return nil, err + } else if !has { + return nil, ErrUserNotExist{} + } + + return &admin, nil +} diff --git a/modules/repository/check.go b/modules/repository/check.go index 1857242f50..36bd4e2e0d 100644 --- a/modules/repository/check.go +++ b/modules/repository/check.go @@ -11,6 +11,7 @@ import ( "time" "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" @@ -38,7 +39,7 @@ func GitFsck(ctx context.Context, timeout time.Duration, args []string) error { repoPath := repo.RepoPath() if err := git.Fsck(ctx, repoPath, timeout, args...); err != nil { log.Warn("Failed to health check repository (%v): %v", repo, err) - if err = models.CreateRepositoryNotice("Failed to health check repository (%s): %v", repo.FullName(), err); err != nil { + if err = admin_model.CreateRepositoryNotice("Failed to health check repository (%s): %v", repo.FullName(), err); err != nil { log.Error("CreateRepositoryNotice: %v", err) } } @@ -87,7 +88,7 @@ func GitGcRepos(ctx context.Context, timeout time.Duration, args ...string) erro if err != nil { log.Error("Repository garbage collection failed for %v. Stdout: %s\nError: %v", repo, stdout, err) desc := fmt.Sprintf("Repository garbage collection failed for %s. Stdout: %s\nError: %v", repo.RepoPath(), stdout, err) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return fmt.Errorf("Repository garbage collection failed in repo: %s: Error: %v", repo.FullName(), err) @@ -97,7 +98,7 @@ func GitGcRepos(ctx context.Context, timeout time.Duration, args ...string) erro if err := repo.UpdateSize(db.DefaultContext); err != nil { log.Error("Updating size as part of garbage collection failed for %v. Stdout: %s\nError: %v", repo, stdout, err) desc := fmt.Sprintf("Updating size as part of garbage collection failed for %s. Stdout: %s\nError: %v", repo.RepoPath(), stdout, err) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return fmt.Errorf("Updating size as part of garbage collection failed in repo: %s: Error: %v", repo.FullName(), err) @@ -139,7 +140,7 @@ func gatherMissingRepoRecords(ctx context.Context) ([]*models.Repository, error) if strings.HasPrefix(err.Error(), "Aborted gathering missing repo") { return nil, err } - if err2 := models.CreateRepositoryNotice("gatherMissingRepoRecords: %v", err); err2 != nil { + if err2 := admin_model.CreateRepositoryNotice("gatherMissingRepoRecords: %v", err); err2 != nil { log.Error("CreateRepositoryNotice: %v", err2) } return nil, err @@ -167,7 +168,7 @@ func DeleteMissingRepositories(ctx context.Context, doer *models.User) error { log.Trace("Deleting %d/%d...", repo.OwnerID, repo.ID) if err := models.DeleteRepository(doer, repo.OwnerID, repo.ID); err != nil { log.Error("Failed to DeleteRepository %s [%d]: Error: %v", repo.FullName(), repo.ID, err) - if err2 := models.CreateRepositoryNotice("Failed to DeleteRepository %s [%d]: Error: %v", repo.FullName(), repo.ID, err); err2 != nil { + if err2 := admin_model.CreateRepositoryNotice("Failed to DeleteRepository %s [%d]: Error: %v", repo.FullName(), repo.ID, err); err2 != nil { log.Error("CreateRepositoryNotice: %v", err) } } @@ -195,7 +196,7 @@ func ReinitMissingRepositories(ctx context.Context) error { log.Trace("Initializing %d/%d...", repo.OwnerID, repo.ID) if err := git.InitRepository(repo.RepoPath(), true); err != nil { log.Error("Unable (re)initialize repository %d at %s. Error: %v", repo.ID, repo.RepoPath(), err) - if err2 := models.CreateRepositoryNotice("InitRepository [%d]: %v", repo.ID, err); err2 != nil { + if err2 := admin_model.CreateRepositoryNotice("InitRepository [%d]: %v", repo.ID, err); err2 != nil { log.Error("CreateRepositoryNotice: %v", err2) } } diff --git a/routers/web/admin/notice.go b/routers/web/admin/notice.go index fab3aba533..3613f428ed 100644 --- a/routers/web/admin/notice.go +++ b/routers/web/admin/notice.go @@ -9,7 +9,7 @@ import ( "net/http" "strconv" - "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/modules/base" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/log" @@ -26,13 +26,13 @@ func Notices(ctx *context.Context) { ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminNotices"] = true - total := models.CountNotices() + total := admin_model.CountNotices() page := ctx.FormInt("page") if page <= 1 { page = 1 } - notices, err := models.Notices(page, setting.UI.Admin.NoticePagingNum) + notices, err := admin_model.Notices(page, setting.UI.Admin.NoticePagingNum) if err != nil { ctx.ServerError("Notices", err) return @@ -57,7 +57,7 @@ func DeleteNotices(ctx *context.Context) { } } - if err := models.DeleteNoticesByIDs(ids); err != nil { + if err := admin_model.DeleteNoticesByIDs(ids); err != nil { ctx.Flash.Error("DeleteNoticesByIDs: " + err.Error()) ctx.Status(500) } else { @@ -68,7 +68,7 @@ func DeleteNotices(ctx *context.Context) { // EmptyNotices delete all the notices func EmptyNotices(ctx *context.Context) { - if err := models.DeleteNotices(0, 0); err != nil { + if err := admin_model.DeleteNotices(0, 0); err != nil { ctx.ServerError("DeleteNotices", err) return } diff --git a/routers/web/repo/middlewares.go b/routers/web/repo/middlewares.go index 2505443504..a5d478dd73 100644 --- a/routers/web/repo/middlewares.go +++ b/routers/web/repo/middlewares.go @@ -7,7 +7,7 @@ package repo import ( "fmt" - "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/git" ) @@ -23,7 +23,7 @@ func SetEditorconfigIfExists(ctx *context.Context) { if err != nil && !git.IsErrNotExist(err) { description := fmt.Sprintf("Error while getting .editorconfig file: %v", err) - if err := models.CreateRepositoryNotice(description); err != nil { + if err := admin_model.CreateRepositoryNotice(description); err != nil { ctx.ServerError("ErrCreatingReporitoryNotice", err) } return diff --git a/services/cron/tasks.go b/services/cron/tasks.go index 56c363e0b8..d29bf6d6bd 100644 --- a/services/cron/tasks.go +++ b/services/cron/tasks.go @@ -11,6 +11,7 @@ import ( "sync" "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/log" @@ -89,18 +90,18 @@ func (t *Task) RunWithUser(doer *models.User, config Config) { if err := t.fun(ctx, doer, config); err != nil { if db.IsErrCancelled(err) { message := err.(db.ErrCancelled).Message - if err := models.CreateNotice(models.NoticeTask, config.FormatMessage(t.Name, "aborted", doer, message)); err != nil { + if err := admin_model.CreateNotice(admin_model.NoticeTask, config.FormatMessage(t.Name, "aborted", doer, message)); err != nil { log.Error("CreateNotice: %v", err) } return } - if err := models.CreateNotice(models.NoticeTask, config.FormatMessage(t.Name, "error", doer, err)); err != nil { + if err := admin_model.CreateNotice(admin_model.NoticeTask, config.FormatMessage(t.Name, "error", doer, err)); err != nil { log.Error("CreateNotice: %v", err) } return } if config.DoNoticeOnSuccess() { - if err := models.CreateNotice(models.NoticeTask, config.FormatMessage(t.Name, "finished", doer)); err != nil { + if err := admin_model.CreateNotice(admin_model.NoticeTask, config.FormatMessage(t.Name, "finished", doer)); err != nil { log.Error("CreateNotice: %v", err) } } diff --git a/services/migrations/gitea_downloader.go b/services/migrations/gitea_downloader.go index 51ef0292df..00180adf41 100644 --- a/services/migrations/gitea_downloader.go +++ b/services/migrations/gitea_downloader.go @@ -15,7 +15,7 @@ import ( "strings" "time" - "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/modules/log" base "code.gitea.io/gitea/modules/migration" "code.gitea.io/gitea/modules/proxy" @@ -417,7 +417,7 @@ func (g *GiteaDownloader) GetIssues(page, perPage int) ([]*base.Issue, bool, err reactions, err := g.getIssueReactions(issue.Index) if err != nil { log.Warn("Unable to load reactions during migrating issue #%d to %s/%s. Error: %v", issue.Index, g.repoOwner, g.repoName, err) - if err2 := models.CreateRepositoryNotice( + if err2 := admin_model.CreateRepositoryNotice( fmt.Sprintf("Unable to load reactions during migrating issue #%d to %s/%s. Error: %v", issue.Index, g.repoOwner, g.repoName, err)); err2 != nil { log.Error("create repository notice failed: ", err2) } @@ -479,7 +479,7 @@ func (g *GiteaDownloader) GetComments(opts base.GetCommentOptions) ([]*base.Comm reactions, err := g.getCommentReactions(comment.ID) if err != nil { log.Warn("Unable to load comment reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err) - if err2 := models.CreateRepositoryNotice( + if err2 := admin_model.CreateRepositoryNotice( fmt.Sprintf("Unable to load reactions during migrating issue #%d for comment %d to %s/%s. Error: %v", opts.Context.ForeignID(), comment.ID, g.repoOwner, g.repoName, err)); err2 != nil { log.Error("create repository notice failed: ", err2) } @@ -557,7 +557,7 @@ func (g *GiteaDownloader) GetPullRequests(page, perPage int) ([]*base.PullReques reactions, err := g.getIssueReactions(pr.Index) if err != nil { log.Warn("Unable to load reactions during migrating pull #%d to %s/%s. Error: %v", pr.Index, g.repoOwner, g.repoName, err) - if err2 := models.CreateRepositoryNotice( + if err2 := admin_model.CreateRepositoryNotice( fmt.Sprintf("Unable to load reactions during migrating pull #%d to %s/%s. Error: %v", pr.Index, g.repoOwner, g.repoName, err)); err2 != nil { log.Error("create repository notice failed: ", err2) } diff --git a/services/migrations/migrate.go b/services/migrations/migrate.go index 21be2d3b0d..e6d5e8e4cc 100644 --- a/services/migrations/migrate.go +++ b/services/migrations/migrate.go @@ -14,6 +14,7 @@ import ( "strings" "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/matchlist" base "code.gitea.io/gitea/modules/migration" @@ -122,7 +123,7 @@ func MigrateRepository(ctx context.Context, doer *models.User, ownerName string, if err1 := uploader.Rollback(); err1 != nil { log.Error("rollback failed: %v", err1) } - if err2 := models.CreateRepositoryNotice(fmt.Sprintf("Migrate repository from %s failed: %v", opts.OriginalURL, err)); err2 != nil { + if err2 := admin_model.CreateRepositoryNotice(fmt.Sprintf("Migrate repository from %s failed: %v", opts.OriginalURL, err)); err2 != nil { log.Error("create respotiry notice failed: ", err2) } return nil, err diff --git a/services/mirror/mirror_pull.go b/services/mirror/mirror_pull.go index 84644145f7..67eaa61c9c 100644 --- a/services/mirror/mirror_pull.go +++ b/services/mirror/mirror_pull.go @@ -11,6 +11,7 @@ import ( "time" "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/db" "code.gitea.io/gitea/modules/cache" "code.gitea.io/gitea/modules/git" @@ -170,7 +171,7 @@ func pruneBrokenReferences(ctx context.Context, log.Error("Failed to prune mirror repository %s%-v references:\nStdout: %s\nStderr: %s\nErr: %v", wiki, m.Repo, stdoutMessage, stderrMessage, pruneErr) desc := fmt.Sprintf("Failed to prune mirror repository %s'%s' references: %s", wiki, repoPath, stderrMessage) - if err := models.CreateRepositoryNotice(desc); err != nil { + if err := admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } // this if will only be reached on a successful prune so try to get the mirror again @@ -239,7 +240,7 @@ func runSync(ctx context.Context, m *models.Mirror) ([]*mirrorSyncResult, bool) if err != nil { log.Error("Failed to update mirror repository %-v:\nStdout: %s\nStderr: %s\nErr: %v", m.Repo, stdoutMessage, stderrMessage, err) desc := fmt.Sprintf("Failed to update mirror repository '%s': %s", repoPath, stderrMessage) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return nil, false @@ -323,7 +324,7 @@ func runSync(ctx context.Context, m *models.Mirror) ([]*mirrorSyncResult, bool) if err != nil { log.Error("Failed to update mirror repository wiki %-v:\nStdout: %s\nStderr: %s\nErr: %v", m.Repo, stdoutMessage, stderrMessage, err) desc := fmt.Sprintf("Failed to update mirror repository wiki '%s': %s", wikiPath, stderrMessage) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return nil, false @@ -524,7 +525,7 @@ func checkAndUpdateEmptyRepository(m *models.Mirror, gitRepo *git.Repository, re if !git.IsErrUnsupportedVersion(err) { log.Error("Failed to update default branch of underlying git repository %-v. Error: %v", m.Repo, err) desc := fmt.Sprintf("Failed to uupdate default branch of underlying git repository '%s': %v", m.Repo.RepoPath(), err) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return false @@ -535,7 +536,7 @@ func checkAndUpdateEmptyRepository(m *models.Mirror, gitRepo *git.Repository, re if err := models.UpdateRepositoryCols(m.Repo, "default_branch", "is_empty"); err != nil { log.Error("Failed to update default branch of repository %-v. Error: %v", m.Repo, err) desc := fmt.Sprintf("Failed to uupdate default branch of repository '%s': %v", m.Repo.RepoPath(), err) - if err = models.CreateRepositoryNotice(desc); err != nil { + if err = admin_model.CreateRepositoryNotice(desc); err != nil { log.Error("CreateRepositoryNotice: %v", err) } return false diff --git a/services/wiki/wiki.go b/services/wiki/wiki.go index 9d57ac432f..2db982a50f 100644 --- a/services/wiki/wiki.go +++ b/services/wiki/wiki.go @@ -12,6 +12,7 @@ import ( "strings" "code.gitea.io/gitea/models" + admin_model "code.gitea.io/gitea/models/admin" "code.gitea.io/gitea/models/unit" "code.gitea.io/gitea/modules/git" "code.gitea.io/gitea/modules/log" @@ -374,6 +375,6 @@ func DeleteWiki(repo *models.Repository) error { return err } - models.RemoveAllWithNotice("Delete repository wiki", repo.WikiPath()) + admin_model.RemoveAllWithNotice("Delete repository wiki", repo.WikiPath()) return nil }