Как получить текущего (зарегистрированного) пользователя в 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>
Есть идеи об этом, пожалуйста?
2 ответа
Одна вещь, которую я знаю, чтобы использовать поле в атрибутах поля, должна быть упомянута в форме. я не знаю, как получить значение идентификатора пользователя в форме. но если нет такого короткого пути, как 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>
В основном, в вашем случае мы можем добиться этого с помощью переменной глобального выражения uid на уровне представления.
uid также используется в оценке выражений в файле odoo xml view
<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.