OpenEduCat Core

openeducat_core
REPOSITORY
REPOSITORYOCA/vertical-education
GIT
GIThttps://github.com/OCA/vertical-education.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-education/tree/10.0/openeducat_core
VERSION
VERSION 3.0.0
CATEGORY
CATEGORYEducation
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTech Receptives
MAINTAINERS
MAINTAINERSTech Receptives
COMMITTERS
COMMITTERSMaxime Chambreuil, Pedro M. Baeza, Stéphane Bidoul (ACSONE), Parthiv Patel, ajaychauhan727, Ajay Chauhan
WEBSITE
WEBSITEhttp://www.openeducat.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:20:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - board
    - base
    - web
    - document
    - hr
    - base_setup
    - web_kanban
    - mail
    - bus
    - web_tour
    - resource
    - website
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (38)
XML IDNameModelTypeStatus
aboutus_openeducat About us ir.ui.view qweb Inherits website.aboutus
assets_editor Editor assets ir.ui.view qweb Inherits website.assets_editor
board_faculty_form board.faculty.form board.board form New
board_student_form board.student.form board.board form New
fav_ico educat Icon ir.ui.view qweb Inherits web.layout
fav_ico educat Icon ir.ui.view qweb Inherits web.layout
footer_default_openeducat Automatic Footer ir.ui.view qweb Inherits website.footer_default
kanban_view_faculty Faculty Kanban op.faculty kanban New
kanban_view_student Student Kanban op.student kanban New
less less ir.ui.view qweb Inherits website.assets_frontend
op_faculty_create_employee_view wizard.op.faculty.employee.form wizard.op.faculty.employee form New
op_faculty_user_create_view wizard.op.faculty.form wizard.op.faculty form New
op_student_user_create_view wizard.op.student.form wizard.op.student form New
report_student_bonafide report_student_bonafide ir.ui.view qweb New
report_student_idcard report_student_idcard ir.ui.view qweb New
view_company_form_openeducat_core res.company.form.openeducat.core res.company xpath Inherits base.view_company_form
view_employee_form_address_inherit hr.employee.form.address.inherit hr.employee field Inherits hr.view_employee_form
view_op_batch_form op.batch.form op.batch form New
view_op_batch_search op.batch.search op.batch search New
view_op_batch_tree op.batch.tree op.batch tree New
view_op_category_form op.category.form op.category form New
view_op_category_search op.category.search op.category search New
view_op_category_tree op.category.tree op.category tree New
view_op_course_form op.course.form op.course form New
view_op_course_search op.course.search op.course search New
view_op_course_tree op.course.tree op.course tree New
view_op_faculty_form op.faculty.form op.faculty form New
view_op_faculty_search op.faculty.search op.faculty search New
view_op_faculty_tree op.faculty.tree op.faculty tree New
view_op_student_form op.student.form op.student form New
view_op_student_search op.student.search op.student search New
view_op_student_tree op.student.tree op.student tree New
view_op_subject_form op.subject.form op.subject form New
view_op_subject_search op.subject.search op.subject search New
view_op_subject_tree op.subject.tree op.subject tree New
view_subject_registration_form op.subject.registration.form op.subject.registration form New
view_subject_registration_search op.subject.registration.search op.subject.registration search New
view_subject_registration_tree op.subject.registration.tree op.subject.registration tree New
Models touched (14)

New fields (0)

No new fields.

Public methods (2)
  • onchange_address_id(self)
    @api.onchange('address_id')
  • onchange_user(self)
    @api.onchange('user_id')

New fields (5)
  • code Char
    required=True size=8 args: 'Code'
  • course_id Many2one → op.course
    required=True args: 'op.course', 'Course'
  • end_date Date
    required=True args: 'End Date'
  • name Char
    required=True size=32 args: 'Name'
  • start_date Date
    default=fields.Date.today() required=True args: 'Start Date'
