Как я могу использовать фильтр домена с функцией, чтобы скрыть строки в древовидной структуре в odoo 9?

У меня есть модель животных, модель клетки и реляционная модель между пользователями (работниками) и клетками:cage_manager.py:

class animal(osv.osv):
    _name = 'animal'
    _columns = {
                'name': fields.char('Animal Name', size=100),
                'cage_id': fields.many2one('cage', required=True, ondelete='cascade', string="Cage")
                }


class cage(osv.osv):
    _name = 'cage'
    _columns = {
                'name': fields.char('Cage Name', size=100),
                'animals': fields.one2many('animal', 'cage_id', string="Animals"),
                'workers': fields.one2many('cage.user.relation', 'cage_id', string="Workers")
                }


class cage_user_relation(osv.osv):
    _name = 'cage.user.rel'
    _columns = {
                'cage_id': fields.many2one('cage', required=True, ondelete='cascade', string="Cage"),
                'user_id': fields.many2one('res.users', required=True, ondelete='cascade', string="Worker"),
                }

У меня есть это в cage_manager.xml:

<record id="view_cage_manager_tree" model="ir.ui.view">
    <field name="name">cage.tree</field>
    <field name="model">cage</field>
    <field name="type">tree</field>
    <field name="arch" type="xml">
        <tree string="cage_tree">
            <field name="name"/>
            <field name="animals"/>
            <field name="workers"/>
        </tree>
    </field>
</record>

Я хочу, чтобы каждый работник мог видеть только связанные с ним клетки. (Администратор может видеть каждую клетку)

Я хочу что-то вроде этого:

<record id='action_menu_cage_manager' model='ir.actions.act_window'>
    <field name="name">Cages Manager</field>
    <field name="res_model">cage</field>
    <field name="view_type">form</field>
    <field name="view_mode">tree,form</field>
    <field name="domain">[
        ('id', 'in', 'cages_of_current_worker()')
    ]</field>
</record>

Но я не знаю, как и где реализовать функцию cages_of_current_worker()

0 ответов

Другие вопросы по тегам