OpenEduCat Exam

openeducat_exam
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_exam
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 OCA/vertical-education:
    - openeducat_core
    - openeducat_classroom
    - openeducat_facility
odoo/odoo:
    - board
    - base
    - web
    - document
    - hr
    - base_setup
    - web_kanban
    - mail
    - 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

Code Analysis

Views touched (35)
XML IDNameModelTypeStatus
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
Models touched (16)

New fields (12)
  • 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
    args: 'Note'
  • responsible_id Many2many → op.faculty
    string='Responsible' args: 'op.faculty'
  • session_id Many2one → op.exam.session
    args: 'op.exam.session', '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'
Public methods (4)
  • act_cancel(self)
    @api.multi
  • act_done(self)
    @api.multi
  • act_draft(self)
    @api.multi
  • act_result_updated(self)
    @api.multi

New fields (8)
  • 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
    args: 'Marks'
  • note Text
    args: 'Note'
  • room_id Many2one → op.exam.room
    args: 'op.exam.room', 'Room'
  • status Selection
    default='present' required=True args: [('present', 'Present'), ('absent', 'Absent')], 'Status'
  • student_id Many2one → op.student
    required=True args: 'op.student', 'Student'
Public methods (1)
  • onchange_exam(self)
    @api.onchange('exam_id')

New fields (3)
  • 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'
Public methods (2)
  • check_capacity(self)
    @api.constrains('capacity')
  • onchange_classroom(self)
    @api.onchange('classroom_id')

New fields (10)
  • 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
    args: 'op.exam', 'session_id', 'Exam(s)'
  • 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
    args: 'res.partner', 'Venue'
Public methods (1)
  • onchange_course(self)
    @api.onchange('course_id')

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 (3)
  • max_per Integer
    required=True args: 'Maximum Percentage'
  • min_per Integer
    required=True args: 'Minimum Percentage'
  • result Char
    required=True args: 'Result to Display'
Public methods (0)

No public methods.

New fields (5)
  • attendees_line Many2many → op.exam.attendees
    string='Attendees' args: 'op.exam.attendees'
  • batch_id Many2one → op.batch
    args: 'op.batch', 'Batch'
  • course_id Many2one → op.course
    args: 'op.course', 'Course'
  • exam_id Many2one → op.exam
    args: 'op.exam', 'Exam'
  • subject_id Many2one → op.subject
    args: 'op.subject', 'Subject'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • held_exam(self)
    @api.multi

New fields (8)
  • 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
    args: 'op.marksheet.register', 'Marksheet Register'
  • percentage Float
    compute='_compute_percentage' args: 'Percentage'
  • result_line One2many → op.result.line
    args: 'op.result.line', 'marksheet_line_id', 'Results'
  • 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'
Public methods (0)

No public methods.

New fields (9)
  • 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
    args: 'op.marksheet.line', 'marksheet_reg_id', 'Marksheets'
  • 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'
Public methods (0)

No public methods.

New fields (7)
  • 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'
Public methods (0)

No public methods.

New fields (6)
  • 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'
Public methods (1)
  • generate_result(self)
    @api.multi

New fields (12)
  • batch_id Many2one → op.batch
    args: 'op.batch', 'Batch'
  • course_id Many2one → op.course
    args: 'op.course', 'Course'
  • end_time Datetime
    args: 'End Time'
  • exam_id Many2one → op.exam
    args: 'op.exam', 'Exam'
  • exam_session Many2one → op.exam.session
    args: 'op.exam.session', 'Exam Session'
  • name Char
    args: 'Exam'
  • 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
    args: 'Start Time'
  • student_ids Many2many → op.student
    String='Student' args: 'op.student'
  • subject_id Many2one → op.subject
    args: 'op.subject', 'Subject'
  • total_student Integer
    compute='_compute_get_total_student' args: 'Total Student'
Public methods (2)
  • default_get(self, fields)
    @api.model
  • schedule_exam(self)
    @api.multi

New fields (0)

No new fields.

Public methods (3)
  • format_list(self, temp_list)
  • get_student_data(self, docs)
  • render_html(self, docids, data=None)
    @api.model

New fields (0)

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)
    @api.model

New fields (0)

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)
    @api.model

New fields (1)
  • exam_session_id Many2one → op.exam.session
    required=True args: 'op.exam.session', 'Exam Session'
