diff --git a/addons/hr_skills/models/hr_employee_skill.py b/addons/hr_skills/models/hr_employee_skill.py
index b653b6c89e4..5a63efd7832 100644
--- a/addons/hr_skills/models/hr_employee_skill.py
+++ b/addons/hr_skills/models/hr_employee_skill.py
@@ -4,6 +4,7 @@
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
+from collections import defaultdict
class EmployeeSkill(models.Model):
_name = 'hr.employee.skill'
@@ -50,24 +51,37 @@ class EmployeeSkill(models.Model):
def _create_logs(self):
today = fields.Date.context_today(self)
+ employee_skills = self.env['hr.employee.skill'].search([
+ ('employee_id', 'in', self.employee_id.ids)
+ ])
+ employee_skill_logs = self.env['hr.employee.skill.log'].search([
+ ('employee_id', 'in', self.employee_id.ids),
+ ])
+
+ skills_by_employees = defaultdict(lambda: self.env['hr.employee.skill'])
+ for skill in employee_skills:
+ skills_by_employees[skill.employee_id.id] |= skill
+
+ logs_by_employees = defaultdict(lambda: self.env['hr.employee.skill.log'])
+ for log in employee_skill_logs:
+ logs_by_employees[log.employee_id.id] |= log
+
skill_to_create_vals = []
- for employee_skill in self:
- existing_log = self.env['hr.employee.skill.log'].search([
- ('employee_id', '=', employee_skill.employee_id.id),
- ('department_id', '=', employee_skill.employee_id.department_id.id),
- ('skill_id', '=', employee_skill.skill_id.id),
- ('date', '=', today),
- ])
- if existing_log:
- existing_log.write({'skill_level_id': employee_skill.skill_level_id.id})
- else:
- skill_to_create_vals.append({
- 'employee_id': employee_skill.employee_id.id,
- 'skill_id': employee_skill.skill_id.id,
- 'skill_level_id': employee_skill.skill_level_id.id,
- 'department_id': employee_skill.employee_id.department_id.id,
- 'skill_type_id': employee_skill.skill_type_id.id,
- })
+ for employee in skills_by_employees:
+ employee_logs = logs_by_employees[employee]
+ for employee_skill in skills_by_employees[employee]:
+ existing_log = employee_logs.filtered(lambda l: l.department_id == employee_skill.employee_id.department_id and l.skill_id == employee_skill.skill_id and l.date == today)
+ if existing_log:
+ existing_log.write({'skill_level_id': employee_skill.skill_level_id.id})
+ else:
+ skill_to_create_vals.append({
+ 'employee_id': employee_skill.employee_id.id,
+ 'skill_id': employee_skill.skill_id.id,
+ 'skill_level_id': employee_skill.skill_level_id.id,
+ 'department_id': employee_skill.employee_id.department_id.id,
+ 'skill_type_id': employee_skill.skill_type_id.id,
+ })
+
if skill_to_create_vals:
self.env['hr.employee.skill.log'].create(skill_to_create_vals)
diff --git a/addons/hr_skills/views/hr_employee_skill_log_views.xml b/addons/hr_skills/views/hr_employee_skill_log_views.xml
index 5459d205c31..5ceefc5136e 100644
--- a/addons/hr_skills/views/hr_employee_skill_log_views.xml
+++ b/addons/hr_skills/views/hr_employee_skill_log_views.xml
@@ -4,9 +4,8 @@
hr.employee.skill.log.view.graph
hr.employee.skill.log
-
+
-
@@ -17,7 +16,7 @@
hr.employee.skill.log.view.graph
hr.employee.skill.log
-
+