'Process action ``self`` on the ``records`` that have not been done yet.'

def _process(self, records):

    action_done = self._context['__action_done']
    records_done = action_done.get(self, records.browse())
    records -= records_done
    if (not records):
        return
    action_done = dict(action_done)
    action_done[self] = (records_done + records)
    self = self.with_context(__action_done=action_done)
    records = records.with_context(__action_done=action_done)
    values = {}
    if ('date_action_last' in records._fields):
        values['date_action_last'] = fields.Datetime.now()
    if (self.act_user_id and ('user_id' in records._fields)):
        values['user_id'] = self.act_user_id.id
    if values:
        records.write(values)
    if (self.act_followers and hasattr(records, 'message_subscribe')):
        followers = self.env['mail.followers'].sudo().search([('res_model', '=', records._name), ('res_id', 'in', records.ids), ('partner_id', 'in', self.act_followers.ids)])
        if (not (len(followers) == len(self.act_followers))):
            records.message_subscribe(self.act_followers.ids)
    if self.server_action_ids:
        for record in records:
            ctx = {'active_model': record._name, 'active_ids': record.ids, 'active_id': record.id}
            self.server_action_ids.with_context(**ctx).run()
