social/mail_activity_done/hooks.py
Jordi Ballester Alomar c017a4cbdb [11.0][mail_activity_done] add new module to keep activities that
have been completed.

fixup moment js

fixup
2022-01-19 12:35:50 +01:00

55 lines
1.8 KiB
Python

# Copyright 2018 Eficent Business and IT Consulting Services S.L.
# Copyright 2018 Odoo, S.A.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo.addons.mail.models.mail_activity import MailActivity
from odoo import fields
def pre_init_hook(cr):
""" The objective of this hook is to default to false all values of field
'done' of mail.activity
"""
cr.execute("""SELECT column_name
FROM information_schema.columns
WHERE table_name='mail_activity' AND
column_name='done'""")
if not cr.fetchone():
cr.execute(
"""
ALTER TABLE mail_activity ADD COLUMN done boolean;
""")
cr.execute(
"""
UPDATE mail_activity
SET done = False
"""
)
def post_load_hook():
def new_action_feedback(self, feedback=False):
if 'done' not in self._fields:
return self.action_feedback_original(feedback=feedback)
message = self.env['mail.message']
if feedback:
self.write(dict(feedback=feedback))
for activity in self:
record = self.env[activity.res_model].browse(activity.res_id)
activity.done = True
activity.date_done = fields.Date.today()
record.message_post_with_view(
'mail.message_activity_done',
values={'activity': activity},
subtype_id=self.env.ref('mail.mt_activities').id,
mail_activity_type_id=activity.activity_type_id.id,
)
message |= record.message_ids[0]
return message.ids and message.ids[0] or False
if not hasattr(MailActivity, 'action_feedback_original'):
MailActivity.action_feedback_original = MailActivity.action_feedback
MailActivity.action_feedback = new_action_feedback