mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-23 00:01:45 -04:00
Compare commits
4 Commits
4c67c05480
...
81d233d987
Author | SHA1 | Date | |
---|---|---|---|
|
81d233d987 | ||
|
2f56ab7999 | ||
|
61d3d9205b | ||
|
28e3d0b0d3 |
2
Makefile
2
Makefile
@ -922,7 +922,7 @@ node_modules: package-lock.json
|
|||||||
@touch node_modules
|
@touch node_modules
|
||||||
|
|
||||||
.venv: poetry.lock
|
.venv: poetry.lock
|
||||||
poetry install
|
poetry install --no-root
|
||||||
@touch .venv
|
@touch .venv
|
||||||
|
|
||||||
.PHONY: update
|
.PHONY: update
|
||||||
|
@ -266,3 +266,27 @@ func CreateRunner(ctx context.Context, t *ActionRunner) error {
|
|||||||
_, err := db.GetEngine(ctx).Insert(t)
|
_, err := db.GetEngine(ctx).Insert(t)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CountRunnersWithoutBelongingOwner(ctx context.Context) (int64, error) {
|
||||||
|
// Only affect action runners were a owner ID is set, as actions runners
|
||||||
|
// could also be created on a repository.
|
||||||
|
return db.GetEngine(ctx).Table("action_runner").
|
||||||
|
Join("LEFT", "user", "`action_runner`.owner_id = `user`.id").
|
||||||
|
Where("`action_runner`.owner_id != ?", 0).
|
||||||
|
And(builder.IsNull{"`user`.id"}).
|
||||||
|
Count(new(ActionRunner))
|
||||||
|
}
|
||||||
|
|
||||||
|
func FixRunnersWithoutBelongingOwner(ctx context.Context) (int64, error) {
|
||||||
|
subQuery := builder.Select("`action_runner`.id").
|
||||||
|
From("`action_runner`").
|
||||||
|
Join("LEFT", "user", "`action_runner`.owner_id = `user`.id").
|
||||||
|
Where(builder.Neq{"`action_runner`.owner_id": 0}).
|
||||||
|
And(builder.IsNull{"`user`.id"})
|
||||||
|
b := builder.Delete(builder.In("id", subQuery)).From("`action_runner`")
|
||||||
|
res, err := db.GetEngine(ctx).Exec(b)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
return res.RowsAffected()
|
||||||
|
}
|
||||||
|
@ -898,6 +898,16 @@ func DeleteReview(ctx context.Context, r *Review) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opts = FindCommentsOptions{
|
||||||
|
Type: CommentTypeDismissReview,
|
||||||
|
IssueID: r.IssueID,
|
||||||
|
ReviewID: r.ID,
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, err := sess.Where(opts.ToConds()).Delete(new(Comment)); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := sess.ID(r.ID).Delete(new(Review)); err != nil {
|
if _, err := sess.ID(r.ID).Delete(new(Review)); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import (
|
|||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
|
repo_model "code.gitea.io/gitea/models/repo"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
|
||||||
@ -258,3 +259,32 @@ func TestDeleteReview(t *testing.T) {
|
|||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
assert.True(t, review1.Official)
|
assert.True(t, review1.Official)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDeleteDismissedReview(t *testing.T) {
|
||||||
|
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: 2})
|
||||||
|
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 1})
|
||||||
|
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: issue.RepoID})
|
||||||
|
review, err := issues_model.CreateReview(db.DefaultContext, issues_model.CreateReviewOptions{
|
||||||
|
Content: "reject",
|
||||||
|
Type: issues_model.ReviewTypeReject,
|
||||||
|
Official: false,
|
||||||
|
Issue: issue,
|
||||||
|
Reviewer: user,
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NoError(t, issues_model.DismissReview(db.DefaultContext, review, true))
|
||||||
|
comment, err := issues_model.CreateComment(db.DefaultContext, &issues_model.CreateCommentOptions{
|
||||||
|
Type: issues_model.CommentTypeDismissReview,
|
||||||
|
Doer: user,
|
||||||
|
Repo: repo,
|
||||||
|
Issue: issue,
|
||||||
|
ReviewID: review.ID,
|
||||||
|
Content: "dismiss",
|
||||||
|
})
|
||||||
|
assert.NoError(t, err)
|
||||||
|
unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{ID: comment.ID})
|
||||||
|
assert.NoError(t, issues_model.DeleteReview(db.DefaultContext, review))
|
||||||
|
unittest.AssertNotExistsBean(t, &issues_model.Comment{ID: comment.ID})
|
||||||
|
}
|
||||||
|
@ -6,6 +6,7 @@ package doctor
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
|
actions_model "code.gitea.io/gitea/models/actions"
|
||||||
activities_model "code.gitea.io/gitea/models/activities"
|
activities_model "code.gitea.io/gitea/models/activities"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
@ -151,6 +152,12 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er
|
|||||||
Fixer: activities_model.FixActionCreatedUnixString,
|
Fixer: activities_model.FixActionCreatedUnixString,
|
||||||
FixedMessage: "Set to zero",
|
FixedMessage: "Set to zero",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
Name: "Action Runners without existing owner",
|
||||||
|
Counter: actions_model.CountRunnersWithoutBelongingOwner,
|
||||||
|
Fixer: actions_model.FixRunnersWithoutBelongingOwner,
|
||||||
|
FixedMessage: "Removed",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: function to recalc all counters
|
// TODO: function to recalc all counters
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
_ "image/jpeg" // Needed for jpeg support
|
_ "image/jpeg" // Needed for jpeg support
|
||||||
|
|
||||||
|
actions_model "code.gitea.io/gitea/models/actions"
|
||||||
activities_model "code.gitea.io/gitea/models/activities"
|
activities_model "code.gitea.io/gitea/models/activities"
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
auth_model "code.gitea.io/gitea/models/auth"
|
auth_model "code.gitea.io/gitea/models/auth"
|
||||||
@ -90,6 +91,7 @@ func deleteUser(ctx context.Context, u *user_model.User, purge bool) (err error)
|
|||||||
&pull_model.AutoMerge{DoerID: u.ID},
|
&pull_model.AutoMerge{DoerID: u.ID},
|
||||||
&pull_model.ReviewState{UserID: u.ID},
|
&pull_model.ReviewState{UserID: u.ID},
|
||||||
&user_model.Redirect{RedirectUserID: u.ID},
|
&user_model.Redirect{RedirectUserID: u.ID},
|
||||||
|
&actions_model.ActionRunner{OwnerID: u.ID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("deleteBeans: %w", err)
|
return fmt.Errorf("deleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
{{if not .DiffNotAvailable}}
|
{{if not .DiffNotAvailable}}
|
||||||
{{if and .IsShowingOnlySingleCommit .PageIsPullFiles}}
|
{{if and .IsShowingOnlySingleCommit .PageIsPullFiles}}
|
||||||
<div class="ui info message">
|
<div class="ui info message">
|
||||||
<div>{{ctx.Locale.Tr "repo.pulls.showing_only_single_commit" (ShortSha .BeforeCommitID)}} - <a href="{{$.Issue.Link}}/files?style={{if $.IsSplitStyle}}split{{else}}unified{{end}}&whitespace={{$.WhitespaceBehavior}}&show-outdated={{$.ShowOutdatedComments}}">{{ctx.Locale.Tr "repo.pulls.show_all_commits"}}</a></div>
|
<div>{{ctx.Locale.Tr "repo.pulls.showing_only_single_commit" (ShortSha .AfterCommitID)}} - <a href="{{$.Issue.Link}}/files?style={{if $.IsSplitStyle}}split{{else}}unified{{end}}&whitespace={{$.WhitespaceBehavior}}&show-outdated={{$.ShowOutdatedComments}}">{{ctx.Locale.Tr "repo.pulls.show_all_commits"}}</a></div>
|
||||||
</div>
|
</div>
|
||||||
{{else if and (not .IsShowingAllCommits) .PageIsPullFiles}}
|
{{else if and (not .IsShowingAllCommits) .PageIsPullFiles}}
|
||||||
<div class="ui info message">
|
<div class="ui info message">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user