Public methods (1)
  • print_report(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_exam
VERSION
VERSION 2.4.0
CATEGORY
CATEGORYOpenerp Education
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSTech Receptives
MAINTAINERS
MAINTAINERSTech Receptives
COMMITTERS
COMMITTERSStéphane Bidoul (ACSONE), ajaychauhan727, siddharth-techreceptives
WEBSITE
WEBSITEhttp://www.openeducat.org
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-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
    - mail
    - 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
    

Code Analysis

Views touched (44)
XML IDNameModelTypeStatus
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
Models touched (18)

New fields (15)
  • 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
    args: 'Note'
  • responsible_id Many2many → op.faculty
    string='Responsible' args: 'op.faculty'
  • session_id Many2one → op.exam.session
    args: 'op.exam.session', '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
    args: 'res.partner', 'Venue'
Public methods (5)
  • act_cancel(self)
    @api.one
  • act_done(self)
    @api.one
  • act_held(self)
    @api.one
  • act_new_exam(self)
    @api.one
  • act_schedule(self)
    @api.one

New fields (7)
  • 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
    args: 'Marks'
  • note Text
    args: 'Note'
  • status Selection
    default='present' required=True args: [('present', 'Present'), ('absent', 'Absent')], 'Status'
  • student_id Many2one → op.student
    required=True args: 'op.student', 'Student'
Public methods (1)
  • onchange_exam(self)
    @api.onchange('exam_id')

New fields (4)
  • 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'
Public methods (1)
  • onchange_exam_session_res(self)
    @api.onchange('exam_session_ids')

New fields (5)
  • 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'
Public methods (2)
  • check_capacity(self)
    @api.constrains('capacity')
  • onchange_classroom(self)
    @api.onchange('classroom_id')

New fields (8)
  • 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
    args: 'op.exam', 'session_id', 'Exam(s)'
  • 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'
Public methods (1)
  • onchange_course(self)
    @api.onchange('course_id')

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 (7)
  • exam_session_id Many2one → op.result.template.line
    args: 'op.result.template.line', 'Session Template'
  • marksheet_reg_id Many2one → op.marksheet.register
    args: 'op.marksheet.register', 'Marksheet Register'
  • result Char
    size=256 args: 'Result'
  • result_line One2many → op.result.line
    args: 'op.result.line', 'result_id', 'Results'
  • student_id Many2one → op.student
    required=True args: 'op.student', 'Student'
  • total_marks Float
    args: 'Total Marks'
  • total_per Float
    args: 'Total Percentage'
Public methods (0)

No public methods.

New fields (8)
  • 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
    args: 'op.marksheet.line', 'marksheet_reg_id', 'Marksheets'
  • 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
    args: 'Total Fail'
  • total_pass Float
    args: 'Total Pass'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    size=256 args: 'Name'
  • number Float
    args: 'Number of Failed Subject'
  • result Char
    args: 'Result to Display'
Public methods (0)

No public methods.

New fields (3)
  • name Char
    size=256 args: 'Name'
  • number Float
    args: 'Minimum Percentage'
  • result Char
    args: 'Result to Display'
Public methods (0)

No public methods.

New fields (6)
  • exam_id Many2one → op.exam
    args: 'op.exam', 'Exam'
  • pass_marks Float
    readonly=True related='exam_id.min_marks' args: 'Passing Marks'
  • result_id Many2one → op.result.template.line
    args: 'op.result.template.line', 'Session Template'
  • result_lines One2many → op.result.line
    args: 'op.result.line', 'exam_tmpl_id', 'Result Lines'
  • total_marks Float
    readonly=True related='exam_id.total_marks' args: 'Total Marks'
  • weightage Float
    args: 'Weightage'
Public methods (0)

No public methods.

New fields (9)
  • exam_id Many2one → op.exam
    required=True args: 'op.exam', 'Exam'
  • exam_tmpl_id Many2one → op.result.exam.line
    args: 'op.result.exam.line', 'Exam Template'
  • marks Float
    required=True args: 'Marks'
  • marksheet_line_id Many2one → op.marksheet.line
    args: 'op.marksheet.line', 'Marksheet Line'
  • per Float
    required=True args: 'Percentage'
  • result_id Many2one → op.marksheet.line
    args: 'op.marksheet.line', '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
    args: 'Total Marks'
Public methods (0)

No public methods.

New fields (6)
  • 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
    args: 'op.result.template.line', 'result_id', 'Session Lines'
  • 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'
Public methods (1)
  • generate_result(self)
    @api.one

New fields (6)
  • 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
    args: 'Detailed Report'
  • exam_lines One2many → op.result.exam.line
    args: 'op.result.exam.line', 'result_id', 'Exam Lines'
  • exam_session_id Many2one → op.exam.session
    args: 'op.exam.session', 'Exam Session'
  • result_id Many2one → op.result.template
    args: 'op.result.template', 'Result Template Line'
Public methods (1)
  • onchange_exam_session(self)
    @api.onchange('exam_session_id')

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 (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • exam_session_id Many2one → op.exam.session
    required=True args: 'op.exam.session', 'Exam Session'
Public methods (1)
  • print_report(self)
    @api.multi