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' | |
|             }
 | |
| 
 |