Настройте имя фильтра в ODOO 10 - PullRequest
0 голосов
/ 20 февраля 2020

Я добавил динамический c фильтр на основе кода python, используя "ir.actions.server", вы можете найти хороший пример его использования в модуле проекта grep --include '*.xml' -insr 'ir.actions.server', и в результате вы получите: views/project_views.xml:295: <record id="activate_sample_project" model="ir.actions.server"> Я добавил функцию python, которая будет возвращать отфильтрованные записи на основе некоторых условий. см. мое XML объявление:

<record id="My_server_action" model="ir.actions.server">
<field name="name">Name of my server action</field>
<field name="model_id" ref="my_module.model_my_model"/>
<field name="code">
    action = model.my_python_code()
</field>
</record>

my_python_function вернет отфильтрованные записи, здесь мой python код:

@api.multi
@api.model
def my_python_function(self):
    context = self._context
    current_user = context.get('uid')
    if codition1 :
        records = self.env['my.module'].search([ 
        ('fields1', '=', val1)
        ])

        return {
            'type': 'ir.actions.act_window',
            'name': _('Customer name'),
            'res_model': 'my.module',
            'view_mode': 'tree,form,kanban,pivot,graph',
            'context': {'search_default_id': records.ids}
        }
    else codition2 :
        records = self.env['my.module'].search([ 
        ('fields2', '=', val2)
        ])

        return {
            'type': 'ir.actions.act_window',
            'name': _('Customer name'),
            'res_model': 'my.module',
            'view_mode': 'tree,form,kanban,pivot,graph',
            'context': {'search_default_id': records.ids}
        }

Проблема в названии фильтра, в нем будут отображаться идентификаторы отфильтрованный enter image description here

но если я использую другое поле в поиске по умолчанию, например: 'context': {'search_default_partner_id': self.partner_id.id}, это покажет мне имя партнера в качестве имени фильтра

любая помощь, спасибо заранее

...