'Helper method to send a mail / post a message using a view_id to
render using the ir.qweb engine. This method is stand alone, because
there is nothing in template and composer that allows to handle
views in batch. This method should probably disappear when templates
handle ir ui views.'

@api.multi
def message_post_with_view(self, views_or_xmlid, **kwargs):

    values = (kwargs.pop('values', None) or dict())
    try:
        from odoo.addons.website.models.website import slug
        values['slug'] = slug
    except ImportError:
        values['slug'] = (lambda self: self.id)
    if isinstance(views_or_xmlid, basestring):
        views = self.env.ref(views_or_xmlid, raise_if_not_found=False)
    else:
        views = views_or_xmlid
    if (not views):
        return
    for record in self:
        values['object'] = record
        rendered_template = views.render(values, engine='ir.qweb')
        kwargs['body'] = rendered_template
        record.message_post_with_template(False, **kwargs)
