From ba905c51ba917cb4e2bab5f52215a76f13a2f79a Mon Sep 17 00:00:00 2001 From: Jordi Ballester Alomar Date: Tue, 11 Jun 2019 16:42:58 +0200 Subject: [PATCH] [mail_activity_done] set activities as inactive when they have been completed. --- mail_activity_done/__manifest__.py | 2 +- mail_activity_done/hooks.py | 1 + .../migrations/12.0.2.0.0/post-migration.py | 12 +++++++++++ mail_activity_done/models/mail_activity.py | 9 ++++++++ .../views/mail_activity_views.xml | 21 +++++++++---------- 5 files changed, 33 insertions(+), 12 deletions(-) create mode 100644 mail_activity_done/migrations/12.0.2.0.0/post-migration.py diff --git a/mail_activity_done/__manifest__.py b/mail_activity_done/__manifest__.py index 8ea8d24a..3f52695d 100644 --- a/mail_activity_done/__manifest__.py +++ b/mail_activity_done/__manifest__.py @@ -2,7 +2,7 @@ # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). { "name": "Mail Activity Done", - "version": "12.0.1.2.0", + "version": "12.0.2.0.0", "author": "Eficent," "Odoo Community Association (OCA)", "license": "LGPL-3", diff --git a/mail_activity_done/hooks.py b/mail_activity_done/hooks.py index 7528dd0f..ebc5a575 100644 --- a/mail_activity_done/hooks.py +++ b/mail_activity_done/hooks.py @@ -39,6 +39,7 @@ def post_load_hook(): for activity in self: record = self.env[activity.res_model].browse(activity.res_id) activity.done = True + activity.active = False activity.date_done = fields.Date.today() record.message_post_with_view( 'mail.message_activity_done', diff --git a/mail_activity_done/migrations/12.0.2.0.0/post-migration.py b/mail_activity_done/migrations/12.0.2.0.0/post-migration.py new file mode 100644 index 00000000..b163a08a --- /dev/null +++ b/mail_activity_done/migrations/12.0.2.0.0/post-migration.py @@ -0,0 +1,12 @@ +# Copyright 2019 Eficent +# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html). + + +def migrate(cr, version): + if not version: + return + cr.execute(""" + UPDATE mail_activity SET + active = False + WHERE done=True; + """) diff --git a/mail_activity_done/models/mail_activity.py b/mail_activity_done/models/mail_activity.py index c91e9003..593a3571 100644 --- a/mail_activity_done/models/mail_activity.py +++ b/mail_activity_done/models/mail_activity.py @@ -7,6 +7,7 @@ class MailActivity(models.Model): _inherit = 'mail.activity' + active = fields.Boolean(default=True) done = fields.Boolean(default=False) state = fields.Selection(selection_add=[ ('done', 'Done')], compute='_compute_state') @@ -19,3 +20,11 @@ class MailActivity(models.Model): super(MailActivity, self)._compute_state() for record in self.filtered(lambda activity: activity.done): record.state = 'done' + + +class MailActivityMixin(models.AbstractModel): + + _inherit = 'mail.activity.mixin' + activity_ids = fields.One2many( + domain=lambda self: [('res_model', '=', self._name), + ('active', '=', True)]) diff --git a/mail_activity_done/views/mail_activity_views.xml b/mail_activity_done/views/mail_activity_views.xml index 3a8e061a..ee095c2b 100644 --- a/mail_activity_done/views/mail_activity_views.xml +++ b/mail_activity_done/views/mail_activity_views.xml @@ -27,19 +27,18 @@ - + + domain="[('active', '=', False), ('state', '=', 'done')]"/> - [('date_deadline', '<', context_today().strftime('%Y-%m-%d')), ('done', '!=', True)] + [('date_deadline', '<', context_today().strftime('%Y-%m-%d'))] - [('date_deadline', '=', context_today().strftime('%Y-%m-%d')), ('done', '!=', True)] + [('date_deadline', '=', context_today().strftime('%Y-%m-%d'))] - [('date_deadline', '>', context_today().strftime('%Y-%m-%d')), ('done', '!=', True)] + [('date_deadline', '>', context_today().strftime('%Y-%m-%d'))] @@ -51,18 +50,18 @@ + domain="[('activity_ids.active', '=', True)]"/> + domain="[('activity_ids.active', '=', False), ('activity_ids.state', '=', 'done')]"/> - [('activity_ids.date_deadline', '<', context_today().strftime('%Y-%m-%d')), ('activity_ids.done', '!=', True)] + [('activity_ids.date_deadline', '<', context_today().strftime('%Y-%m-%d'))] - [('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d')), ('activity_ids.done', '!=', True)] + [('activity_ids.date_deadline', '=', context_today().strftime('%Y-%m-%d'))] - [('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d')), ('activity_ids.done', '!=', True)] + [('activity_ids.date_deadline', '>', context_today().strftime('%Y-%m-%d'))]