From 8650155748aecf11c0f7098ddbcd8ee1e31c0edf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Selbert?= Date: Thu, 5 Mar 2020 08:57:54 +0100 Subject: [PATCH] [FIX][IMP] Avoid Error Message: "A follower must be either a partner or a channel...". Show team name on activities in the chatter. Rename field string "test field" --- mail_activity_team/__manifest__.py | 1 + mail_activity_team/models/__init__.py | 1 + mail_activity_team/models/mail_activity.py | 42 ++++++++++++++++++- .../models/mail_activity_mixin.py | 2 +- mail_activity_team/models/mail_thread.py | 20 +++++++++ .../static/src/xml/activity.xml | 11 +++++ 6 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 mail_activity_team/models/mail_thread.py create mode 100644 mail_activity_team/static/src/xml/activity.xml diff --git a/mail_activity_team/__manifest__.py b/mail_activity_team/__manifest__.py index 30db37183..b49431cde 100644 --- a/mail_activity_team/__manifest__.py +++ b/mail_activity_team/__manifest__.py @@ -25,5 +25,6 @@ 'qweb': [ 'static/src/xml/systray.xml', + 'static/src/xml/activity.xml', ], } diff --git a/mail_activity_team/models/__init__.py b/mail_activity_team/models/__init__.py index 3a4420b37..5a5859cff 100644 --- a/mail_activity_team/models/__init__.py +++ b/mail_activity_team/models/__init__.py @@ -3,3 +3,4 @@ from . import mail_activity from . import res_users from . import mail_activity_mixin from . import calendar_event +from . import mail_thread diff --git a/mail_activity_team/models/mail_activity.py b/mail_activity_team/models/mail_activity.py index 2c9f38e3d..b976793bf 100644 --- a/mail_activity_team/models/mail_activity.py +++ b/mail_activity_team/models/mail_activity.py @@ -38,7 +38,7 @@ class MailActivity(models.Model): if self.team_id and self.user_id in self.team_id.member_ids: return res self.team_id = self.with_context( - default_res_model=self.res_model_id.id).\ + default_res_model=self.res_model_id.id). \ _get_default_team_id(user_id=self.user_id.id) return res @@ -71,3 +71,43 @@ class MailActivity(models.Model): res = super().action_create_calendar_event() res['context']['default_team_id'] = self.team_id.id or False return res + + @api.model + def create(self, vals): + activity_user = super().create(vals) + if activity_user.team_id and not activity_user.user_id and \ + activity_user.date_deadline <= fields.Date.today(): + for partner_id in activity_user.team_id.mapped("member_ids.partner_id.id"): + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', partner_id), + {'type': 'activity_updated', 'activity_created': True} + ) + return activity_user + + @api.multi + def write(self, values): + self._check_access('write') + if values.get('team_id'): + pre_responsibles = { + activity: activity.team_id.mapped("member_ids.partner_id") + for activity in self + } + res = super(MailActivity, self.sudo()).write(values) + + if values.get('team_id'): + today = fields.Date.today() + for activity in self: + if activity.date_deadline <= today: + for partner in activity.team_id.member_ids.mapped("partner_id"): + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', partner.id), + {'type': 'activity_updated', 'activity_created': True} + ) + for activity in pre_responsibles: + if activity.date_deadline <= today: + for partner in pre_responsibles[activity]: + self.env['bus.bus'].sendone( + (self._cr.dbname, 'res.partner', partner.id), + {'type': 'activity_updated', 'activity_deleted': True} + ) + return res diff --git a/mail_activity_team/models/mail_activity_mixin.py b/mail_activity_team/models/mail_activity_mixin.py index 0c5035bba..1570eb4b2 100644 --- a/mail_activity_team/models/mail_activity_mixin.py +++ b/mail_activity_team/models/mail_activity_mixin.py @@ -7,7 +7,7 @@ class MailActivityMixin(models.AbstractModel): _inherit = 'mail.activity.mixin' activity_team_user_ids = fields.Many2many( - comodel_name='res.users', string='test field', + comodel_name='res.users', string='Responsible Members', compute="_compute_activity_team_user_ids", search="_search_activity_team_user_ids", ) diff --git a/mail_activity_team/models/mail_thread.py b/mail_activity_team/models/mail_thread.py new file mode 100644 index 000000000..ffb7b7150 --- /dev/null +++ b/mail_activity_team/models/mail_thread.py @@ -0,0 +1,20 @@ +# Copyright 2020 sewisoft, guenter.selbert +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +from odoo import api, models + + +class MailThread(models.AbstractModel): + _inherit = 'mail.thread' + + @api.multi + def message_subscribe(self, partner_ids=None, channel_ids=None, subtype_ids=None, + force=True): + """ filter none """ + if partner_ids: + partner_ids = [pid for pid in partner_ids if pid] + return super().message_subscribe( + partner_ids=partner_ids, + channel_ids=channel_ids, + subtype_ids=subtype_ids, + force=force + ) diff --git a/mail_activity_team/static/src/xml/activity.xml b/mail_activity_team/static/src/xml/activity.xml new file mode 100644 index 000000000..1106a685b --- /dev/null +++ b/mail_activity_team/static/src/xml/activity.xml @@ -0,0 +1,11 @@ + + + + + + / + + + + +