'Chatter override :
- subscribe uid
- subscribe followers of parent
- log a creation message'

@api.model
def create(self, values):

    if self._context.get('tracking_disable'):
        return super(MailThread, self).create(values)
    if (not self._context.get('mail_create_nosubscribe')):
        message_follower_ids = (values.get('message_follower_ids') or [])
        message_follower_ids += self.env['mail.followers']._add_follower_command(self._name, [], {self.env.user.partner_id.id: None}, {}, force=True)[0]
        values['message_follower_ids'] = message_follower_ids
    thread = super(MailThread, self).create(values)
    if (not self._context.get('mail_create_nolog')):
        doc_name = self.env['ir.model'].search([('model', '=', self._name)]).read(['name'])[0]['name']
        thread.message_post(body=(_('%s    created') % doc_name))
    create_values = dict(values)
    for (key, val) in self._context.iteritems():
        if (key.startswith('default_') and (key[8:] not in create_values)):
            create_values[key[8:]] = val
    thread.message_auto_subscribe(create_values.keys(), values=create_values)
    if (not self._context.get('mail_notrack')):
        if ('lang' not in self._context):
            track_thread = thread.with_context(lang=self.env.user.lang)
        else:
            track_thread = thread
        tracked_fields = track_thread._get_tracked_fields(values.keys())
        if tracked_fields:
            initial_values = {thread.id: dict.fromkeys(tracked_fields, False)}
            track_thread.message_track(tracked_fields, initial_values)
    return thread