Public methods (2)
  • check_dates(self)
    @api.multi@api.constrains('start_date', 'end_date')
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (2)
  • code Char
    required=True size=4 args: 'Code'
  • name Char
    required=True size=256 args: 'Name'
Public methods (0)

No public methods.

New fields (8)
  • code Char
    required=True size=8 args: 'Code'
  • evaluation_type Selection
    default='normal' required=True args: [('normal', 'Normal'), ('GPA', 'GPA'), ('CWA', 'CWA'), ('CCE', 'CCE')], 'Evaluation Type'
  • max_unit_load Float
    args: 'Maximum Unit Load'
  • min_unit_load Float
    args: 'Minimum Unit Load'
  • name Char
    required=True size=32 args: 'Name'
  • parent_id Many2one → op.course
    args: 'op.course', 'Parent Course'
  • section Char
    required=True size=32 args: 'Section'
  • subject_ids Many2many → op.subject
    string='Subject(s)' args: 'op.subject'
Public methods (0)

No public methods.

New fields (15)
  • birth_date Date
    required=True args: 'Birth Date'
  • blood_group Selection
    args: [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], 'Blood Group'
  • emergency_contact Many2one → res.partner
    args: 'res.partner', 'Emergency Contact'
  • emp_id Many2one → hr.employee
    args: 'hr.employee', 'Employee'
  • faculty_subject_ids Many2many → op.subject
    string='Subject(s)' args: 'op.subject'
  • gender Selection
    required=True args: [('male', 'Male'), ('female', 'Female')], 'Gender'
  • id_number Char
    size=64 args: 'ID Card Number'
  • last_login Datetime
    readonly=1 related='partner_id.user_id.login_date' args: 'Latest Connection'
  • last_name Char
    required=True size=128 args: 'Last Name'
  • login Char
    readonly=1 related='partner_id.user_id.login' args: 'Login'
  • middle_name Char
    size=128 args: 'Middle Name'
  • nationality Many2one → res.country
    args: 'res.country', 'Nationality'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner', 'Partner'
  • photo Binary
    args: 'Photo'
  • visa_info Char
    size=64 args: 'Visa Info'
Public methods (1)
  • create_employee(self)
    @api.multi

New fields (14)
  • birth_date Date
    required=True args: 'Birth Date'
  • blood_group Selection
    args: [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], 'Blood Group'
  • category_id Many2one → op.category
    args: 'op.category', 'Category'
  • course_detail_ids One2many → op.student.course
    args: 'op.student.course', 'student_id', 'Course Details'
  • emergency_contact Many2one → res.partner
    args: 'res.partner', 'Emergency Contact'
  • gender Selection
    required=True args: [('m', 'Male'), ('f', 'Female'), ('o', 'Other')], 'Gender'
  • gr_no Char
    size=20 args: 'GR Number'
  • id_number Char
    size=64 args: 'ID Card Number'
  • last_name Char
    required=True size=128 args: 'Last Name'
  • middle_name Char
    size=128 args: 'Middle Name'
  • nationality Many2one → res.country
    args: 'res.country', 'Nationality'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner', 'Partner'
  • photo Binary
    args: 'Photo'
  • visa_info Char
    size=64 args: 'Visa Info'
Public methods (0)

No public methods.

New fields (5)
  • batch_id Many2one → op.batch
    required=True args: 'op.batch', 'Batch'
  • course_id Many2one → op.course
    required=True args: 'op.course', 'Course'
  • roll_number Char
    args: 'Roll Number'
  • student_id Many2one → op.student
    ondelete='cascade' args: 'op.student', 'Student'
  • subject_ids Many2many → op.subject
    string='Subjects' args: 'op.subject'
Public methods (0)

No public methods.

New fields (6)
  • code Char
    required=True size=256 args: 'Code'
  • course_id Many2one → op.course
    args: 'op.course', 'Course'
  • grade_weightage Float
    args: 'Grade Weightage'
  • name Char
    required=True size=128 args: 'Name'
  • subject_type Selection
    default='compulsory' required=True args: [('compulsory', 'Compulsory'), ('elective', 'Elective')], 'Subject Type'
  • type Selection
    default='theory' required=True args: [('theory', 'Theory'), ('practical', 'Practical'), ('both', 'Both'), ('other', 'Other')], 'Type'
