[FIX] hr_fleet: fix access rights with employees without user
Commit 55a48e3 added support for computing car count and car reports
for employees without a linked user..
It is computed by accessing the field `address_home_id` (res.partner) to find the driver.
However, this field is private.
Therefore a user in `fleet_group_manager` has an ACL error when accessing
an employee form view which contains a stat button with the car count.
This commit compute the car count and the car report
with `address_home_id` as sudo to fix the issue.
Also fix a typo in attribute `groups` instead of `group` and fix its
value from `fleet_manager` to `fleet.fleet_group_manager`.
This commit is contained in:
committed by
RomainLibert
parent
1e1ea00e66
commit
607fd63545
@@ -19,7 +19,7 @@ class HrFleet(Controller):
|
||||
return request.not_found()
|
||||
|
||||
employee = request.env['hr.employee'].search([('id', '=', employee_id)], limit=1)
|
||||
partner_ids = (employee.user_id.partner_id | employee.address_home_id).ids
|
||||
partner_ids = (employee.user_id.partner_id | employee.sudo().address_home_id).ids
|
||||
if not employee or not partner_ids:
|
||||
return request.not_found()
|
||||
|
||||
|
||||
@@ -7,12 +7,12 @@ from odoo import fields, models
|
||||
class Employee(models.Model):
|
||||
_inherit = 'hr.employee'
|
||||
|
||||
employee_cars_count = fields.Integer(compute="_compute_employee_cars_count", string="Cars", group="fleet_manager")
|
||||
employee_cars_count = fields.Integer(compute="_compute_employee_cars_count", string="Cars", groups="fleet.fleet_group_manager")
|
||||
|
||||
def action_open_employee_cars(self):
|
||||
self.ensure_one()
|
||||
cars = self.env['fleet.vehicle.assignation.log'].search([
|
||||
('driver_id', 'in', (self.user_id.partner_id | self.address_home_id).ids)]).mapped('vehicle_id')
|
||||
('driver_id', 'in', (self.user_id.partner_id | self.sudo().address_home_id).ids)]).mapped('vehicle_id')
|
||||
|
||||
return {
|
||||
"type": "ir.actions.act_window",
|
||||
@@ -23,12 +23,12 @@ class Employee(models.Model):
|
||||
}
|
||||
|
||||
def _compute_employee_cars_count(self):
|
||||
driver_ids = (self.mapped('user_id.partner_id') | self.mapped('address_home_id')).ids
|
||||
fleet_data = self.env['fleet.vehicle.assignation.log'].sudo().read_group(
|
||||
driver_ids = (self.mapped('user_id.partner_id') | self.sudo().mapped('address_home_id')).ids
|
||||
fleet_data = self.env['fleet.vehicle.assignation.log'].read_group(
|
||||
domain=[('driver_id', 'in', driver_ids)], fields=['driver_id'], groupby=['driver_id'])
|
||||
mapped_data = dict([(m['driver_id'][0], m['driver_id_count']) for m in fleet_data])
|
||||
for employee in self:
|
||||
employee.employee_cars_count = mapped_data.get(employee.user_id.partner_id.id, 0) + mapped_data.get(employee.address_home_id.id, 0)
|
||||
employee.employee_cars_count = mapped_data.get(employee.user_id.partner_id.id, 0) + mapped_data.get(employee.sudo().address_home_id.id, 0)
|
||||
|
||||
def action_get_claim_report(self):
|
||||
self.ensure_one()
|
||||
|
||||
Reference in New Issue
Block a user