[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"

pull/510/head
Günter Selbert 2020-03-05 08:57:54 +01:00
parent 842b2abacf
commit 8650155748
6 changed files with 75 additions and 2 deletions

View File

@ -25,5 +25,6 @@
'qweb': [
'static/src/xml/systray.xml',
'static/src/xml/activity.xml',
],
}

View File

@ -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

View File

@ -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

View File

@ -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",
)

View File

@ -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
)

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-extend="mail.activity_items">
<t t-jquery="t[t-esc='activity.user_id[1]']" t-operation="after">
<t t-if="activity.team_id and activity.user_id"> / </t>
<t t-if="activity.team_id" t-esc="activity.team_id[1]"/>
</t>
</t>
</templates>