odoo_18_Education_management/models/school_class.py

53 lines
2.7 KiB
Python

from odoo import models, fields, api
class SchoolClass(models.Model):
_name = 'school.class'
_description = 'Class'
related_subject_ids = fields.One2many('school.subject', 'class_name', string='Subjects')
name = fields.Selection([
('Class 1', 'Class 1'),
('Class 2', 'Class 2'),
('Class 3', 'Class 3'),
('Class 4', 'Class 4'),
('Class 5', 'Class 5'),
('Class 6', 'Class 6'),
('Class 7', 'Class 7'),
('Class 8', 'Class 8'),
('Class 9', 'Class 9'),
('Class 10', 'Class 10'),
('Class 11', 'Class 11'),
('Class 12', 'Class 12'),
], string="Class Name", required=True)
subject_ids = fields.Many2many('school.subject', string='Subjects')
school = fields.Many2one('res.company', string="School", default=lambda self: self.env.company)
is_optional = fields.Boolean(string='Optional')
class_teacher = fields.Many2one('res.users', string='Class Teacher')
@api.onchange('name')
def _onchange_name_set_subjects(self):
if not self.name:
self.subject_ids = False
return
subject_map = {
'Class 1': ['math', 'english', 'science', 'mil'],
'Class 2': ['math', 'english', 'science', 'drawing', 'mil'],
'Class 3': ['math', 'english', 'science', 'odia', 'drawing', 'english_grammar'],
'Class 4': ['math', 'english', 'science', 'odia', 'drawing', 'english_grammar'],
'Class 5': ['math', 'english', 'science', 'odia', 'history', 'drawing', 'english_grammar'],
'Class 6': ['math', 'english', 'science', 'geography', 'mil', 'english_grammar'],
'Class 7': ['math', 'english', 'science', 'political_science', 'mil', 'english_grammar', 'history', 'geography'],
'Class 8': ['math', 'english', 'science', 'political_science', 'mil', 'english_grammar', 'history', 'geography'],
'Class 9': ['math', 'english', 'physical_science', 'life_science', 'english_grammar', 'economic_science', 'history', 'geography'],
'Class 10': ['math', 'english', 'physical_science', 'life_science', 'english_grammar', 'economic_science', 'history', 'geography'],
'Class 11': ['physics', 'chemistry', 'math', 'biology', 'english', 'english_grammar', 'computer_science', 'mil', 'economic_science'],
'Class 12': ['physics', 'chemistry', 'math', 'biology', 'computer_science', 'english_grammar', 'english', 'mil', 'economic_science'],
}
subject_codes = subject_map.get(self.name, [])
subjects = self.env['school.subject'].search([('name', 'in', subject_codes)])
self.subject_ids = [(6, 0, subjects.ids)] # This sets all