teacher.py
7.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class SchoolTeacher(models.Model):
'''Defining a Teacher information.'''
_name = 'school.teacher'
_description = 'Teacher Information'
_inherit = ['mail.thread', 'mail.activity.mixin']
employee_id = fields.Many2one('hr.employee', 'Employee ID',
ondelete="cascade",
delegate=True, required=True,
help='Enter related employee')
standard_id = fields.Many2one('school.standard',
"Responsibility of Academic Class",
help="Standard for which the teacher\
responsible for.")
stand_id = fields.Many2one('standard.standard', "Course",
related="standard_id.standard_id", store=True,
help='''Select standard which are
assigned to teacher''')
subject_id = fields.Many2many('subject.subject', 'subject_teacher_rel',
'teacher_id', 'subject_id',
'Course-Subjects',
help='Select subject of teacher')
school_id = fields.Many2one('school.school', "Campus",
help='Select school')
category_ids = fields.Many2many('hr.employee.category',
'teacher_category_rel', 'emp_id',
'categ_id', 'Tags',
help='Select employee category')
department_id = fields.Many2one('hr.department', 'Department',
help='Select department')
is_parent = fields.Boolean('Is Parent',
help='Select this if it parent')
stu_parent_id = fields.Many2one('school.parent', 'Related Parent',
help='Enter student parent')
student_id = fields.Many2many('student.student',
'students_teachers_parent_rel',
'teacher_id', 'student_id',
'Children', help='Select student')
phone_numbers = fields.Char("Phone Number", help='Student PH no')
@api.onchange('standard_id')
def _onchange_standard_id(self):
for rec in self:
if rec.standard_id:
rec.school_id = rec.standard_id.school_id.id
@api.onchange('is_parent')
def _onchange_isparent(self):
"""Onchange method for is parent"""
if self.is_parent:
self.stu_parent_id = False
self.student_id = False
@api.onchange('stu_parent_id')
def _onchangestudent_parent(self):
"""Onchange method for student parent records"""
stud_list = []
if self.stu_parent_id and self.stu_parent_id.student_id:
for student in self.stu_parent_id.student_id:
stud_list.append(student.id)
self.student_id = [(6, 0, stud_list)]
@api.model
def create(self, vals):
"""Inherited create method to assign value to users for delegation"""
teacher_id = super(SchoolTeacher, self).create(vals)
user_obj = self.env['res.users']
user_vals = {'name': teacher_id.name,
'login': teacher_id.work_email,
'email': teacher_id.work_email,
}
ctx_vals = {'teacher_create': True,
'school_id': teacher_id.school_id.company_id.id}
user_rec = user_obj.with_context(ctx_vals).create(user_vals)
teacher_id.employee_id.write({'user_id': user_rec.id})
# if vals.get('is_parent'):
# self.parent_crt(teacher_id)
return teacher_id
# Removing this code because of issue faced due to email id of the
# user is same for parent and Teacher, and system will not allow it.
# now user shuld create Parent record first and then select it in
# related parent in Teacher Profile. - Anu Patel (24/03/2021)
# def parent_crt(self, manager_id):
# """Method to create parent record based on parent field"""
# stu_parent = []
# if manager_id.stu_parent_id:
# stu_parent = manager_id.stu_parent_id
# if not stu_parent:
# emp_user = manager_id.employee_id
# students = [stu.id for stu in manager_id.student_id]
# parent_vals = {'name': manager_id.name,
# 'email': emp_user.work_email,
# 'user_ids': [(6, 0, [emp_user.user_id.id])],
# 'partner_id': emp_user.user_id.partner_id.id,
# 'student_id': [(6, 0, students)]}
# stu_parent = self.env['school.parent'].with_context().create(parent_vals)
# manager_id.write({'stu_parent_id': stu_parent.id})
# user = stu_parent.user_ids
# user_rec = user[0]
# parent_grp_id = self.env.ref('school.group_school_parent')
# groups = parent_grp_id
# if user_rec.groups_id:
# groups = user_rec.groups_id
# groups += parent_grp_id
# group_ids = [group.id for group in groups]
# user_rec.write({'groups_id': [(6, 0, group_ids)]})
def write(self, vals):
"""Inherited write method to assign groups based on parent field"""
# if vals.get('is_parent'):
# self.parent_crt(self)
if vals.get('student_id'):
self.stu_parent_id.write({'student_id': vals.get('student_id')})
if not vals.get('is_parent'):
user_rec = self.employee_id.user_id
ir_obj = self.env['ir.model.data']
parent_grp_id = ir_obj.get_object('school', 'group_school_parent')
groups = parent_grp_id
if user_rec.groups_id:
groups = user_rec.groups_id
groups -= parent_grp_id
group_ids = [group.id for group in groups]
user_rec.write({'groups_id': [(6, 0, group_ids)]})
return super(SchoolTeacher, self).write(vals)
@api.onchange('address_id')
def onchange_address_id(self):
"""Onchange method for address."""
self.work_phone = self.address_id.phone or False,
self.mobile_phone = self.address_id.mobile or False
@api.onchange('department_id')
def onchange_department_id(self):
"""Onchange method for deepartment."""
self.parent_id = (self.department_id and
self.department_id.manager_id and
self.department_id.manager_id.id) or False
@api.onchange('user_id')
def onchange_user(self):
"""Onchange method for user."""
if self.user_id:
self.name = self.name or self.user_id.name
self.work_email = self.user_id.email
self.image = self.image or self.user_id.image
@api.onchange('school_id')
def onchange_school(self):
"""Onchange method for school."""
self.address_id = self.school_id.company_id.partner_id.id or \
False
self.mobile_phone = self.school_id.company_id.partner_id.mobile or \
False
self.work_location = self.school_id.company_id.partner_id.city or \
False
self.work_email = self.school_id.company_id.partner_id.email or False
phone = self.school_id.company_id.partner_id.phone or False
self.work_phone = phone or False
self.phone_numbers = phone or False
phone = self.school_id.company_id.partner_id.phone or False