Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 30 additions & 4 deletions hr_employee_language/models/hr_employee_language.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,45 @@
# Copyright (C) 2017-Today: Odoo Community Association (OCA)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).

from odoo import fields, models, tools
from odoo import _, fields, models


class HrEmployeeLanguage(models.Model):
_name = "hr.employee.language"
_description = "HR Employee Language"

name = fields.Selection(
tools.misc.scan_languages(), string="Language", required=True
)
def _get_selection(self):
"""
generate language selection from available on db
"""
selection = []
for lang in self.env["res.lang"].search([("active", "in", (True, False))]):
selection += [
(_("%(code)s", code=lang.code), _("%(name)s", name=lang.name))
]
return selection

name = fields.Selection(_get_selection, string="Language", required=True)
description = fields.Char()
employee_id = fields.Many2one("hr.employee", string="Employee", required=True)
can_read = fields.Boolean(string="Read", default=True)
can_write = fields.Boolean(string="Write", default=True)
can_speak = fields.Boolean(string="Speak", default=True)
can_listen = fields.Boolean(string="Listen", default=True)

def _compute_display_name(self):
"""
redefine record display_name to show languages name instead languages code
"""
lang_tot_db = self.env["res.lang"].search([("active", "in", (True, False))])
dati = {}
res = []
for lan in lang_tot_db:
dati[lan.code] = lan.name
self_data = self.env["hr.employee.language"].search([])
for record in self_data:
record.display_name = (
dati[record.name] if dati[record.name] else record.name
)
res.append((record.id, record.display_name))
return res
1 change: 1 addition & 0 deletions hr_employee_language/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import test_add_lang
40 changes: 40 additions & 0 deletions hr_employee_language/tests/test_add_lang.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
from odoo.tests.common import TransactionCase


class TestAddLanguage(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()

def test_add_lang(self):
lang_list = self.env["res.lang"].search(
[("active", "in", (True, False))], limit=1
)
lang_old = lang_list.code
selection = self.env["hr.employee.language"]._get_selection()
selection_ck = any(map(lambda t: lang_old in t, selection))
# Test if a old lang is present
self.assertEqual(selection_ck, True, "Old language is present")

self.env["res.lang"].create({"code": "xx_XX", "name": "Foo"})
selection = self.env["hr.employee.language"]._get_selection()
selection_ck = any(map(lambda t: "xx_XX" in t, selection))
# Test if a new lang is present
self.assertEqual(selection_ck, True, "New language is present")

def test_compute_display_name(self):
self.env["hr.employee.language"].create(
{
"name": "en_GB",
"employee_id": self.env["hr.employee"].create({"name": "Test"}).id,
}
)
self.env["hr.employee.language"]._compute_display_name()
lang_ref = self.env["res.lang"].search(
[("code", "=", "en_GB"), ("active", "in", (True, False))], limit=1
)
self.assertEqual(
lang_ref.name,
"English (UK)",
"_compute_display_name not returns right value",
)