mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-09-20 19:06:58 +00:00
Add registerRemoveResolvedReports task
Added a first attempt at the registerRemoveResolvedReports task. Has an issue with the usage of ctx as in services/moderation/reporting, the services/context package is imported explictly while for other tasks in the tasks_extended module, it seems to be imported implicitly.
This commit is contained in:
parent
7a124fb0ce
commit
7d885406cf
2 changed files with 42 additions and 0 deletions
|
@ -15,6 +15,7 @@ import (
|
||||||
issue_indexer "forgejo.org/modules/indexer/issues"
|
issue_indexer "forgejo.org/modules/indexer/issues"
|
||||||
"forgejo.org/modules/setting"
|
"forgejo.org/modules/setting"
|
||||||
"forgejo.org/modules/updatechecker"
|
"forgejo.org/modules/updatechecker"
|
||||||
|
moderation_service "forgejo.org/services/moderation"
|
||||||
repo_service "forgejo.org/services/repository"
|
repo_service "forgejo.org/services/repository"
|
||||||
archiver_service "forgejo.org/services/repository/archiver"
|
archiver_service "forgejo.org/services/repository/archiver"
|
||||||
user_service "forgejo.org/services/user"
|
user_service "forgejo.org/services/user"
|
||||||
|
@ -225,6 +226,24 @@ func registerRebuildIssueIndexer() {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func registerRemoveResolvedReports() {
|
||||||
|
type ReportConfig struct {
|
||||||
|
BaseConfig
|
||||||
|
Timeout time.Duration
|
||||||
|
}
|
||||||
|
RegisterTaskFatal("remove_resolved_reports", &ReportConfig{
|
||||||
|
BaseConfig: BaseConfig{
|
||||||
|
Enabled: false,
|
||||||
|
RunAtStart: false,
|
||||||
|
Schedule: "@every 72h",
|
||||||
|
},
|
||||||
|
Timeout: time.Duration(setting.Moderation.RemoveResolvedReportsTimeout) * time.Second,
|
||||||
|
}, func(ctx context.Context, _ *user_model.User, config Config) error {
|
||||||
|
reportConfig := config.(*ReportConfig)
|
||||||
|
return moderation_service.RemoveResolvedReports(ctx, reportConfig.Timeout)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func initExtendedTasks() {
|
func initExtendedTasks() {
|
||||||
registerDeleteInactiveUsers()
|
registerDeleteInactiveUsers()
|
||||||
registerDeleteRepositoryArchives()
|
registerDeleteRepositoryArchives()
|
||||||
|
@ -240,4 +259,5 @@ func initExtendedTasks() {
|
||||||
registerDeleteOldSystemNotices()
|
registerDeleteOldSystemNotices()
|
||||||
registerGCLFS()
|
registerGCLFS()
|
||||||
registerRebuildIssueIndexer()
|
registerRebuildIssueIndexer()
|
||||||
|
registerRemoveResolvedReports()
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,9 @@ package moderation
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"forgejo.org/models/db"
|
||||||
"forgejo.org/models/issues"
|
"forgejo.org/models/issues"
|
||||||
"forgejo.org/models/moderation"
|
"forgejo.org/models/moderation"
|
||||||
"forgejo.org/models/perm"
|
"forgejo.org/models/perm"
|
||||||
|
@ -127,3 +129,23 @@ func CanReport(ctx context.Context, doer *user.User, contentType moderation.Repo
|
||||||
|
|
||||||
return hasAccess, nil
|
return hasAccess, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RemoveResolvedReports removes resolved reports
|
||||||
|
func RemoveResolvedReports(ctx context.Context, timeout time.Duration) error {
|
||||||
|
log.Trace("Doing: RemoveResolvedReports")
|
||||||
|
|
||||||
|
status := moderation.ReportStatusTypeHandled
|
||||||
|
resolvedReports, err := db.GetEngine(ctx).Table("abuse_report").Where("status = ?", status).Exist()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
} else if resolvedReports {
|
||||||
|
_, err := db.GetEngine(ctx).Table("abuse_report").Where("status = ?", status).Delete()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Trace("Finished: RemoveResolvedReports")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue