odoo_18_Education_management/models/school_class.py

53 lines
2.7 KiB
Python
Raw Permalink Normal View History

2025-08-04 07:27:45 +00:00
from odoo import models, fields, api
2025-07-29 05:25:05 +00:00
class SchoolClass(models.Model):
_name = 'school.class'
_description = 'Class'
2025-08-04 07:27:45 +00:00
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)
2025-07-29 05:25:05 +00:00
subject_ids = fields.Many2many('school.subject', string='Subjects')
2025-08-04 07:27:45 +00:00
school = fields.Many2one('res.company', string="School", default=lambda self: self.env.company)
2025-07-29 05:25:05 +00:00
is_optional = fields.Boolean(string='Optional')
class_teacher = fields.Many2one('res.users', string='Class Teacher')
2025-08-04 07:27:45 +00:00
@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
2025-07-29 05:25:05 +00:00