HR Course

hr_course
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/19.0/hr_course
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, eugenio
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:40:47
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
This module allows your to manage employee's training courses, course
dates and all its validation process.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee list New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee list New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule list New
hr_course_tree_view hr.course.tree hr.course list New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_search hr.course.category.search hr.course.category search New
view_course_category_tree hr.course.category.tree hr.course.category list New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (15)
  • attendant_ids Many2many → hr.employee
    args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' required=True tracking=True
  • comment Text
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True tracking=True
  • note Text
  • place Char
  • start_date Date
    tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/18.0/hr_course
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Bhavesh Heliconia
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:08
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
This module allows your to manage employee's training courses, course
dates and all its validation process.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee list New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee list New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule list New
hr_course_tree_view hr.course.tree hr.course list New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_search hr.course.category.search hr.course.category search New
view_course_category_tree hr.course.category.tree hr.course.category list New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (15)
  • attendant_ids Many2many → hr.employee
    args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' required=True tracking=True
  • comment Text
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True tracking=True
  • note Text
  • place Char
  • start_date Date
    tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/17.0/hr_course
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, DoDo, Luis Rodriguez, Manish Bohra
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:01
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
This module allows your to manage employee's training courses, course
dates and all its validation process.

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule tree New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (15)
  • attendant_ids Many2many → hr.employee
    args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' required=True tracking=True
  • comment Text
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True tracking=True
  • note Text
  • place Char
  • start_date Date
    tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/16.0/hr_course
VERSION
VERSION 1.1.2
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSEnric Tobella, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Núria Sancho, FernandoRomera
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:49
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

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule tree New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (15)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} tracking=True
  • comment Text
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True tracking=True
  • note Text
  • place Char
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/15.0/hr_course
VERSION
VERSION 1.1.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSGitHub, Víctor Martínez, Weblate, OCA-git-bot, oca-ci, Olga Marco, Kevin Luna
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:36
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

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule tree New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (15)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} tracking=True
  • comment Text
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True tracking=True
  • note Text
  • place Char
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/14.0/hr_course
VERSION
VERSION 3.1.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSAlexandre Fayolle, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Anna Janiszewska, oca-ci, Olga Marco, Núria Sancho
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:02
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

Code Analysis

Views touched (13)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule tree New
hr_course_tree_view hr.course.tree hr.course tree New
res_config_settings_view_form Set course notification res.config.settings xpath Inherits hr.res_config_settings_view_form
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (7)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True string='Name' tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    string='Permanence time' tracking=True
Public methods (0)

No public methods.

New fields (11)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_expiration_alert_sent Boolean
    help='Shows if notification email for course was sent'
  • course_id Many2one
    related='course_schedule_id.course_id'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • course_validity_end_date Date
    related='course_schedule_id.validity_end_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' string='Result' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (17)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} string='Authorized by' tracking=True
  • comment Text
    args: 'Comment'
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • course_expiration_alert_sent Boolean
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} string='End date' tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True string='Name' tracking=True
  • note Text
  • place Char
    args: 'Place'
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Start date' tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
  • validity_end_date Date
Public methods (9)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • process_validity(self)
    @api.model
  • send_course_expiration_notification_email(self)
    @api.model
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)

New fields (2)
  • course_expiration_alerting_delay Integer
    string='Alerting delay before end of validity (days)'
  • course_expiration_channel_id Many2one → mail.channel
    default=<expr> string='Mailing list to alert' args: 'mail.channel'
Public methods (0)

No public methods.

New fields (2)
  • course_expiration_alerting_delay Integer
    readonly=False related='company_id.course_expiration_alerting_delay'
  • course_expiration_channel_id Many2one
    readonly=False related='company_id.course_expiration_channel_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/13.0/hr_course
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSStéphane Bidoul, Enric Tobella, OCA Transbot, Víctor Martínez, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo
WEBSITE
WEBSITEhttps://github.com/OCA/hr
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:14
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

Code Analysis

Views touched (12)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form hr.course form New
hr_course_schedule_form_view hr.course.schedule.form hr.course.schedule form New
hr_course_schedule_search_view hr.course.schedule.search hr.course.schedule search New
hr_course_schedule_tree_view hr.course.schedule.tree hr.course.schedule tree New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (5)

New fields (8)
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • content Html
  • course_schedule_ids One2many → hr.course.schedule
    inverse_name='course_id' args: 'hr.course.schedule'
  • evaluation_criteria Html
  • name Char
    required=True string='Name' tracking=True
  • objective Html
  • permanence Boolean
    default=False string='Has Permanence' tracking=True
  • permanence_time Char
    string='Permanence time' tracking=True
Public methods (0)

No public methods.

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_schedule_id.end_date'
  • course_schedule_id Many2one → hr.course.schedule
    ondelete='cascade' readonly=True required=True args: 'hr.course.schedule'
  • course_start Date
    readonly=True related='course_schedule_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_schedule_id.name'
  • result Selection
    default='pending' string='Result' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_schedule_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (14)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} string='Authorized by' tracking=True
  • comment Text
    args: 'Comment'
  • cost Monetary
    required=True string='Course Cost' tracking=True
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_schedule_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • course_id Many2one → hr.course
    required=True string='Course' args: 'hr.course'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} string='End date' tracking=True
  • instructor_ids Many2many → res.partner
    string='Instructor' args: 'res.partner'
  • name Char
    required=True string='Name' tracking=True
  • place Char
    args: 'Place'
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Start date' tracking=True
  • state Selection
    default='draft' readonly=True required=True tracking=True args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
  • training_company_id Many2one → res.partner
    string='Training company' args: 'res.partner'
