Odoo скрывает редактирование и другие кнопки, если не является администратором

Я пытаюсь скрыть кнопку редактирования и больше в пользовательской форме, если подключенный пользователь не является администратором. Вот мой код

 <xpath expr='//form[@string="Users"]' position='attributes'>
            <attribute name="edit" >{'false':[('id', '!=', '1')]}</attribute>
                <attribute name="more">{'false':[('id', '!=', '1')]}</attribute>
            </xpath>

я получаю следующую ошибку:

SyntaxError: JSON.parse: expected property name or '}' at line 1 column 2 of the JSON data

person Oumar Diarra    schedule 27.10.2016    source источник
comment
Если вам действительно нужно такое правило жесткого доступа, вы можете изменить клиент odoo и просто скрыть эти две кнопки с помощью j-query. Но я не знаю, почему у кого-то такие требования к ERP-программе. Администратору нет смысла редактировать записи.   -  person CZoellner    schedule 28.10.2016
comment
В odoo вы можете создать пользователя (менеджера) с правами администратора: Доступ. Затем этот пользователь может редактировать информацию администратора, такую ​​как пароль, администрация... Вот почему я хочу скрыть эту кнопку для пользователей, отличных от администратора.   -  person Oumar Diarra    schedule 28.10.2016
comment
Извините, я просто неправильно прочитал вашу первую часть. Это явно имеет смысл.   -  person CZoellner    schedule 28.10.2016


Ответы (2)


К сожалению, то, что вы пытаетесь достичь, невозможно с помощью выражения, скорее я бы посоветовал пользователю «Настраиваемые представления».

  1. Сделайте из пользовательской формы edit="false", чтобы кнопка редактирования исчезла для всех пользователей (res.users.form).
  2. Теперь перейдите в Customized Views под Settings/Technical/User Interface/Customized Views, вы должны быть в режиме debug, чтобы увидеть это меню.
  3. В разделе Customized Views создайте новую запись и выберите Пользователь: Admin, а в исходном представлении выберите: res.users.form, а в View Architecture скопируйте и очистите исходное представление View Architecture и просто удалите edit='false'

Это должно помочь, я считаю.

Лучшие

person ifixthat    schedule 27.10.2016
comment
Привет @shodowsjedi, у меня нет edit='false' в исходном представлении. Даже когда я добавляю его, только для целей тестирования. кнопка всегда рядом. - person Oumar Diarra; 31.10.2016
comment
@OumarDiarra: кнопка будет отображаться, если ваши правила безопасности позволяют другому пользователю редактировать запись. - person ifixthat; 31.10.2016

Расширяя ответ @shodowsjedi, чтобы достичь того, чего вы хотите, вам нужно создать два представления (по сути, они одинаковы, только одно из них прикреплено к определенной группе и будет отображаться для пользователя, принадлежащего к этой группе)

Это макет того, как должен выглядеть ваш файл xml.

<!--original form view-->
<record id="model_form_view" model="ir.ui.view">
<field name="name">your.model</field>
<field name="model">your.model</field>
<field name="arch" type="xml">
<form string="Users">
    <!--whatever is in your form -->
</field>
</record>

<!--inherited formview to hide edit option -->
<record id="model_form_view_noedit" model="ir.ui.view">
<field name="name">your.model</field>
<field name="model">your.model</field>
<field name="inherit_id" ref="model_form_view"/>
<field name="groups_id" eval="[(6, 0, [ref('base.group_user') ])]"/>
<field name="arch" type="xml">
    <xpath expr='//form[@string="Users"]' position='attributes'>
        <attribute name="edit">false</attribute>
    </xpath>
</field>
</record>

Всегда лучше знать, как все работает, из бэкэнда в Odoo.

person danidee    schedule 28.10.2016