| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-education |
| GIT | |
| GIT | https://github.com/OCA/vertical-education.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-education/tree/10.0/openeducat_exam |
| VERSION | |
| VERSION | 3.0.0 |
| CATEGORY | |
| CATEGORY | Education |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tech Receptives |
| MAINTAINERS | |
| MAINTAINERS | Tech Receptives |
| COMMITTERS | |
| COMMITTERS | Maxime Chambreuil, Pedro M. Baeza, Stéphane Bidoul (ACSONE), Parthiv Patel, ajaychauhan727, Ajay Chauhan |
| WEBSITE | |
| WEBSITE | http://www.openeducat.org |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:20:03 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/vertical-education: - openeducat_core - openeducat_classroom - openeducat_facility odoo/odoo: - board - base - web - document - hr - base_setup - web_kanban - bus - web_tour - resource - website - web_editor - web_planner - product - decimal_precision - report |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION | |
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
report_exam_student_lable |
report_exam_student_lable | ir.ui.view | qweb | New |
report_marksheet_report |
report_marksheet_report | ir.ui.view | qweb | New |
report_ticket |
report_ticket | ir.ui.view | qweb | New |
student_hall_ticket_form |
student.hall.ticket.form | student.hall.ticket | form | New |
view_op_exam_attendees_form |
op.exam.attendees.form | op.exam.attendees | form | New |
view_op_exam_attendees_search |
op.exam.attendees.search | op.exam.attendees | search | New |
view_op_exam_attendees_tree |
op.exam.attendees.tree | op.exam.attendees | tree | New |
view_op_exam_form |
op.exam.form | op.exam | form | New |
view_op_exam_room_form |
op.exam.room.form | op.exam.room | form | New |
view_op_exam_room_search |
op.exam.room.search | op.exam.room | search | New |
view_op_exam_room_tree |
op.exam.room.tree | op.exam.room | tree | New |
view_op_exam_search |
op.exam.search | op.exam | search | New |
view_op_exam_session_form |
op.exam.session.form | op.exam.session | form | New |
view_op_exam_session_search |
op.exam.session.search | op.exam.session | search | New |
view_op_exam_session_tree |
op.exam.session.tree | op.exam.session | tree | New |
view_op_exam_tree |
op.exam.tree | op.exam | tree | New |
view_op_exam_type_form |
op.exam.type.form | op.exam.type | form | New |
view_op_exam_type_search |
op.exam.type.search | op.exam.type | search | New |
view_op_exam_type_tree |
op.exam.type.tree | op.exam.type | tree | New |
view_op_grade_configuration_form |
op.grade.configuration.form | op.grade.configuration | form | New |
view_op_grade_configuration_tree |
op.grade.configuration.tree | op.grade.configuration | tree | New |
view_op_held_exam_form |
op.held.exam.form | op.held.exam | form | New |
view_op_marksheet_line_form |
op.marksheet.line.form | op.marksheet.line | form | New |
view_op_marksheet_line_search |
op.marksheet.line.search | op.marksheet.line | search | New |
view_op_marksheet_line_tree |
op.marksheet.line.tree | op.marksheet.line | tree | New |
view_op_marksheet_register_form |
op.marksheet.register.form | op.marksheet.register | form | New |
view_op_marksheet_register_search |
op.marksheet.register.search | op.marksheet.register | search | New |
view_op_marksheet_register_tree |
op.marksheet.register.tree | op.marksheet.register | tree | New |
view_op_result_line_form |
op.result.line.form | op.result.line | form | New |
view_op_result_line_search |
op.result.line.search | op.result.line | search | New |
view_op_result_line_tree |
op.result.line.tree | op.result.line | tree | New |
view_op_result_template_form |
op.result.template.form | op.result.template | form | New |
view_op_result_template_search |
op.result.template.search | op.result.template | search | New |
view_op_result_template_tree |
op.result.template.tree | op.result.template | tree | New |
view_op_room_distribution_form |
op.room.distribution.form | op.room.distribution | form | New |
attendees_line
One2many → op.exam.attendees
readonly=True
args: 'op.exam.attendees', 'exam_id', 'Attendees'
end_time
Datetime
required=True
args: 'End Time'
exam_code
Char
required=True
size=8
args: 'Exam Code'
min_marks
Integer
required=True
args: 'Passing Marks'
name
Char
required=True
size=256
args: 'Exam'
note
Text
responsible_id
Many2many → op.faculty
string='Responsible'
args: 'op.faculty'
session_id
Many2one → op.exam.session
start_time
Datetime
required=True
args: 'Start Time'
state
Selection
default='draft'
readonly=True
track_visibility='onchange'
args: [('draft', 'Draft'), ('schedule', 'Scheduled'), ('held', 'Held'), ('result_updated', 'Result Updated'), ('cancel', 'Cancelled'), ('done', 'Done')], 'State'
subject_id
Many2one → op.subject
required=True
args: 'op.subject', 'Subject'
total_marks
Integer
required=True
args: 'Total Marks'
act_cancel(self)
act_done(self)
act_draft(self)
act_result_updated(self)
batch_id
Many2one → op.batch
readonly=True
args: 'op.batch', 'Batch'
course_id
Many2one → op.course
readonly=True
args: 'op.course', 'Course'
exam_id
Many2one → op.exam
required=True
args: 'op.exam', 'Exam'
marks
Integer
note
Text
room_id
Many2one → op.exam.room
status
Selection
default='present'
required=True
args: [('present', 'Present'), ('absent', 'Absent')], 'Status'
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
onchange_exam(self)
capacity
Integer
required=True
args: 'Capacity'
classroom_id
Many2one → op.classroom
required=True
args: 'op.classroom', 'Classroom'
name
Char
required=True
size=256
args: 'Name'
check_capacity(self)
onchange_classroom(self)
batch_id
Many2one → op.batch
required=True
args: 'op.batch', 'Batch'
course_id
Many2one → op.course
required=True
args: 'op.course', 'Course'
end_date
Date
required=True
args: 'End Date'
evolution_type
Selection
default='normal'
required=True
args: [('normal', 'Normal'), ('grade', 'Grade')], 'Evolution type'
exam_code
Char
required=True
size=8
args: 'Exam Session Code'
exam_ids
One2many → op.exam
exam_type
Many2one → op.exam.type
required=True
args: 'op.exam.type', 'Exam Type'
name
Char
required=True
size=256
args: 'Exam Session'
start_date
Date
required=True
args: 'Start Date'
venue
Many2one → res.partner
onchange_course(self)
code
Char
required=True
size=4
args: 'Code'
name
Char
required=True
size=256
args: 'Name'
No public methods.
max_per
Integer
required=True
args: 'Maximum Percentage'
min_per
Integer
required=True
args: 'Minimum Percentage'
result
Char
required=True
args: 'Result to Display'
No public methods.
attendees_line
Many2many → op.exam.attendees
string='Attendees'
args: 'op.exam.attendees'
batch_id
Many2one → op.batch
course_id
Many2one → op.course
exam_id
Many2one → op.exam
subject_id
Many2one → op.subject
default_get(self, fields)
held_exam(self)
evolution_type
Selection
related='marksheet_reg_id.exam_session_id.evolution_type'
store=True
grade
Char
compute='_compute_grade'
readonly=True
args: 'Grade'
marksheet_reg_id
Many2one → op.marksheet.register
percentage
Float
compute='_compute_percentage'
args: 'Percentage'
result_line
One2many → op.result.line
status
Selection
compute='_compute_status'
args: [('pass', 'Pass'), ('fail', 'Fail')], 'Status'
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
total_marks
Integer
compute='_compute_total_marks'
args: 'Total Marks'
No public methods.
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam Session'
generated_by
Many2one → res.users
default=<expr>
required=True
args: 'res.users', 'Generated By'
generated_date
Date
default=fields.Date.today()
required=True
args: 'Generated Date'
marksheet_line
One2many → op.marksheet.line
name
Char
required=True
size=256
args: 'Marksheet Register'
result_template_id
Many2one → op.result.template
required=True
args: 'op.result.template', 'Result Template'
status
Selection
default='draft'
required=True
args: [('draft', 'Draft'), ('validated', 'Validated'), ('cancelled', 'Cancelled')], 'Status'
total_failed
Integer
compute='_compute_total_failed'
args: 'Total Fail'
total_pass
Integer
compute='_compute_total_pass'
args: 'Total Pass'
No public methods.
evolution_type
Selection
related='exam_id.session_id.evolution_type'
store=True
exam_id
Many2one → op.exam
required=True
args: 'op.exam', 'Exam'
grade
Char
compute='_compute_grade'
readonly=True
args: 'Grade'
marks
Integer
required=True
args: 'Marks'
marksheet_line_id
Many2one → op.marksheet.line
ondelete='cascade'
args: 'op.marksheet.line', 'Marksheet Line'
status
Selection
compute='_compute_status'
args: [('pass', 'Pass'), ('fail', 'Fail')], 'Status'
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
No public methods.
evolution_type
Selection
related='exam_session_id.evolution_type'
store=True
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam Session'
grade_ids
Many2many → op.grade.configuration
string='Grade Configuration'
args: 'op.grade.configuration'
name
Char
required=True
size=254
args: 'Name'
result_date
Date
default=fields.Date.today()
required=True
args: 'Result Date'
state
Selection
default='draft'
args: [('draft', 'Draft'), ('result_generated', 'Result Generated')], 'State'
generate_result(self)
batch_id
Many2one → op.batch
course_id
Many2one → op.course
end_time
Datetime
exam_id
Many2one → op.exam
exam_session
Many2one → op.exam.session
name
Char
room_capacity
Integer
compute='_compute_get_room_capacity'
args: 'Room Capacity'
room_ids
Many2many → op.exam.room
string='Exam Rooms'
args: 'op.exam.room'
start_time
Datetime
student_ids
Many2many → op.student
String='Student'
args: 'op.student'
subject_id
Many2one → op.subject
total_student
Integer
compute='_compute_get_total_student'
args: 'Total Student'
default_get(self, fields)
schedule_exam(self)
No new fields.
Public methods (3)format_list(self, temp_list)
get_student_data(self, docs)
render_html(self, docids, data=None)
No new fields.
Public methods (5)get_date(self, date)
get_lines(self, obj)
get_objects(self, objects)
get_total(self, marksheet_line)
render_html(self, docids, data=None)
No new fields.
Public methods (4)get_data(self, data)
get_date(self, exam_line)
get_subject(self, exam_session)
render_html(self, docids, data=None)
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam Session'
print_report(self)
| REPOSITORY | |
|---|---|
| REPOSITORY | OCA/vertical-education |
| GIT | |
| GIT | https://github.com/OCA/vertical-education.git |
| GIT FOLDER | |
| GIT FOLDER | https://github.com/OCA/vertical-education/tree/9.0/openeducat_exam |
| VERSION | |
| VERSION | 2.4.0 |
| CATEGORY | |
| CATEGORY | Openerp Education |
| LICENSE | |
| LICENSE | LGPL-3 |
| APPLICATION | |
| APPLICATION | Yes |
| AUTO-INSTALLABLE | |
| AUTO-INSTALLABLE | No |
| AUTHORS | |
| AUTHORS | Tech Receptives |
| MAINTAINERS | |
| MAINTAINERS | Tech Receptives |
| COMMITTERS | |
| COMMITTERS | Stéphane Bidoul (ACSONE), ajaychauhan727, siddharth-techreceptives |
| WEBSITE | |
| WEBSITE | http://www.openeducat.org |
| LAST TRACKING UPDATE | |
| LAST TRACKING UPDATE | 2026-07-06 00:15:25 |
| ODOO DEPENDENCIES | |
| ODOO DEPENDENCIES |
OCA/vertical-education: - openeducat_classroom - openeducat_core - openeducat_facility odoo/odoo: - board - base - web - document - hr - base_setup - web_kanban - bus - resource - web_tip - website - web_editor - web_planner - product - decimal_precision - report |
| PYTHON DEPENDENCIES | |
| PYTHON DEPENDENCIES | Not have |
| SYSTEM DEPENDENCIES | |
| SYSTEM DEPENDENCIES | Not have |
| DESCRIPTION | |
| DESCRIPTION |
This module provide exam management system over OpenERP
|
| XML ID | Name | Model | Type | Status |
|---|---|---|---|---|
report_exam_student_lable |
report_exam_student_lable | ir.ui.view | qweb | New |
report_marksheet_report |
report_marksheet_report | ir.ui.view | qweb | New |
report_ticket |
report_ticket | ir.ui.view | qweb | New |
student_hall_ticket_form |
student.hall.ticket.form | student.hall.ticket | form | New |
view_op_exam_attendees_form |
op.exam.attendees.form | op.exam.attendees | form | New |
view_op_exam_attendees_search |
op.exam.attendees.search | op.exam.attendees | search | New |
view_op_exam_attendees_tree |
op.exam.attendees.tree | op.exam.attendees | tree | New |
view_op_exam_form |
op.exam.form | op.exam | form | New |
view_op_exam_res_allocation_form |
op.exam.res.allocation.form | op.exam.res.allocation | form | New |
view_op_exam_res_allocation_search |
op.exam.res.allocation.search | op.exam.res.allocation | search | New |
view_op_exam_res_allocation_tree |
op.exam.res.allocation.tree | op.exam.res.allocation | tree | New |
view_op_exam_room_form |
op.exam.room.form | op.exam.room | form | New |
view_op_exam_room_search |
op.exam.room.search | op.exam.room | search | New |
view_op_exam_room_tree |
op.exam.room.tree | op.exam.room | tree | New |
view_op_exam_search |
op.exam.search | op.exam | search | New |
view_op_exam_session_form |
op.exam.session.form | op.exam.session | form | New |
view_op_exam_session_search |
op.exam.session.search | op.exam.session | search | New |
view_op_exam_session_tree |
op.exam.session.tree | op.exam.session | tree | New |
view_op_exam_tree |
op.exam.tree | op.exam | tree | New |
view_op_exam_type_form |
op.exam.type.form | op.exam.type | form | New |
view_op_exam_type_search |
op.exam.type.search | op.exam.type | search | New |
view_op_exam_type_tree |
op.exam.type.tree | op.exam.type | tree | New |
view_op_marksheet_line_form |
op.marksheet.line.form | op.marksheet.line | form | New |
view_op_marksheet_line_search |
op.marksheet.line.search | op.marksheet.line | search | New |
view_op_marksheet_line_tree |
op.marksheet.line.tree | op.marksheet.line | tree | New |
view_op_marksheet_register_form |
op.marksheet.register.form | op.marksheet.register | form | New |
view_op_marksheet_register_search |
op.marksheet.register.search | op.marksheet.register | search | New |
view_op_marksheet_register_tree |
op.marksheet.register.tree | op.marksheet.register | tree | New |
view_op_min_clearance_criteria_form |
op.min.clear.criteria.form | op.min.clear.criteria | form | New |
view_op_min_clearance_criteria_tree |
op.min.clear.criteria.tree | op.min.clear.criteria | tree | New |
view_op_pass_status_form |
op.pass.status.form | op.pass.status | form | New |
view_op_pass_status_tree |
op.pass.status.tree | op.pass.status | tree | New |
view_op_result_exam_line_form |
op.result.exam.line.form | op.result.exam.line | form | New |
view_op_result_exam_line_search |
op.result.exam.line.search | op.result.exam.line | search | New |
view_op_result_exam_line_tree |
op.result.exam.line.tree | op.result.exam.line | tree | New |
view_op_result_line_form |
op.result.line.form | op.result.line | form | New |
view_op_result_line_search |
op.result.line.search | op.result.line | search | New |
view_op_result_line_tree |
op.result.line.tree | op.result.line | tree | New |
view_op_result_template_form |
op.result.template.form | op.result.template | form | New |
view_op_result_template_line_form |
op.result.template.line.form | op.result.template.line | form | New |
view_op_result_template_line_search |
op.result.template.line.search | op.result.template.line | search | New |
view_op_result_template_line_tree |
op.result.template.line.tree | op.result.template.line | tree | New |
view_op_result_template_search |
op.result.template.search | op.result.template | search | New |
view_op_result_template_tree |
op.result.template.tree | op.result.template | tree | New |
attendees_line
One2many → op.exam.attendees
readonly=True
args: 'op.exam.attendees', 'exam_id', 'Attendees'
end_time
Datetime
required=True
args: 'End Time'
evaluation_type
Selection
default='normal'
required=True
args: [('normal', 'Normal'), ('GPA', 'GPA'), ('CWA', 'CWA'), ('CCE', 'CCE')], 'Evaluation Type'
exam_code
Char
required=True
size=8
args: 'Exam Code'
exam_type
Many2one → op.exam.type
required=True
args: 'op.exam.type', 'Exam Type'
min_marks
Float
required=True
args: 'Passing Marks'
name
Char
required=True
size=256
args: 'Exam'
note
Text
responsible_id
Many2many → op.faculty
string='Responsible'
args: 'op.faculty'
session_id
Many2one → op.exam.session
start_time
Datetime
required=True
args: 'Start Time'
state
Selection
default='new'
readonly=True
select=True
track_visibility='onchange'
args: [('new', 'New Exam'), ('schedule', 'Scheduled'), ('held', 'Held'), ('cancel', 'Cancelled'), ('done', 'Done')], 'State'
subject_id
Many2one → op.subject
required=True
args: 'op.subject', 'Subject'
total_marks
Float
required=True
args: 'Total Marks'
venue
Many2one → res.partner
act_cancel(self)
act_done(self)
act_held(self)
act_new_exam(self)
act_schedule(self)
batch_id
Many2one → op.batch
readonly=True
args: 'op.batch', 'Batch'
course_id
Many2one → op.course
readonly=True
args: 'op.course', 'Course'
exam_id
Many2one → op.exam
required=True
args: 'op.exam', 'Exam'
marks
Float
note
Text
status
Selection
default='present'
required=True
args: [('present', 'Present'), ('absent', 'Absent')], 'Status'
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
onchange_exam(self)
exam_ids
Many2many → op.exam
string='Exam(s)'
args: 'op.exam'
exam_session_ids
Many2many → op.exam.session
string='Select Exam Session'
args: 'op.exam.session'
faculty_ids
Many2many → op.faculty
string='Faculty'
args: 'op.faculty'
student_ids
Many2many → op.student
string='Student'
args: 'op.student'
onchange_exam_session_res(self)
capacity
Integer
required=True
args: 'Capacity'
classroom_id
Many2one → op.classroom
required=True
args: 'op.classroom', 'Classroom'
course_ids
Many2many → op.course
string='Course(s)'
args: 'op.course'
name
Char
required=True
size=256
args: 'Name'
student_ids
Many2many → op.student
string='Student(s)'
args: 'op.student'
check_capacity(self)
onchange_classroom(self)
batch_id
Many2one → op.batch
required=True
args: 'op.batch', 'Batch'
course_id
Many2one → op.course
required=True
args: 'op.course', 'Course'
end_date
Date
required=True
args: 'End Date'
exam_code
Char
required=True
size=8
args: 'Exam Code'
exam_ids
One2many → op.exam
name
Char
required=True
size=256
args: 'Exam'
room_id
Many2one → op.exam.room
required=True
args: 'op.exam.room', 'Room'
start_date
Date
required=True
args: 'Start Date'
onchange_course(self)
code
Char
required=True
size=4
args: 'Code'
name
Char
required=True
size=256
args: 'Name'
No public methods.
exam_session_id
Many2one → op.result.template.line
marksheet_reg_id
Many2one → op.marksheet.register
result
Char
size=256
args: 'Result'
result_line
One2many → op.result.line
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
total_marks
Float
total_per
Float
No public methods.
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam'
generated_by
Many2one → res.users
default=<expr>
required=True
args: 'res.users', 'Generated By'
generated_date
Date
default=fields.Date.today()
required=True
args: 'Generated Date'
marksheet_line
One2many → op.marksheet.line
name
Char
required=True
size=256
args: 'Marksheet Register'
status
Selection
default='draft'
required=True
args: [('draft', 'Draft'), ('validated', 'Validated'), ('cancelled', 'Cancelled')], 'Status'
total_failed
Float
total_pass
Float
No public methods.
name
Char
size=256
args: 'Name'
number
Float
result
Char
No public methods.
name
Char
size=256
args: 'Name'
number
Float
result
Char
No public methods.
exam_id
Many2one → op.exam
pass_marks
Float
readonly=True
related='exam_id.min_marks'
args: 'Passing Marks'
result_id
Many2one → op.result.template.line
result_lines
One2many → op.result.line
total_marks
Float
readonly=True
related='exam_id.total_marks'
args: 'Total Marks'
weightage
Float
No public methods.
exam_id
Many2one → op.exam
required=True
args: 'op.exam', 'Exam'
exam_tmpl_id
Many2one → op.result.exam.line
marks
Float
required=True
args: 'Marks'
marksheet_line_id
Many2one → op.marksheet.line
per
Float
required=True
args: 'Percentage'
result_id
Many2one → op.marksheet.line
status
Selection
default='pass'
required=True
args: [('pass', 'Pass'), ('fail', 'Fail')], 'Status'
student_id
Many2one → op.student
required=True
args: 'op.student', 'Student'
total_marks
Float
No public methods.
criteria_ids
Many2many → op.min.clear.criteria
string='Minimum Qualification Criteria'
args: 'op.min.clear.criteria'
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam Session'
line_ids
One2many → op.result.template.line
name
Char
required=True
size=254
args: 'Name'
pass_status_ids
Many2many → op.pass.status
string='Pass Status'
args: 'op.pass.status'
result_date
Date
default=fields.Date.today()
required=True
args: 'Result Date'
generate_result(self)
batch_id
Many2one → op.batch
readonly=True
related='exam_session_id.batch_id'
args: 'op.batch', 'Batch'
course_id
Many2one → op.course
readonly=True
related='exam_session_id.course_id'
args: 'op.course', 'Course'
detailed_report
Boolean
exam_lines
One2many → op.result.exam.line
exam_session_id
Many2one → op.exam.session
result_id
Many2one → op.result.template
onchange_exam_session(self)
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
No new fields.
Public methods (0)No public methods.
exam_session_id
Many2one → op.exam.session
required=True
args: 'op.exam.session', 'Exam Session'
print_report(self)