odoo_18_Education_management/models/school_subject_teacher_info.py

35 lines
1.7 KiB
Python

from odoo import models, fields, api
class SchoolSubjectTeacherInfo(models.Model):
_name = 'school.subject.teacher.info'
_description = 'Subject Teacher Info'
subject_id = fields.Many2one('school.subject', string='Subject', required=True, ondelete='cascade')
# Related fields to auto-fetch from related subject's teacher (res.users)
teacher_user_id = fields.Many2one(related='subject_id.teacher', string="Teacher User", store=True)
employee_name = fields.Char(string='Teacher Name', compute="_compute_teacher_fields", store=True)
phone = fields.Char(string='Phone', compute="_compute_teacher_fields", store=True)
email = fields.Char(string='Email', compute="_compute_teacher_fields", store=True)
profile_photo = fields.Binary(string="Profile Photo", compute="_compute_teacher_fields", store=True)
# Editable fields for extra info
activity = fields.Char(string='Activity')
activity_deadline = fields.Date(string='New Activity Deadline')
department = fields.Char(string='Department')
job_position = fields.Char(string='Job Position')
manager = fields.Char(string='Manager')
address = fields.Text(string="Address")
experience = fields.Integer(string="Experience (Years)")
date_of_birth = fields.Date(string="Date of Birth")
join_date = fields.Date(string="Join Date")
@api.depends('subject_id.teacher')
def _compute_teacher_fields(self):
for rec in self:
user = rec.subject_id.teacher
rec.employee_name = user.name if user else ''
rec.email = user.email if user else ''
rec.phone = user.phone if user else ''
rec.profile_photo = user.image_1920 if user else False