From a321963d192a049671864404bfaee5a0ccf9b4e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Debauche=20St=C3=A9phane?= Date: Tue, 12 Nov 2019 09:16:52 +0000 Subject: [PATCH] [IMP] event: add a cron that clean the event pipeline The cron will move every ended events in the next "ended stage" We inherit from `ir.autovacuum`, so the method `power_on` is called one time per day. Task #2088538 --- addons/event/models/__init__.py | 1 + addons/event/models/ir_autovacuum.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 addons/event/models/ir_autovacuum.py diff --git a/addons/event/models/__init__.py b/addons/event/models/__init__.py index 4d521dddd92..750d7b5de79 100644 --- a/addons/event/models/__init__.py +++ b/addons/event/models/__init__.py @@ -6,3 +6,4 @@ from . import event_mail from . import event_stage from . import res_config_settings from . import res_partner +from . import ir_autovacuum diff --git a/addons/event/models/ir_autovacuum.py b/addons/event/models/ir_autovacuum.py new file mode 100644 index 00000000000..d58a788e6c8 --- /dev/null +++ b/addons/event/models/ir_autovacuum.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo import api, models, fields + + +class AutoVacuum(models.AbstractModel): + _inherit = 'ir.autovacuum' + + @api.model + def power_on(self, *args, **kwargs): + """ + Cron which drags all events which end date is < now (= passed) + into the first next (by sequence) stage defined as "Ended" + (if they are not already in an ended stage) + """ + ended_events = self.env['event.event'].search([('date_end', '<', fields.Datetime.now()), ('stage_id.pipe_end', '=', False)]) + + if ended_events: + ended_events.action_set_done() + + return super(AutoVacuum, self).power_on(*args, **kwargs)