88 lines
3.9 KiB
Python
88 lines
3.9 KiB
Python
from odoo import models, fields, api
|
|
from odoo.exceptions import UserError
|
|
|
|
class SchoolSubject(models.Model):
|
|
_name = 'school.subject'
|
|
_description = 'Subject'
|
|
|
|
name = fields.Selection([
|
|
('math', 'Math'),
|
|
('english', 'English'),
|
|
('science', 'Science'),
|
|
('physical_science', 'Physical Science'),
|
|
('life_science', 'Life Science'),
|
|
('geography', 'Geography'),
|
|
('history', 'History'),
|
|
('political_science', 'Political Science'),
|
|
('economic_science', 'Economic Science'),
|
|
('physics', 'Physics'),
|
|
('chemistry', 'Chemistry'),
|
|
('biology', 'Biology'),
|
|
('it', 'IT'),
|
|
('computer_science', 'Computer Science'),
|
|
('mil', 'MIL'),
|
|
('odia', 'Odia'),
|
|
('english_grammar', 'English Grammar'),
|
|
('drawing', 'Drawing'),
|
|
('odia_grammar', 'Odia Grammar'),
|
|
], string="Subject", required=True)
|
|
|
|
class_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)
|
|
|
|
lesson_plan = fields.Text(string='Lesson Plan')
|
|
teacher = fields.Many2one('res.users', string='Teacher')
|
|
lesson_plan_line_ids = fields.One2many('school.subject.lesson', 'subject_id', string='Lesson Plans')
|
|
teacher_info_line_ids = fields.One2many('school.subject.teacher.info', 'subject_id', string="Teacher Info")
|
|
|
|
@api.depends('class_name')
|
|
def _compute_subjects(self):
|
|
subject_mapping = {
|
|
'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'],
|
|
}
|
|
for rec in self:
|
|
rec.subject_list = ', '.join(subject_mapping.get(rec.class_name, []))
|
|
def action_generate_subjects(self):
|
|
if not self.class_name:
|
|
raise UserError("Please select a class name first.")
|
|
|
|
existing_subjects = self.search([
|
|
('class_name', '=', self.class_name)
|
|
]).mapped('name')
|
|
|
|
subject_list = self.get_subjects_by_class().get(self.class_name, [])
|
|
|
|
new_subjects = [sub for sub in subject_list if sub not in existing_subjects]
|
|
|
|
for subject in new_subjects:
|
|
self.create({
|
|
'class_name': self.class_name,
|
|
'name': subject,
|
|
})
|
|
|
|
if not new_subjects:
|
|
raise UserError("All subjects for this class already exist.")
|