Skills Management

hr_skills
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Fabien Pinckaers, Thibault Delavallée, Xavier Morel, Yannick Tivisse, Lucas Perais, Julien Castiaux, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Mathieu Duckerts-Antoine, abd-msyukyu-odoo, Ahmad Khanalizadeh, luvi, Louis Wicket (wil), Victor Piryns (pivi), Dylan Kiss (dyki), Mélanie, reka-odoo, Chrysanthe (chgo), mano-odoo, Yassin Abdelkarim, yagp-odoo, Natalie (naja), Abdelrahman Mahmoud (amah), Pierre Pulinckx (PIPU), Michaël Mattiello, nikj-odoo, Pierre Pulinckx, Bastien PIERRE, Krzysztof Magusiak (krma), romc-odoo, agbr-odoo, Laetitia (ldau), adip-odoo, dhka-odoo, Einar Andersen (eian), saurabh, raja prasad, chpa-odoo, Claire Nguyen (clan), adak-ahmed
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:41
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resume for HR
========================

This module introduces skills and resume management for employees.
        

Code Analysis

Views touched (40)
XML IDNameModelTypeStatus
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.list hr.skill.level list New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_inherit_certificate_form hr.employees.skill.inherit.certificate.form hr.employee.skill field Inherits employee_skill_view_form
employee_skill_view_tree hr.skill.list hr.skill list New
hr_department_view_kanban hr.department.kanban.inherit.hr.skills hr.department xpath Inherits hr.hr_department_view_kanban
hr_employee_certification_report_view_list hr.employee.certification.report list New
hr_employee_certification_report_view_pivot hr.employee.certification.report pivot New
hr_employee_certification_report_view_search hr.employee.certification.report search New
hr_employee_cv_wizard_view_form hr.employee.cv.wizard.view.form hr.employee.cv.wizard form New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public page Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_history_report_view_graph hr.employee.skill.history.report graph New
hr_employee_skill_history_report_view_search hr.employee.skill.history.report search New
hr_employee_skill_report_view_graph hr.employee.skill.report graph New
hr_employee_skill_report_view_list hr.employee.skill.report list New
hr_employee_skill_report_view_pivot hr.employee.skill.report pivot New
hr_employee_skill_report_view_search hr.employee.skill.report search New
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_skill_view_list hr.employees.skill.list hr.employee.skill list New
hr_employee_skill_view_search hr.employee.skill.view.search hr.employee.skill search New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee div Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_job_skill_view_form hr.job.skill.view.form hr.job.skill form New
hr_resume_line_calendar_view hr.resume.line.calendar.view hr.resume.line calendar New
hr_resume_line_kanban_view hr.resume.line.kanban.view hr.resume.line kanban New
hr_resume_line_list_view hr.resume.line.list.view hr.resume.line list New
hr_resume_line_type_tree_view hr.resume.line.type.list.view hr.resume.line.type list New
hr_skill_type_view_search hr.skill.type.search hr.skill.type search New
hr_skill_type_view_tree hr.skill.type.list hr.skill.type list New
hr_skill_view_form hr.skill.form hr.skill form New
hr_skill_view_search hr.skill.view.search hr.skill search New
report_employee_cv report_employee_cv ir.ui.view qweb New
report_employee_cv_company report_employee_cv_company ir.ui.view qweb New
report_employee_cv_main_panel report_employee_cv_main_panel ir.ui.view qweb New
report_employee_cv_sidepanel report_employee_cv_sidepanel ir.ui.view qweb New
resume_line_view_form hr.resume.line.form hr.resume.line form New
resume_line_view_form_inherit hr.resume.line.inherit.form hr.resume.line xpath Inherits hr_skills.resume_line_view_form
view_hr_job_form hr.job.view.form.inherit.hr.skills hr.job page Inherits hr.view_hr_job_form
view_resume_lines_filter hr.resume.line.search hr.resume.line search New
Models touched (14)

New fields (6)
  • certification_ids One2many → hr.employee.skill
    compute='_compute_certification_ids' readonly=False args: 'hr.employee.skill'
  • current_employee_skill_ids One2many → hr.employee.skill
    compute='_compute_current_employee_skill_ids' readonly=False args: 'hr.employee.skill'
  • display_certification_page Boolean
    compute='_compute_display_certification_page'
  • employee_skill_ids One2many → hr.employee.skill
    domain=[('skill_type_id.active', '=', True)] string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
  • skill_ids Many2many → hr.skill
    compute='_compute_skill_ids' groups='hr.group_hr_user' store=True args: 'hr.skill'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • get_internal_resume_lines(self, res_id, res_model)
    @api.model
  • write(self, vals)