Public methods (0)

No public methods.

New fields (9)
  • batch_id Many2one → op.batch
    required=True track_visibility='onchange' args: 'op.batch', 'Batch'
  • compulsory_subject_ids Many2many → op.subject
    readonly=True string='Compulsory Subjects' args: 'op.subject', 'subject_compulsory_rel', 'register_id', 'subject_id'
  • course_id Many2one → op.course
    required=True track_visibility='onchange' args: 'op.course', 'Course'
  • elective_subject_ids Many2many → op.subject
    string='Elective Subjects' args: 'op.subject'
  • max_unit_load Float
    track_visibility='onchange' args: 'Maximum Unit Load'
  • min_unit_load Float
    track_visibility='onchange' args: 'Minimum Unit Load'
  • name Char
    default='New' readonly=True args: 'Name'
  • state Selection
    copy=False default='draft' string='state' track_visibility='onchange' args: [('draft', 'Draft'), ('submitted', 'Submitted'), ('approved', 'Approved'), ('rejected', 'Rejected')]
  • student_id Many2one → op.student
    required=True track_visibility='onchange' args: 'op.student', 'Student'
Public methods (6)
  • action_approve(self)
    @api.multi
  • action_reject(self)
    @api.multi
  • action_reset_draft(self)
    @api.multi
  • action_submitted(self)
    @api.multi
  • create(self, vals)
    @api.model
  • get_subjects(self)
    @api.multi

New fields (3)
  • accreditation Text
    args: 'Accreditation'
  • approval_authority Text
    args: 'Approval Authority'
  • signature Binary
    args: 'Signature'
Public methods (0)

No public methods.

New fields (1)
  • user_line One2many → op.student
    args: 'op.student', 'user_id', 'User Line'
Public methods (1)
  • create_user(self, records, user_group=None)
    @api.multi

New fields (1)
  • faculty_ids Many2many → op.faculty
    default=_get_faculties string='Faculties' args: 'op.faculty'
Public methods (1)
  • create_faculty_user(self)
    @api.multi

New fields (1)
  • user_boolean Boolean
    default=True args: 'Want to create user too ?'
Public methods (1)
  • create_employee(self)
    @api.multi

New fields (1)
  • student_ids Many2many → op.student
    default=_get_students string='Students' args: 'op.student'
