35 lines
1.2 KiB
Python
35 lines
1.2 KiB
Python
# Copyright 2016 ABF OSIELL <https://osiell.com>
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
|
|
import logging
|
|
from datetime import datetime, timedelta
|
|
|
|
from odoo import api, fields, models
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class AuditlogAutovacuum(models.TransientModel):
|
|
_name = "auditlog.autovacuum"
|
|
_description = "Auditlog - Delete old logs"
|
|
|
|
@api.model
|
|
def autovacuum(self, days):
|
|
"""Delete all logs older than ``days``. This includes:
|
|
- CRUD logs (create, read, write, unlink)
|
|
- HTTP requests
|
|
- HTTP user sessions
|
|
|
|
Called from a cron.
|
|
"""
|
|
days = (days > 0) and int(days) or 0
|
|
deadline = datetime.now() - timedelta(days=days)
|
|
data_models = ("auditlog.log", "auditlog.http.request", "auditlog.http.session")
|
|
for data_model in data_models:
|
|
records = self.env[data_model].search(
|
|
[("create_date", "<=", fields.Datetime.to_string(deadline))]
|
|
)
|
|
nb_records = len(records)
|
|
records.unlink()
|
|
_logger.info("AUTOVACUUM - %s '%s' records deleted", nb_records, data_model)
|
|
return True
|