Public methods (7)
  • all_passed(self)
  • back2draft(self)
  • cancel_course(self)
  • draft2waiting(self)
  • inprogress2validation(self)
  • validation2complete(self)
  • waiting2inprogress(self)

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/12.0/hr_course
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo
WEBSITE
WEBSITEhttps://github.com/OCA/hr/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:19
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

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form (in hr_courses) hr.course form New
hr_course_search_view hr.course.search hr.course search New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (4)

New fields (12)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} string='Authorized by' track_visibility='onchange'
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • cost Monetary
    required=True string='Course Cost' track_visibility='onchange'
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} string='End date' track_visibility='onchange'
  • name Char
    required=True string='Name' track_visibility='onchange'
  • permanence Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Has Permanence' track_visibility='onchange'
  • permanence_time Char
    readonly=True states={'draft': [('readonly', False)]} string='Permanence time' track_visibility='onchange'
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Start date' track_visibility='onchange'
  • state Selection
    default='draft' readonly=True required=True track_visibility='onchange' args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
Public methods (7)
  • all_passed(self)
  • back2draft(self)
    @api.multi
  • cancel_course(self)
    @api.multi
  • draft2waiting(self)
    @api.multi
  • inprogress2validation(self)
    @api.multi
  • validation2complete(self)
    @api.multi
  • waiting2inprogress(self)
    @api.multi

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_id.end_date'
  • course_id Many2one → hr.course
    ondelete='cascade' readonly=True required=True args: 'hr.course'
  • course_start Date
    readonly=True related='course_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_id.name'
  • result Selection
    default='pending' string='Result' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/hr
GIT
GIThttps://github.com/OCA/hr.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/hr/tree/11.0/hr_course
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, Jaime Arroyo
WEBSITE
WEBSITEhttps://github.com/OCA/hr/
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:23:58
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

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
hr_course_attendee_form_view hr.course.attendee.form hr.course.attendee form New
hr_course_attendee_tree_employee_view hr.course.attendee.tree.employee hr.course.attendee tree New
hr_course_attendee_tree_view hr.course.attendee.tree hr.course.attendee tree New
hr_course_form_view hr.course.form (in hr_courses) hr.course form New
hr_course_search_view hr.course.search hr.course search New
hr_course_tree_view hr.course.tree hr.course tree New
view_course_category_form hr.course.category.form hr.course.category form New
view_course_category_list hr.course.category.list hr.course.category tree New
view_course_category_search hr.course.category.search hr.course.category search New
view_hr_employee_form hr.employee.course.form hr.employee div Inherits hr.view_employee_form
Models touched (4)

New fields (12)
  • attendant_ids Many2many → hr.employee
    readonly=True states={'waiting_attendees': [('readonly', False)]} args: 'hr.employee'
  • authorized_by Many2one → hr.employee
    comodel_name='hr.employee' readonly=True required=True states={'draft': [('readonly', False)]} string='Authorized by' track_visibility='onchange'
  • category_id Many2one → hr.course.category
    required=True string='Category' args: 'hr.course.category'
  • cost Monetary
    required=True string='Course Cost' track_visibility='onchange'
  • course_attendee_ids One2many → hr.course.attendee
    inverse_name='course_id' readonly=True states={'in_validation': [('readonly', False)]} args: 'hr.course.attendee'
  • currency_id Many2one → res.currency
    default=<expr> string='Currency' args: 'res.currency'
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} string='End date' track_visibility='onchange'
  • name Char
    required=True string='Name' track_visibility='onchange'
  • permanence Boolean
    readonly=True states={'draft': [('readonly', False)]} string='Has Permanence' track_visibility='onchange'
  • permanence_time Char
    readonly=True states={'draft': [('readonly', False)]} string='Permanence time' track_visibility='onchange'
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Start date' track_visibility='onchange'
  • state Selection
    default='draft' readonly=True required=True track_visibility='onchange' args: [('draft', 'Draft'), ('waiting_attendees', 'Waiting attendees'), ('in_progress', 'In progress'), ('in_validation', 'In validation'), ('completed', 'Completed'), ('cancelled', 'Cancelled')]
Public methods (7)
  • all_passed(self)
  • back2draft(self)
    @api.multi
  • cancel_course(self)
    @api.multi
  • draft2waiting(self)
    @api.multi
  • inprogress2validation(self)
    @api.multi
  • validation2complete(self)
    @api.multi
  • waiting2inprogress(self)
    @api.multi

New fields (8)
  • active Boolean
    default=True readonly=True
  • course_end Date
    readonly=True related='course_id.end_date'
  • course_id Many2one → hr.course
    ondelete='cascade' readonly=True required=True args: 'hr.course'
  • course_start Date
    readonly=True related='course_id.start_date'
  • employee_id Many2one → hr.employee
    readonly=True args: 'hr.employee'
  • name Char
    readonly=True related='course_id.name'
  • result Selection
    default='pending' string='Result' args: [('passed', 'Passed'), ('failed', 'Failed'), ('absent', 'Absent'), ('pending', 'Pending')]
  • state Selection
    readonly=True related='course_id.state'
Public methods (0)

No public methods.

New fields (1)
  • name Char
    required=True string='Course category'
Public methods (0)

No public methods.

New fields (2)
  • count_courses Integer
    compute='_compute_count_courses' args: 'Number of courses'
  • courses_ids One2many → hr.course.attendee
    readonly=True string='Courses' args: 'hr.course.attendee', 'employee_id'
Public methods (1)
  • action_view_course(self)
    @api.multi