You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
148 lines
7.6 KiB
148 lines
7.6 KiB
# -*- coding: utf-8 -*-
|
|
###############################################################################
|
|
#
|
|
# Cybrosys Technologies Pvt. Ltd.
|
|
#
|
|
# Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
|
|
# Author: Raneesha M K (odoo@cybrosys.com)
|
|
#
|
|
# You can modify it under the terms of the GNU AFFERO
|
|
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
|
|
#
|
|
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
|
|
# (AGPL v3) along with this program.
|
|
# If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
###############################################################################
|
|
from odoo import api, fields, models, _
|
|
|
|
|
|
class UniversityStudent(models.Model):
|
|
"""To keep records of university student details"""
|
|
_name = 'university.student'
|
|
_inherit = ['mail.thread', 'mail.activity.mixin']
|
|
_inherits = {'res.partner': 'partner_id'}
|
|
_description = 'University student records'
|
|
|
|
@api.model
|
|
def create(self, vals):
|
|
""" This method overrides the create method to assign a sequence number
|
|
to the newly created record.
|
|
:param vals (dict): Dictionary containing the field values for the
|
|
new university student record.
|
|
:returns class: university.student The created university student
|
|
record.
|
|
"""
|
|
vals['admission_no'] = self.env['ir.sequence'].next_by_code(
|
|
'university.student')
|
|
res = super(UniversityStudent, self).create(vals)
|
|
return res
|
|
|
|
partner_id = fields.Many2one(
|
|
'res.partner', string='Partner', help="Student Partner",
|
|
required=True, ondelete="cascade")
|
|
middle_name = fields.Char(string='Middle Name',
|
|
help="Middle Name of the student")
|
|
last_name = fields.Char(string='Last Name', help="Last name of student")
|
|
application_no = fields.Char(string="Application No",
|
|
help="Application number of the student")
|
|
date_of_birth = fields.Date(string="Date of Birth", requird=True,
|
|
help="Date of Birth details")
|
|
guardian_id = fields.Many2one('res.partner', string="Guardian",
|
|
help="Student guardian details",
|
|
domain=[('is_parent', '=', True)])
|
|
father_name = fields.Char(string="Father", help="Student father details")
|
|
mother_name = fields.Char(string="Mother", help="Student mother details")
|
|
semester_id = fields.Many2one('university.semester',
|
|
string="Semester",
|
|
help="Which semester of student is")
|
|
department_id = fields.Many2one(related='semester_id.department_id',
|
|
help="Which department in semester",
|
|
string="Department")
|
|
course_id = fields.Many2one(related='department_id.course_id',
|
|
help="Which course in the department",
|
|
string="Course")
|
|
admission_no = fields.Char(string="Admission Number", readonly=True,
|
|
help="Admission no. of the student ")
|
|
gender = fields.Selection([('male', 'Male'),
|
|
('female', 'Female'),
|
|
('other', 'Other')],
|
|
help="Student gender details",
|
|
string='Gender', required=True, default='male',
|
|
track_visibility='onchange')
|
|
blood_group = fields.Selection([('a+', 'A+'),
|
|
('a-', 'A-'),
|
|
('b+', 'B+'),
|
|
('o+', 'O+'),
|
|
('o-', 'O-'),
|
|
('ab-', 'AB-'),
|
|
('ab+', 'AB+')],
|
|
string='Blood Group', required=True,
|
|
help="Student blood group details",
|
|
default='a+',
|
|
track_visibility='onchange')
|
|
company_id = fields.Many2one('res.company', string='Company',
|
|
help="Company")
|
|
per_street = fields.Char(string="Street", help="Street Address")
|
|
per_street2 = fields.Char(string="Street2", help="Street2 address")
|
|
per_zip = fields.Char(change_default=True, string="Zip",
|
|
help="Zip/Pincode details")
|
|
per_city = fields.Char(string="City", help="Student living city")
|
|
per_state_id = fields.Many2one("res.country.state",
|
|
string='State',help="State",
|
|
ondelete='restrict')
|
|
per_country_id = fields.Many2one('res.country',
|
|
string='Country',
|
|
help="Nationality of student",
|
|
ondelete='restrict')
|
|
mother_tongue = fields.Char(string="Mother Tongue",
|
|
help="Student mother tongue")
|
|
caste = fields.Char(string="Caste",
|
|
help="Student caste details")
|
|
religion = fields.Char(string="Religion",
|
|
help="Student religion details")
|
|
is_same_address = fields.Boolean(string="Is same Address?",
|
|
help="Enable if student have single "
|
|
"address")
|
|
nationality_id = fields.Many2one('res.country',
|
|
string='Nationality',
|
|
help="Nationality of student",
|
|
ondelete='restrict')
|
|
application_id = fields.Many2one('university.application',
|
|
help="Application no of student",
|
|
string="Application No")
|
|
user_id = fields.Many2one('res.users', string="User",
|
|
readonly=True,
|
|
help="Related User of the student")
|
|
batch_id = fields.Many2one('university.batch', string="Batch",
|
|
help="Relation to batches of university")
|
|
academic_year_id = fields.Many2one('university.academic.year',
|
|
string="Academic Year",
|
|
help="Academic year of the student")
|
|
|
|
def action_student_documents(self):
|
|
""" Open the documents submitted by the student along with the admission
|
|
application. This method retrieves the documents associated with
|
|
the admission application linked to the current student record.
|
|
:returns dict: A dictionary defining the action to open the
|
|
'university.document' records.
|
|
"""
|
|
self.ensure_one()
|
|
if self.application_id.id:
|
|
documents_list = self.env['university.document'].search(
|
|
[('application_ref_id', '=', self.application_id.id)]).mapped(
|
|
'id')
|
|
return {
|
|
'domain': [('id', 'in', documents_list)],
|
|
'name': _('Documents'),
|
|
'view_mode': 'tree,form',
|
|
'res_model': 'university.document',
|
|
'view_id': False,
|
|
'context': {'application_ref_id': self.application_id.id},
|
|
'type': 'ir.actions.act_window'
|
|
}
|
|
|