[FIX] fleet: Compute counts using read_group
Divides by 2 the kanban view loading on odoo.com X-original-commit: 5fa89995f010964e3d5d5a1417b23965735136e9
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from collections import defaultdict
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
@@ -151,11 +152,31 @@ class FleetVehicle(models.Model):
|
||||
Odometer = self.env['fleet.vehicle.odometer']
|
||||
LogService = self.env['fleet.vehicle.log.services']
|
||||
LogContract = self.env['fleet.vehicle.log.contract']
|
||||
for record in self:
|
||||
record.odometer_count = Odometer.search_count([('vehicle_id', '=', record.id)])
|
||||
record.service_count = LogService.search_count([('vehicle_id', '=', record.id), ('active', '=', record.active)])
|
||||
record.contract_count = LogContract.search_count([('vehicle_id', '=', record.id), ('state', '!=', 'closed'), ('active', '=', record.active)])
|
||||
record.history_count = self.env['fleet.vehicle.assignation.log'].search_count([('vehicle_id', '=', record.id)])
|
||||
History = self.env['fleet.vehicle.assignation.log']
|
||||
odometers_data = Odometer.read_group([('vehicle_id', 'in', self.ids)], ['vehicle_id'], ['vehicle_id'])
|
||||
services_data = LogService.read_group([('vehicle_id', 'in', self.ids)], ['vehicle_id'], ['vehicle_id'])
|
||||
logs_data = LogContract.read_group([('vehicle_id', 'in', self.ids), ('state', '!=', 'closed')], ['vehicle_id'], ['vehicle_id'])
|
||||
histories_data = History.read_group([('vehicle_id', 'in', self.ids)], ['vehicle_id'], ['vehicle_id'])
|
||||
|
||||
mapped_odometer_data = defaultdict(lambda: 0)
|
||||
mapped_service_data = defaultdict(lambda: 0)
|
||||
mapped_log_data = defaultdict(lambda: 0)
|
||||
mapped_history_data = defaultdict(lambda: 0)
|
||||
|
||||
for odometer_data in odometers_data:
|
||||
mapped_odometer_data[odometer_data['vehicle_id'][0]] = odometer_data['vehicle_id_count']
|
||||
for service_data in services_data:
|
||||
mapped_service_data[service_data['vehicle_id'][0]] = service_data['vehicle_id_count']
|
||||
for log_data in logs_data:
|
||||
mapped_log_data[log_data['vehicle_id'][0]] = log_data['vehicle_id_count']
|
||||
for history_data in histories_data:
|
||||
mapped_history_data[history_data['vehicle_id'][0]] = history_data['vehicle_id_count']
|
||||
|
||||
for vehicle in self:
|
||||
vehicle.odometer_count = mapped_odometer_data[vehicle.id]
|
||||
vehicle.service_count = mapped_service_data[vehicle.id]
|
||||
vehicle.contract_count = mapped_log_data[vehicle.id]
|
||||
vehicle.history_count = mapped_history_data[vehicle.id]
|
||||
|
||||
@api.depends('log_contracts')
|
||||
def _compute_contract_reminder(self):
|
||||
|
||||
Reference in New Issue
Block a user