I'm trying to add a function to message in Inbox - send message to lead.
Ok, I've made like it is made by Odoo("dive into"): added a button near to "Mark as read"
/addons/mail/static/src/xml/thread.xml: added new with
class="fa fa-book o_thread_icon o_thread_message_message_to_lead"
then in
/addons/mail/static/src/js/thread.js
/addons/mail/static/src/js/client_action.js
/addons/mail/static/src/js/chat_manager.js
i've duplicated "mark_as_read" functions and replaced function name.
in addons/mail/models/mail_message.py
added my function
So, it works! But I didn't find a way to pack it to a custom module: odoo reads /addons/mail/static/src/xml/thread.xml direct from the source and do not store it in DB. Ok, it is no problem, to add this line to one file, but how can I make it without js-modifying?
I've tried to put link or button there, but didn't find a way to make it like <record id="message_to_lead" model="ir.actions.server">..</record>
Can someone help me to find a way to make action-button for message, that calls a function in mail.message model?
Example, how it looks like: https://i.stack.imgur.com/Qo03f.png
first of all js is the better way and i also did a customization like this. another way is using a link and its in controller you treat the url, but you should pass the proper data to manipulate. form the controller you can do call the functions.
Thank you.
So, probably, you can help me in next question:
i've made a controller in module like:
`
@http.route('/mail/message_to_lead/<model("mail.message"):message_id>', type='http', auth='user')
def message_to_lead(self, message_id, res_id=None, access_token=None, **kwargs):
if message_id:
try:
message = http.request.env['mail.message'].sudo().browse(int(message_id)).exists()
except:
message = http.request.env['mail.message']
if message:
z = message.message_to_lead()
...
`
function is stored in module too:
`
class Message(models.Model):
_name = 'message_to_lead'
_inherit = 'mail.message'
@api.one
def message_to_lead(self):
...
`
Import is ok.
But I can't acces this function from a controller:
AttributeError: 'mail.message' object has no attribute 'message_to_lead'
What's wrong with it?