Add a new cron task which deletes the old system notices.tags/v1.18.0-dev
@@ -2018,6 +2018,19 @@ PATH = | |||
;SCHEDULE = @every 168h | |||
;HTTP_ENDPOINT = https://dl.gitea.io/gitea/version.json | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; Delete all old system notices from database | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;[cron.delete_old_system_notices] | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;ENABLED = false | |||
;RUN_AT_START = false | |||
;NO_SUCCESS_NOTICE = false | |||
;SCHEDULE = @every 168h | |||
;OLDER_THAN = 8760h | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
;; Git Operation timeout in seconds |
@@ -921,6 +921,13 @@ Default templates for project boards: | |||
- `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. | |||
- `HTTP_ENDPOINT`: **https://dl.gitea.io/gitea/version.json**: the endpoint that Gitea will check for newer versions | |||
#### Cron - Delete all old system notices from database ('cron.delete_old_system_notices') | |||
- `ENABLED`: **false**: Enable service. | |||
- `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). | |||
- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. | |||
- `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. | |||
- `OLDER_THAN`: **@every 8760h**: any system notice older than this expression will be deleted from database. | |||
## Git (`git`) | |||
- `PATH`: **""**: The path of Git executable. If empty, Gitea searches through the PATH environment. |
@@ -7,6 +7,7 @@ package admin | |||
import ( | |||
"context" | |||
"fmt" | |||
"time" | |||
"code.gitea.io/gitea/models/db" | |||
"code.gitea.io/gitea/modules/log" | |||
@@ -133,3 +134,13 @@ func DeleteNoticesByIDs(ids []int64) error { | |||
Delete(new(Notice)) | |||
return err | |||
} | |||
// DeleteOldSystemNotices deletes all old system notices from database. | |||
func DeleteOldSystemNotices(olderThan time.Duration) (err error) { | |||
if olderThan <= 0 { | |||
return nil | |||
} | |||
_, err = db.GetEngine(db.DefaultContext).Where("created_unix < ?", time.Now().Add(-olderThan).Unix()).Delete(&Notice{}) | |||
return | |||
} |
@@ -2463,6 +2463,7 @@ dashboard.gc_times = GC Times | |||
dashboard.delete_old_actions = Delete all old actions from database | |||
dashboard.delete_old_actions.started = Delete all old actions from database started. | |||
dashboard.update_checker = Update checker | |||
dashboard.delete_old_system_notices = Delete all old system notices from database | |||
users.user_manage_panel = User Account Management | |||
users.new_account = Create User Account |
@@ -9,6 +9,7 @@ import ( | |||
"time" | |||
"code.gitea.io/gitea/models" | |||
"code.gitea.io/gitea/models/admin" | |||
asymkey_model "code.gitea.io/gitea/models/asymkey" | |||
user_model "code.gitea.io/gitea/models/user" | |||
"code.gitea.io/gitea/modules/setting" | |||
@@ -154,6 +155,20 @@ func registerUpdateGiteaChecker() { | |||
}) | |||
} | |||
func registerDeleteOldSystemNotices() { | |||
RegisterTaskFatal("delete_old_system_notices", &OlderThanConfig{ | |||
BaseConfig: BaseConfig{ | |||
Enabled: false, | |||
RunAtStart: false, | |||
Schedule: "@every 168h", | |||
}, | |||
OlderThan: 365 * 24 * time.Hour, | |||
}, func(ctx context.Context, _ *user_model.User, config Config) error { | |||
olderThanConfig := config.(*OlderThanConfig) | |||
return admin.DeleteOldSystemNotices(olderThanConfig.OlderThan) | |||
}) | |||
} | |||
func initExtendedTasks() { | |||
registerDeleteInactiveUsers() | |||
registerDeleteRepositoryArchives() | |||
@@ -166,4 +181,5 @@ func initExtendedTasks() { | |||
registerRemoveRandomAvatars() | |||
registerDeleteOldActions() | |||
registerUpdateGiteaChecker() | |||
registerDeleteOldSystemNotices() | |||
} |