Как получить текущего (зарегистрированного) пользователя в XML Odoo V11?

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

Я пытался использовать user.id в XML, но это не работает.

Вот мой код:

<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '!=', user.id)]}">
    <group>
        <group string='Status' name="active_group">
            <field name="company_id"/>
                <field name="user_id" string="Related User"/>
            </group>
        </group>
    </page>

Сообщение об ошибке:

<class 'NameError'>: "name 'user' is not defined" while evaluating

"{'invisible': [('user_id', '!=', user.id)]}"

None" while parsing /opt/odoo/odoo/my_addons/hr_dz/views/employee_views.xml:5, near

<record id="view_employee_form" model="ir.ui.view">

<field name="name">hr.employee.form</field>

Есть идеи по этому поводу, пожалуйста?


person M.Lamine Lalmi    schedule 22.02.2018    source источник


Ответы (2)


Одна из вещей, которые я знаю, чтобы использовать поле в attrs, поле должно быть упомянуто в форме. я не знаю, как получить значение идентификатора пользователя в форме. но если нет короткого пути, такого как uid или user, вы можете обойти это, просто создайте поле m2o для res.users, чтобы это поле вычисляло поле с store = False.

Пожалуйста, попробуйте это полезно для вас.:

# by default store = False this means the value of this field
# is always computed.
current_user = fields.Many2one('res.users', compute='_get_current_user')

@api.depends()
def _get_current_user(self):
    for rec in self:
        rec.current_user = self.env.user
    # i think this work too so you don't have to loop
    self.update({'current_user' : self.env.user.id})

и вы можете использовать это поле в своей форме.

<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '=', current_user)]}">
    <group>
        <group string='Status' name="active_group">
            <field name="company_id"/>
            <field name="user_id" string="Related User"/>
        </group>
    </group>
</page>
person Bhoomi Vaishnani    schedule 22.02.2018
comment
Эй, я новичок в Odoo, просто создайте поле m2o для res.users — какой файл python вы имели в виду? Более того, store=False - как вы это делаете? - person Pikesh Prasoon; 25.11.2018
comment
@PikeshPrasoon Что ты хочешь сделать? я не могу понять ваш вопрос. Можете ли вы описать меня больше, пожалуйста? - person Bhoomi Vaishnani; 02.12.2019

В вашем случае, в основном, мы можем достичь напрямую с глобальной переменной выражения uid на уровне представления.

uid также используется для оценки выражения в файле представления odoo xml.

<page name="hr_settings" string="HR Settings" attrs="{'invisible':[('user_id', '!=', uid)]}">
    <group>
        <group string='Status' name="active_group">
            <field name="company_id"/>
                <field name="user_id" string="Related User"/>
            </group>
        </group>
    </page>

Нет необходимости добавлять и создавать какое-либо вычислительное поле для кода.

См. следующий вид в надстройках Odoo V11.

дополнения/проект/project_view.xml.

person DASADIYA CHAITANYA    schedule 01.03.2018