New fields (8)
  • can_show_others Boolean
    compute='_compute_can_show_others'
  • can_show_skills Boolean
    compute='_compute_can_show_others'
  • color_primary Char
    default=<expr> required=True args: 'Primary Color'
  • color_secondary Char
    default=<expr> required=True args: 'Secondary Color'
  • employee_ids Many2many → hr.employee
    args: 'hr.employee'
  • show_contact Boolean
    default=True string='Contact Information'
  • show_others Boolean
    default=True string='Others'
  • show_skills Boolean
    default=True string='Skills'
Public methods (1)
  • action_validate(self)

New fields (5)
  • certification_ids One2many → hr.employee.skill
    related='employee_id.certification_ids' args: 'hr.employee.skill'
  • current_employee_skill_ids One2many → hr.employee.skill
    related='employee_id.current_employee_skill_ids' args: 'hr.employee.skill'
  • display_certification_page Boolean
    related='employee_id.display_certification_page'
  • employee_skill_ids One2many → hr.employee.skill
    domain=[('skill_type_id.active', '=', True)] string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (1)
  • employee_id Many2one → hr.employee
    index=True ondelete='cascade' required=True args: 'hr.employee'
Public methods (3)
  • action_save(self)
  • get_current_skills_by_employee(self)
  • open_hr_employee_skill_modal(self)

New fields (11)
  • certification_skill_type_count Integer
    compute='_compute_certification_skill_type_count' export_string_translation=False
  • color Integer
    related='skill_type_id.color'
  • display_warning_message Boolean
  • is_certification Boolean
    export_string_translation=False related='skill_type_id.is_certification'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • levels_count Integer
    related='skill_type_id.levels_count'
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    default=_default_skill_type_id ondelete='cascade' required=True args: 'hr.skill.type'
  • valid_from Date
    default=fields.Date.today() string='Validity Start'
  • valid_to Date
    string='Validity Stop'
Public methods (0)

No public methods.

New fields (3)
  • current_job_skill_ids One2many → hr.job.skill
    comodel_name='hr.job.skill' compute='_compute_current_job_skill_ids' readonly=False search='_search_current_job_skill_ids'
  • job_skill_ids One2many → hr.job.skill
    comodel_name='hr.job.skill' domain=[('skill_type_id.active', '=', True)] inverse_name='job_id' string='Skills'
  • skill_ids Many2many → hr.skill
    comodel_name='hr.skill' compute='_compute_skill_ids' store=True
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (1)
  • job_id Many2one → hr.job
    comodel_name='hr.job' index=True ondelete='cascade' required=True
Public methods (0)

No public methods.

New fields (17)
  • avatar_128 Image
    related='employee_id.avatar_128'
  • certificate_file Binary
    string='Certificate'
  • certificate_filename Char
  • color Char
    compute='_compute_color' default='#000000'
  • company_id Many2one
    related='employee_id.company_id'
  • course_type Selection
    default='external' required=True selection=[('external', 'External')] string='Course Type'
  • date_end Date
  • date_start Date
    default=fields.Date.context_today required=True
  • department_id Many2one
    related='employee_id.department_id'
  • description Html
    string='Description' translate=True
  • duration Integer
    string='Duration'
  • employee_id Many2one → hr.employee
    index=True ondelete='cascade' required=True string='Employee' args: 'hr.employee'
  • external_url Char
    compute='_compute_external_url' readonly=False store=True string='External URL'
  • is_course Boolean
    related='line_type_id.is_course'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True translate=True
  • resume_line_properties Properties
    definition='line_type_id.resume_line_type_properties_definition' args: 'Properties'
Public methods (0)

No public methods.