Public methods (1)
  • create_student_user(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/vertical-education
GIT
GIThttps://github.com/OCA/vertical-education.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/vertical-education/tree/9.0/openeducat_core
VERSION
VERSION 2.4.0
CATEGORY
CATEGORYOpenerp Education
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTech Receptives
MAINTAINERS
MAINTAINERSTech Receptives
COMMITTERS
COMMITTERSGitHub, Stéphane Bidoul (ACSONE), ajaychauhan727, Siddharth, siddharth-techreceptives
WEBSITE
WEBSITEhttp://www.openeducat.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:25
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - board
    - base
    - web
    - document
    - hr
    - base_setup
    - web_kanban
    - mail
    - bus
    - resource
    - web_tip
    - website
    - web_editor
    - web_planner
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module provide core education management system over Odoo.

Features includes managing:

* Student
* Faculty
* Course
* Batch
    

Code Analysis

Views touched (36)
XML IDNameModelTypeStatus
aboutus_openeducat About us ir.ui.view qweb Inherits website.aboutus
assets_backend vs assets ir.ui.view qweb Inherits web.assets_backend
assets_editor Editor assets ir.ui.view qweb Inherits website.assets_editor
board_faculty_form board.faculty.form board.board form New
board_student_form board.student.form board.board form New
fav_ico educat Icon ir.ui.view qweb Inherits web.layout
fav_ico educat Icon ir.ui.view qweb Inherits web.layout
footer_default_openeducat Automatic Footer ir.ui.view qweb Inherits website.footer_default
kanban_view_faculty Faculty Kanban op.faculty kanban New
kanban_view_student Student Kanban op.student kanban New
less less ir.ui.view qweb Inherits website.assets_frontend
op_faculty_create_employee_view wizard.op.faculty.employee.form wizard.op.faculty.employee form New
op_faculty_user_create_view wizard.op.faculty.form wizard.op.faculty form New
op_student_user_create_view wizard.op.student.form wizard.op.student form New
report_student_bonafide report_student_bonafide ir.ui.view qweb New
report_student_idcard report_student_idcard ir.ui.view qweb New
view_company_form_openeducat_core res.company.form.openeducat.core res.company xpath Inherits base.view_company_form
view_employee_form_address_inherit hr.employee.form.address.inherit hr.employee field Inherits hr.view_employee_form
view_op_batch_form op.batch.form op.batch form New
view_op_batch_search op.batch.search op.batch search New
view_op_batch_tree op.batch.tree op.batch tree New
view_op_course_form op.course.form op.course form New
view_op_course_search op.course.search op.course search New
view_op_course_tree op.course.tree op.course tree New
view_op_faculty_form op.faculty.form op.faculty form New
view_op_faculty_search op.faculty.search op.faculty search New
view_op_faculty_tree op.faculty.tree op.faculty tree New
view_op_roll_number_form op.roll.number.form op.roll.number form New
view_op_roll_number_search op.roll.number.search op.roll.number search New
view_op_roll_number_tree op.roll.number.tree op.roll.number tree New
view_op_student_form op.student.form op.student form New
view_op_student_search op.student.search op.student search New
view_op_student_tree op.student.tree op.student tree New
view_op_subject_form op.subject.form op.subject form New
view_op_subject_search op.subject.search op.subject search New
view_op_subject_tree op.subject.tree op.subject tree New
Models touched (14)

New fields (0)

No new fields.

Public methods (2)
  • onchange_address_id(self)
    @api.onchange('address_id')
  • onchange_user(self)
    @api.onchange('user_id')

New fields (5)
  • code Char
    required=True size=8 args: 'Code'
  • course_id Many2one → op.course
    required=True args: 'op.course', 'Course'
  • end_date Date
    required=True args: 'End Date'
  • name Char
    required=True size=32 args: 'Name'
  • start_date Date
    default=fields.Date.today() required=True args: 'Start Date'
Public methods (2)
  • check_dates(self)
    @api.one@api.constrains('start_date', 'end_date')
  • name_search(self, name, args=None, operator='ilike', limit=100)
    @api.model

New fields (6)
  • code Char
    required=True size=8 args: 'Code'
  • evaluation_type Selection
    default='normal' required=True args: [('normal', 'Normal'), ('GPA', 'GPA'), ('CWA', 'CWA'), ('CCE', 'CCE')], 'Evaluation Type'
  • name Char
    required=True size=32 args: 'Name'
  • parent_id Many2one → op.course
    args: 'op.course', 'Parent Course'
  • section Char
    required=True size=32 args: 'Section'
  • subject_ids Many2many → op.subject
    string='Subject(s)' args: 'op.subject'
Public methods (0)

No public methods.

New fields (15)
  • birth_date Date
    required=True args: 'Birth Date'
  • blood_group Selection
    args: [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], 'Blood Group'
  • emergency_contact Many2one → res.partner
    args: 'res.partner', 'Emergency Contact'
  • emp_id Many2one → hr.employee
    args: 'hr.employee', 'Employee'
  • faculty_subject_ids Many2many → op.subject
    string='Subject(s)' args: 'op.subject'
  • gender Selection
    required=True args: [('male', 'Male'), ('female', 'Female')], 'Gender'
  • id_number Char
    size=64 args: 'ID Card Number'
  • last_login Datetime
    readonly=1 related='partner_id.user_id.login_date' args: 'Latest Connection'
  • last_name Char
    required=True size=128 args: 'Last Name'
  • login Char
    readonly=1 related='partner_id.user_id.login' args: 'Login'
  • middle_name Char
    size=128 args: 'Middle Name'
  • nationality Many2one → res.country
    args: 'res.country', 'Nationality'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner', 'Partner'
  • photo Binary
    args: 'Photo'
  • visa_info Char
    size=64 args: 'Visa Info'
Public methods (1)
  • create_employee(self)
    @api.one

New fields (4)
  • batch_id Many2one → op.batch
    required=True args: 'op.batch', 'Batch'
  • course_id Many2one → op.course
    required=True args: 'op.course', 'Course'
  • roll_number Char
    required=True size=8 args: 'Roll Number'
  • student_id Many2one → op.student
    required=True args: 'op.student', 'Student'
Public methods (1)
  • onchange_student(self)
    @api.onchange('student_id')

New fields (16)
  • batch_id Many2one → op.batch
    required=True args: 'op.batch', 'Batch'
  • birth_date Date
    required=True args: 'Birth Date'
  • blood_group Selection
    args: [('A+', 'A+ve'), ('B+', 'B+ve'), ('O+', 'O+ve'), ('AB+', 'AB+ve'), ('A-', 'A-ve'), ('B-', 'B-ve'), ('O-', 'O-ve'), ('AB-', 'AB-ve')], 'Blood Group'
  • course_id Many2one → op.course
    required=True args: 'op.course', 'Course'
  • emergency_contact Many2one → res.partner
    args: 'res.partner', 'Emergency Contact'
  • gender Selection
    required=True args: [('m', 'Male'), ('f', 'Female'), ('o', 'Other')], 'Gender'
  • gr_no Char
    size=20 args: 'GR Number'
  • id_number Char
    size=64 args: 'ID Card Number'
  • last_name Char
    required=True size=128 args: 'Last Name'
  • middle_name Char
    size=128 args: 'Middle Name'
  • nationality Many2one → res.country
    args: 'res.country', 'Nationality'
  • partner_id Many2one → res.partner
    ondelete='cascade' required=True args: 'res.partner', 'Partner'
  • photo Binary
    args: 'Photo'
  • roll_number Char
    compute='_get_curr_roll_number' size=8 store=True args: 'Current Roll Number'
  • roll_number_line One2many → op.roll.number
    args: 'op.roll.number', 'student_id', 'Roll Number'
  • visa_info Char
    size=64 args: 'Visa Info'
Public methods (1)
  • onchange_course(self)
    @api.onchange('course_id')

New fields (5)
  • code Char
    required=True size=256 args: 'Code'
  • course_id Many2one → op.course
    args: 'op.course', 'Course'
  • grade_weightage Float
    args: 'Grade Weightage'
  • name Char
    required=True size=128 args: 'Name'
  • type Selection
    default='theory' required=True args: [('theory', 'Theory'), ('practical', 'Practical'), ('both', 'Both'), ('other', 'Other')], 'Type'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (3)
  • accreditation Text
    args: 'Accreditation'
  • approval_authority Text
    args: 'Approval Authority'
  • signature Binary
    args: 'Signature'
Public methods (0)

No public methods.

New fields (1)
  • user_line One2many → op.student
    args: 'op.student', 'user_id', 'User Line'
Public methods (1)
  • create_user(self, records, user_group=None)
    @api.multi

New fields (1)
  • faculty_ids Many2many → op.faculty
    default=_get_faculties string='Faculties' args: 'op.faculty'
Public methods (1)
  • create_faculty_user(self)
    @api.one

New fields (1)
  • user_boolean Boolean
    default=True args: 'Want to create user too ?'
Public methods (1)
  • create_employee(self)
    @api.one

New fields (1)
  • student_ids Many2many → op.student
    default=_get_students string='Students' args: 'op.student'
Public methods (1)
  • create_student_user(self)
    @api.one