2012-06-08 3 views
6

Я хочу, чтобы человек, которому я назначил задачу, увидел задачу в модуле проекта. Я не хочу, чтобы другие пользователи проекта видели задачи этих лиц.Задачи должны отображаться только в том случае, если пользователю присвоено значение

Однако в настоящее время любой пользователь, имеющий права доступа пользователя, может видеть все задачи, даже если они им не были назначены.

Есть ли работа вокруг этого?

ответ

15

OpenERP имеет два вида ограничений безопасности, которые могут быть отнесены к группе пользователей:

  • Access Rights является CRUD да/нет флагов (по аналогии с правами доступа Unix FS) и позволяют за модель контроля доступа , Они указывают, могут ли члены этой группы выполнять операцию Create, Read, Update и Delete в любом документе определенной модели документа (например, задачи проекта). Политикой по умолчанию является DENY, поэтому по умолчанию любая операция будет отклонена, если пользователь явно не имеет права выполнять ее через права доступа своих групп.
  • Record Rules - фильтры, применяемые к операциям CRUD, и позволяют для каждого документа контроль доступа, когда права доступа уже предоставлены. Пользователи будут иметь возможность выполнять операцию только для данного документа, если документ соответствует хотя бы одному из правил записи. Политика по умолчанию ALLOW, поэтому, если для данной модели не существует правила, все документы этой модели могут быть доступны пользователям, имеющим необходимые права доступа.

Права доступа и правила записи также могут быть определены глобально, не присваивая их определенной группе, и в этом случае они применяются ко всем. Существует одна ошибка для правил записи: глобальные правила НЕ могут быть смягчены другими правилами (специально!), Поэтому используйте с осторожностью.

В вашем случае похоже, что вы должны определить одно дополнительное правило записи в группе Project Project, которое явно ограничивает доступ к задачам проекта к вашим собственным задачам (и, предположительно, тем, которые еще не назначены). Вам нужно создать новую запись в меню Правила безопасности с этими параметрами:

  • объект/модель: project.task
  • Имя: See own tasks only
  • домен: ['|',('user_id','=',False),('user_id','=',user.id)]
    • (средства: собственные задачи и неназначенные)
  • распространяется на чтение: [x]
  • применяется для записи: [x]
  • применяются для создания: [x]
  • применяется для удаления: [x]
  • групп: Project/User

domain из правила звукозаписывающего является стандартной областью OpenERP, которая оценивается по записи, на которых вы пытаетесь выполнить операцию, и можете ссылаться на переменную user, которая содержит данные текущего пользователя (технически, browse_record для текущего пользователя).Ищите search() в списке ORM methods для полного описания domain.

Если вы хотите, чтобы специальные пользователи (например, Менеджеры проектов) просматривали все задачи в системе, вы можете отключить это правило для них, добавив другое правило в группу Project Manager, которая позволяет получить доступ ко всем задачам. Существует специальный «фильтр домена», который означает «ALLOW ALL» и полезен для ослабления еще более строгих правил: [(1,'=',1)].

Примечание: ознакомьтесь с существующими правилами записи, чтобы увидеть, что они делают в первую очередь, и не забудьте прочитать объяснения в форме правила записи, когда вы добавляете свои. И помните, что если вы делаете что-то неправильно с правами доступа и правилами записи, вы всегда можете исправить беспорядок с учетной записью admin, так как эти ограничения безопасности не применяются к admin (аналогично пользователю root в Unix).

+0

Хороший ответ, Оливье, я не знал о правилах записи. Я рад видеть, что вы становитесь постоянным участником здесь. –

+0

поблагодарить u за подробный ответ. это работало для меня [('user_id', '=', user.id)] –

+0

см. здесь для правил записи в XML: http://help.openerp.com/question/12667/setting-up-rules-access- right-in-xmlcsv-files/ –

2

Примечание: В OpenERP 7 вы должны изменить или отключить правило DEFUALT под названием

Project/Задача: сотрудников: общественный, портал, работник или следующий или назначенную

Чтобы получить ваш правило работает.

+0

как изменить это, чтобы руководители проектов должны были видеть, что все, кроме других, должны видеть только свои задачи? –

+0

спасибо, мне удалось выяснить. –

+0

Я не мог найти это правило под Odoo v11. Вы не знаете, где он находится на v11? Благодарю. –

0

Как уже указано пользователем @ user1534055 в openERP 7, это немного отличается.

Найдите правило под названием Project/Task: employees: public, portal, employee or following or assigned

Find the associated record rule

Редактировать и удалить ('project_id.privacy_visibility', 'in', ['public', 'portal', 'employees']), '&', из правила определения и нажмите кнопку Сохранить.

После этого задачи будут видны только тем, кто был назначен.

1

Создание нового правила безопасности, выберите объект как "project.task", дает домен фильтр, как [("user_id", "=", user.id)]. Не нужно добавлять какие-либо группы, чтобы они были глобальными. Это оно!