New fields (4)
  • is_course Boolean
    default=False args: 'Course'
  • name Char
    required=True translate=True
  • resume_line_type_properties_definition PropertiesDefinition
    args: 'Sections Properties'
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • color Integer
    related='skill_type_id.color'
  • name Char
    required=True translate=True
  • sequence Integer
    default=10
  • skill_type_id Many2one → hr.skill.type
    index=True ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (5)
  • default_level Boolean
    help='If checked, this level will be the default one selected when choosing this skill.'
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    index='btree_not_null' ondelete='cascade' args: 'hr.skill.type'
  • technical_is_new_default Boolean
    compute='_compute_technical_is_new_default' readonly=False
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • active Boolean
    default=True args: 'Active'
  • color Integer
    default=_get_default_color args: 'Color'
  • is_certification Boolean
    help='if checked the skill type become a certification type' args: 'Certification'
  • levels_count Integer
    compute='_compute_levels_count' help='Number of levels linked to this skill type' readonly=False store=True
  • name Char
    required=True translate=True
  • sequence Integer
    args: 'Sequence'
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    copy=True string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (1)
  • copy_data(self, default=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • employee_skill_ids One2many
    related='employee_id.employee_skill_ids'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Christophe Simonis, Aaron Bohy, Yannick Tivisse, qsm-odoo, Odoo Online, Alexandre Kühn, Paul Morelle, Sébastien Theys, Prakash Prajapati, Tiffany Chang (tic), Gorash, Mathieu Duckerts-Antoine, abd-msyukyu-odoo, sofiagvaladze, Hubert Van De Walle, Gaetan Vanden Bergh (gavb), Louis Wicket (wil), Victor Piryns (pivi), Mahamadasif Ansari, Pierre-Yves Dufays, Dylan Kiss (dyki), Hugo Carlier (Huca), Xavier Bol (xbo), omra-odoo, Paul Stroobant, ravb-odoo, Mélanie, Flotchet, jugj-odoo, Martin Trigaux (mat), Chrysanthe (chgo), Louis (wil), Natalie (naja), Pierre Pulinckx (PIPU), Michaël Mattiello, Pierre Pulinckx (pipu), Bastien PIERRE, kusi-odoo, Krzysztof Magusiak (krma), Omar (OSAH), pajo, agbr-odoo, adip-odoo, dhka-odoo, Einar Andersen (eian), saurabh, raja prasad
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - digest
    - mail
    - bus
    - web_tour
    - html_editor
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - phone_validation
    - resource_mail
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resume for HR
========================

This module introduces skills and resume management for employees.
        

Code Analysis

Views touched (30)
XML IDNameModelTypeStatus
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.list hr.skill.level list New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.list hr.skill list New
hr_department_view_kanban hr.department.kanban.inherit.hr.skills hr.department xpath Inherits hr.hr_department_view_kanban
hr_employee_cv_wizard_view_form hr.employee.cv.wizard.view.form hr.employee.cv.wizard form New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_log_view_graph_department hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_graph_employee hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_search hr.employee.skill.log.view.search hr.employee.skill.log search New
hr_employee_skill_log_view_tree hr.employee.skill.log.view.list hr.employee.skill.log list New
hr_employee_skill_report_view_graph hr.employee.skill.report graph New
hr_employee_skill_report_view_list hr.employee.skill.report list New
hr_employee_skill_report_view_pivot hr.employee.skill.report pivot New
hr_employee_skill_report_view_search hr.employee.skill.report search New
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.list.view hr.resume.line.type list New
hr_skill_type_view_search hr.skill.type.search hr.skill.type search New
hr_skill_type_view_tree hr.skill.type.list hr.skill.type list New
hr_skill_view_form hr.skill.form hr.skill form New
hr_skill_view_search hr.skill.view.search hr.skill search New
report_employee_cv report_employee_cv ir.ui.view qweb New
report_employee_cv_company report_employee_cv_company ir.ui.view qweb New
report_employee_cv_main_panel report_employee_cv_main_panel ir.ui.view qweb New
report_employee_cv_sidepanel report_employee_cv_sidepanel ir.ui.view qweb New
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
Models touched (13)

New fields (3)
  • employee_skill_ids One2many → hr.employee.skill
    domain=[('skill_type_id.active', '=', True)] string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
  • skill_ids Many2many → hr.skill
    compute='_compute_skill_ids' groups='hr.group_hr_user' store=True args: 'hr.skill'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • can_show_others Boolean
    compute='_compute_can_show_others'
  • can_show_skills Boolean
    compute='_compute_can_show_others'
  • color_primary Char
    default=<expr> required=True args: 'Primary Color'
  • color_secondary Char
    default=<expr> required=True args: 'Secondary Color'
  • employee_ids Many2many → hr.employee
    args: 'hr.employee'
  • show_contact Boolean
    default=True string='Contact Information'
  • show_others Boolean
    default=True string='Others'
  • show_skills Boolean
    default=True string='Skills'
Public methods (1)
  • action_validate(self)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    domain=[('skill_type_id.active', '=', True)] string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (6)
  • color Integer
    related='skill_type_id.color'
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    default=<expr> ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (7)
  • date Date
    default=fields.Date.context_today
  • department_id Many2one → hr.department
    args: 'hr.department'
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    aggregator='avg' related='skill_level_id.level_progress' store=True
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Html
    string='Description' translate=True
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    index=True ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True translate=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (4)
  • color Integer
    related='skill_type_id.color'
  • name Char
    required=True translate=True
  • sequence Integer
    default=10
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (4)
  • default_level Boolean
    help='If checked, this level will be the default one selected when choosing this skill.'
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (5)
  • active Boolean
    default=True args: 'Active'
  • color Integer
    default=_get_default_color args: 'Color'
  • name Char
    required=True translate=True
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    copy=True string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (1)
  • copy_data(self, default=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property

New fields (1)
  • employee_skill_ids One2many
    related='employee_id.employee_skill_ids'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Christophe Simonis, Géry Debongnie, Yannick Tivisse, qsm-odoo, Odoo Online, Victor Feyens, Joseph Caburnay, Samuel Degueldre, Prakash Prajapati, Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, Kevin Baptiste, Philippe Wauthy, sofiagvaladze, Hubert Van De Walle, Dossogne Bertrand, luvi, niyasraphy, Thomas Lefebvre (thle), Gaetan Vanden Bergh (gavb), Louis Wicket (wil), Victor Piryns (pivi), Mahamadasif Ansari, Pierre-Yves Dufays, pash-odoo, Dylan Kiss (dyki), Michael (mcm), Brieuc-brd, shag-odoo, dasz, Flotchet, jugj-odoo, Julien Carion (juca), Chrysanthe (chgo), Louis (wil), Natalie (naja), Pierre Pulinckx (pipu), Omar (OSAH), Robin Engels (roen), pajo, agbr-odoo, dhka-odoo, Einar Andersen (eian)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:06
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - phone_validation
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resume for HR
========================

This module introduces skills and resume management for employees.
        

Code Analysis

Views touched (28)
XML IDNameModelTypeStatus
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.tree hr.skill.level tree New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.tree hr.skill tree New
hr_department_view_kanban hr.department.kanban.inherit.hr.skills hr.department xpath Inherits hr.hr_department_view_kanban
hr_employee_cv_wizard_view_form hr.employee.cv.wizard.view.form hr.employee.cv.wizard form New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_log_view_graph_department hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_graph_employee hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_search hr.employee.skill.log.view.search hr.employee.skill.log search New
hr_employee_skill_log_view_tree hr.employee.skill.log.view.tree hr.employee.skill.log tree New
hr_employee_skill_report_view_list hr.employee.skill.report tree New
hr_employee_skill_report_view_pivot hr.employee.skill.report pivot New
hr_employee_skill_report_view_search hr.employee.skill.report search New
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.tree.view hr.resume.line.type tree New
hr_skill_type_view_tree hr.skill.type.tree hr.skill.type tree New
hr_skill_view_form hr.skill.form hr.skill form New
hr_skill_view_search hr.skill.view.search hr.skill search New
report_employee_cv report_employee_cv ir.ui.view qweb New
report_employee_cv_company report_employee_cv_company ir.ui.view qweb New
report_employee_cv_main_panel report_employee_cv_main_panel ir.ui.view qweb New
report_employee_cv_sidepanel report_employee_cv_sidepanel ir.ui.view qweb New
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
Models touched (12)

New fields (3)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
  • skill_ids Many2many → hr.skill
    compute='_compute_skill_ids' store=True args: 'hr.skill'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (8)
  • can_show_others Boolean
    compute='_compute_can_show_others'
  • can_show_skills Boolean
    compute='_compute_can_show_others'
  • color_primary Char
    default=<expr> required=True args: 'Primary Color'
  • color_secondary Char
    default=<expr> required=True args: 'Secondary Color'
  • employee_ids Many2many → hr.employee
    args: 'hr.employee'
  • show_contact Boolean
    default=True string='Contact Information'
  • show_others Boolean
    default=True string='Others'
  • show_skills Boolean
    default=True string='Skills'
Public methods (1)
  • action_validate(self)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (5)
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    default=<expr> ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (7)
  • date Date
    default=fields.Date.context_today
  • department_id Many2one → hr.department
    args: 'hr.department'
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    group_operator='avg' related='skill_level_id.level_progress' store=True
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Text
    string='Description' translate=True
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    index=True ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True translate=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • sequence Integer
    default=10
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (4)
  • default_level Boolean
    help='If checked, this level will be the default one selected when choosing this skill.'
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (3)
  • name Char
    required=True
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Fabien Pinckaers, Christophe Simonis, Aaron Bohy, Yannick Tivisse, Romeo Fragomeli, Gorash, Mathieu Duckerts-Antoine, Pierre Paridans, William Braeckman, Kevin Baptiste, Philippe Wauthy, Ahmad Khanalizadeh, sofiagvaladze, Dossogne Bertrand, luvi, niyasraphy, Thomas Lefebvre (thle), Gaetan Vanden Bergh (gavb), pash-odoo, Michael (mcm), stefanorigano (SRI), Martin Trigaux (mat), Natalie (naja)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:47
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resume for HR
========================

This module introduces skills and resume management for employees.
        

Code Analysis

Views touched (23)
XML IDNameModelTypeStatus
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.tree hr.skill.level tree New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.tree hr.skill tree New
hr_department_view_kanban hr.department.kanban.inherit.hr.skills hr.department xpath Inherits hr.hr_department_view_kanban
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_log_view_graph_department hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_graph_employee hr.employee.skill.log.view.graph hr.employee.skill.log graph New
hr_employee_skill_log_view_search hr.employee.skill.log.view.search hr.employee.skill.log search New
hr_employee_skill_log_view_tree hr.employee.skill.log.view.tree hr.employee.skill.log tree New
hr_employee_skill_report_view_list hr.employee.skill.report tree New
hr_employee_skill_report_view_pivot hr.employee.skill.report pivot New
hr_employee_skill_report_view_search hr.employee.skill.report search New
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.tree.view hr.resume.line.type tree New
hr_skill_type_view_tree hr.skill.type.tree hr.skill.type tree New
hr_skill_view_form hr.skill.form hr.skill form New
hr_skill_view_search hr.skill.view.search hr.skill search New
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
Models touched (10)

New fields (3)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
  • skill_ids Many2many → hr.skill
    compute='_compute_skill_ids' store=True args: 'hr.skill'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resume lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (5)
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (7)
  • date Date
    default=fields.Date.context_today
  • department_id Many2one → hr.department
    args: 'hr.department'
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    group_operator='avg' related='skill_level_id.level_progress' store=True
  • skill_id Many2one → hr.skill
    compute='_compute_skill_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    compute='_compute_skill_level_id' domain="[('skill_type_id', '=', skill_type_id)]" ondelete='cascade' readonly=False required=True store=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Text
    string='Description'
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • sequence Integer
    default=10
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' required=True args: 'hr.skill.type'
Public methods (1)
  • name_get(self)

New fields (4)
  • default_level Boolean
    help='If checked, this level will be the default one selected when choosing this skill.'
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (5)
  • action_set_default(self)
  • create(self, vals_list)
    @api.model_create_multi
  • name_get(self)
  • unlink(self)
  • write(self, values)

New fields (3)
  • name Char
    required=True
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/15.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Aaron Bohy, Adrien Dieudonne, Xavier-Do, Julien Mougenot, William Braeckman, Philippe Wauthy, Michael Mattiello (mcm), Gaetan Vanden Bergh (gavb), pash-odoo, Krina Oza
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:25:27
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resumé for HR
========================

This module introduces skills and resumé management for employees.
        

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.tree hr.skill.level tree New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.tree hr.skill tree New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.tree.view hr.resume.line.type tree New
hr_skill_type_view_tree hr.skill.type.tree hr.skill.type tree New
hr_skill_view_form hr.skill.form hr.skill form New
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
Models touched (9)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (5)
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    required=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    required=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Text
    string='Description'
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (2)
  • SELF_READABLE_FIELDS(self)
    @property
  • SELF_WRITEABLE_FIELDS(self)
    @property
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/14.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHuman Resources/Employees
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Olivier Dony, Christophe Simonis, Xavier Morel, Barad Mahendra, Yannick Tivisse, Adrien Dieudonne, Xavier-Do, Julien Mougenot, Jason Van Malder, Kevin Baptiste, bve-odoo, pash-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:14:28
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resumé for HR
========================

This module introduces skills and resumé management for employees.
        

Code Analysis

Views touched (16)
XML IDNameModelTypeStatus
assets_backend hr_skills_assets_backend ir.ui.view qweb Inherits web.assets_backend
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.tree hr.skill.level tree New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.tree hr.skill tree New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.tree.view hr.resume.line.type tree New
hr_skill_type_view_tree hr.skill.type.tree hr.skill.type tree New
hr_skill_view_form hr.skill.form hr.skill form New
qunit_suite hr_skills_qunit_suite ir.ui.view qweb Inherits web.qunit_suite_tests
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
Models touched (9)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (5)
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    required=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    required=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Text
    string='Description'
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    ondelete='cascade' args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • skill_ids One2many → hr.skill
    string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/13.0/hr_skills
VERSION
VERSION 1.0
CATEGORY
CATEGORYHidden
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Christophe Simonis, David Monjoie, Xavier Morel, Aaron Bohy, Yannick Tivisse, RomainLibert, Xavier-Do, Jason Van Malder, Lucas Lefèvre, Romain Estievenart
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:06:42
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - hr
    - base_setup
    - base
    - web
    - mail
    - bus
    - web_tour
    - resource
    - mail_bot
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Skills and Resumé for HR
========================

This module introduces skills and resumé management for employees.
        

Code Analysis

Views touched (17)
XML IDNameModelTypeStatus
assets_backend hr_skills_assets_backend ir.ui.view qweb Inherits web.assets_backend
employee_skill_level_view_form hr.skill.level.form hr.skill.level form New
employee_skill_level_view_tree hr.skill.level.tree hr.skill.level tree New
employee_skill_view_form hr.employees.skill.form hr.employee.skill form New
employee_skill_view_tree hr.skill.tree hr.skill tree New
hr_employee_public_view_form_inherit hr.employee.public.view.form.inherit.resume hr.employee.public xpath Inherits hr.hr_employee_public_view_form
hr_employee_public_view_search hr.employee.public.skill.search hr.employee.public xpath Inherits hr.hr_employee_public_view_search
hr_employee_skill_type_view_form hr.skill.type.form hr.skill.type form New
hr_employee_view_form hr.employee.view.form.inherit.resume hr.employee xpath Inherits hr.view_employee_form
hr_employee_view_search hr.employee.skill.search hr.employee xpath Inherits hr.view_employee_filter
hr_resume_line_type_tree_view hr.resume.line.type.tree.view hr.resume.line.type tree New
hr_skill_type_view_tree hr.skill.type.tree hr.skill.type tree New
hr_skill_view_form hr.skill.form hr.skill form New
qunit_suite hr_skills_qunit_suite ir.ui.view qweb Inherits web.qunit_suite
res_users_view_form hr.user.preferences.form.inherit.hr.skills res.users xpath Inherits hr.res_users_view_form_profile
resume_line_view_form hr.resume.line.form hr.resume.line form New
resume_line_view_search hr.resume.search hr.resume.line search New
Models touched (9)

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (2)
  • employee_skill_ids One2many → hr.employee.skill
    string='Skills' args: 'hr.employee.skill', 'employee_id'
  • resume_line_ids One2many → hr.resume.line
    string='Resumé lines' args: 'hr.resume.line', 'employee_id'
Public methods (0)

No public methods.

New fields (5)
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • level_progress Integer
    related='skill_level_id.level_progress'
  • skill_id Many2one → hr.skill
    required=True args: 'hr.skill'
  • skill_level_id Many2one → hr.skill.level
    required=True args: 'hr.skill.level'
  • skill_type_id Many2one → hr.skill.type
    required=True args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (7)
  • date_end Date
  • date_start Date
    required=True
  • description Text
    string='Description'
  • display_type Selection
    default='classic' string='Display Type' args: [('classic', 'Classic')]
  • employee_id Many2one → hr.employee
    ondelete='cascade' required=True args: 'hr.employee'
  • line_type_id Many2one → hr.resume.line.type
    string='Type' args: 'hr.resume.line.type'
  • name Char
    required=True
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • sequence Integer
    default=10 args: 'Sequence'
Public methods (0)

No public methods.

New fields (2)
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • level_progress Integer
    help='Progress from zero knowledge (0%) to fully mastered (100%).' string='Progress'
  • name Char
    required=True
  • skill_type_id Many2one → hr.skill.type
    args: 'hr.skill.type'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    required=True
  • skill_ids One2many → hr.skill
    ondelete='cascade' string='Skills' args: 'hr.skill', 'skill_type_id'
  • skill_level_ids One2many → hr.skill.level
    ondelete='cascade' string='Levels' args: 'hr.skill.level', 'skill_type_id'
Public methods (0)

No public methods.

New fields (2)
  • employee_skill_ids One2many
    readonly=False related='employee_id.employee_skill_ids'
  • resume_line_ids One2many
    readonly=False related='employee_id.resume_line_ids'
Public methods (0)

No public methods.