Методы работы с правами доступа в модели res.users Odoo

В Odoo макет вкладки прав доступа в модели res.usersбыл изменен на древовидное представление. Это означает, что вместо прежнего представления в форме права доступа теперь отображаются в иерархической древовидной структуре.

Чтобы продемонстрировать различные методы работы с правами доступа в модели res.users, я приведу примеры кода с использованием Python и Odoo.

  1. Получить права доступа для пользователя:

    user = self.env['res.users'].browse(user_id)
    access_rights = user.access_ids
  2. Добавить права доступа для пользователя:

    new_access = self.env['ir.model.access'].search([('name', '=', 'Model Name')])
    user = self.env['res.users'].browse(user_id)
    user.write({'access_ids': [(4, new_access.id)]})
  3. Удалить права доступа для пользователя:

    access_to_remove = self.env['ir.model.access'].search([('name', '=', 'Model Name')])
    user = self.env['res.users'].browse(user_id)
    user.write({'access_ids': [(3, access_to_remove.id)]})
  4. Обновление прав доступа для пользователя:

    access_to_update = self.env['ir.model.access'].search([('name', '=', 'Model Name')])
    user = self.env['res.users'].browse(user_id)
    user.write({'access_ids': [(1, access_to_update.id, {'perm_read': True, 'perm_write': True})]})
  5. Создайте новое право доступа:

    new_access = self.env['ir.model.access'].create({
       'name': 'New Model Access',
       'model_id': model_id,
       'group_id': group_id,
       'perm_read': True
    })
  6. Получить все права доступа:

    access_rights = self.env['ir.model.access'].search([])
  7. Права доступа к фильтру:

    filtered_access_rights = self.env['ir.model.access'].search([('group_id', '=', group_id)])