parent.py
3.42 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
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class ParentRelation(models.Model):
'''Defining a Parent relation with child.'''
_name = "parent.relation"
_description = "Parent-child relation information"
name = fields.Char("Relation name", required=True,
help='Parent relation with student')
class SchoolParent(models.Model):
'''Defining a Teacher information.'''
_name = 'school.parent'
_description = 'Parent Information'
partner_id = fields.Many2one('res.partner', 'User ID', ondelete="cascade",
delegate=True, required=True,
help='Partner which is user over here')
relation_id = fields.Many2one('parent.relation', 'Relation with Child',
help='Parent relation with child')
student_id = fields.Many2many('student.student', 'students_parents_rel',
'students_parent_id', 'student_id',
'Children',
help='Student of the following parent')
standard_id = fields.Many2many('school.standard',
'school_standard_parent_rel',
'class_parent_id', 'class_id',
'Academic Class',
help='''Class of the student
of following parent''')
stand_id = fields.Many2many('standard.standard',
'standard_standard_parent_rel',
'standard_parent_id', 'standard_id',
'Academic Standard',
help='''Standard of the student
of following parent''')
teacher_id = fields.Many2one('school.teacher', 'Teacher',
related="standard_id.user_id", store=True,
help='Teacher of a student')
@api.onchange('student_id')
def onchange_student_id(self):
"""Onchange Method for Student."""
standard_ids = [student.standard_id.id
for student in self.student_id]
if standard_ids:
stand_ids = [student.standard_id.standard_id.id
for student in self.student_id]
self.standard_id = [(6, 0, standard_ids)]
self.stand_id = [(6, 0, stand_ids)]
@api.model
def create(self, vals):
"""Inherited create method to assign values in
the users record to maintain the delegation"""
parent_rec = super(SchoolParent, self).create(vals)
parent_grp_id = self.env.ref('school.group_school_parent')
emp_grp = self.env.ref('base.group_user')
parent_group_ids = [emp_grp.id, parent_grp_id.id]
user_vals = {'name': parent_rec.name,
'login': parent_rec.email,
'email': parent_rec.email,
'partner_id': parent_rec.partner_id.id,
'groups_id': [(6, 0, parent_group_ids)]
}
self.env['res.users'].create(user_vals)
return parent_rec
@api.onchange('state_id')
def onchange_state(self):
"""Onchange Method for State."""
if self.state_id:
self.country_id = self.state_id.country_id.id or False