Skip to content

Commit c8b1848

Browse files
authored
Merge branch 'main' into main
2 parents 958ff78 + 1eeed7a commit c8b1848

File tree

2 files changed

+56
-4
lines changed

2 files changed

+56
-4
lines changed

backend/family_tree/student/schema.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,26 @@ class Meta:
88
model= Student
99
fields= ("id","name","branch","year","picture","homeTown","extraCurriculars","socialMedia", "linkedIn","email","parentId","roll_no")
1010
filter_fields=["id","name","branch","year","email","parentId","roll_no"]
11-
11+
def tree_for_batch(root,info,batch):
12+
tree_for_batch=[]
13+
for student in batch:
14+
roll= student.roll_no
15+
pathObjects=[]
16+
while(Student.objects.get(roll_no=roll).parentId!="root"):
17+
student=Student.objects.get(roll_no=roll)
18+
pathObjects.append(student)
19+
roll= student.parentId
20+
pathObjects.append(Student.objects.get(roll_no=roll))
21+
tree_for_batch.append(pathObjects)
22+
return tree_for_batch
1223

1324
class Query(graphene.ObjectType):
1425
students=graphene.List(StudentType)
1526
children=graphene.List(StudentType, parentId=graphene.String())
1627
student_path= graphene.List(StudentType, roll=graphene.String())
1728
student_sibling= graphene.List(StudentType, roll=graphene.String())
1829
student_search= graphene.List(StudentType, search_query=graphene.String())
30+
student_batch= graphene.List(graphene.List(StudentType), roll=graphene.String())
1931

2032
def resolve_students(root,info):
2133
return Student.objects.all()
@@ -37,6 +49,17 @@ def resolve_student_sibling(root,info, roll):
3749
return Student.objects.filter(parentId=student.parentId).exclude(roll_no=roll)
3850

3951

52+
def resolve_student_batch(root,info,roll):
53+
current_node= Student.objects.get(roll_no=roll)
54+
year_of_node= current_node.year
55+
current_batch= Student.objects.filter(year=year_of_node)
56+
# tree_for_batch=[]
57+
# for person in current_batch:
58+
# tree_for_batch.append(Query.resolve_student_path(root,info,person.roll_no))
59+
# return tree_for_batch
60+
return tree_for_batch(root,info,current_batch)
61+
62+
4063
def resolve_student_search(root,info, search_query):
4164
return Student.objects.filter(Q(name__icontains=search_query) | Q(roll_no__icontains= search_query))[0:8]
4265

backend/family_tree/student/tests.py

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@ def setUp(self):
1414
self.student2 = mixer.blend(Student, name='student2', roll_no='2', parentId='1')
1515
self.student3 = mixer.blend(Student, name='student3', roll_no='3', parentId='1')
1616
self.student4 = mixer.blend(Student, name='student4', roll_no='4', parentId='1')
17-
17+
18+
1819
def test_children_query(self):
1920
response = self.query('''
2021
query {
21-
students {
22-
id
22+
children(parentId: "1"){
23+
rollNo
2324
name
2425
}
2526
}
@@ -30,3 +31,31 @@ def test_children_query(self):
3031
self.assertDictEqual(content['data']['children'][0], {'rollNo': '2', 'name': 'student2'})
3132
self.assertDictEqual(content['data']['children'][1], {'rollNo': '3', 'name': 'student3'})
3233
self.assertDictEqual(content['data']['children'][2], {'rollNo': '4', 'name': 'student4'})
34+
35+
def test_student_query(self):
36+
response = self.query('''
37+
query {
38+
students {
39+
id
40+
name
41+
}
42+
}
43+
''')
44+
content = json.loads(response.content)
45+
self.assertResponseNoErrors(response)
46+
self.assertDictEqual(content['data']['students'][0], {'id': str(self.student1.id), 'name': self.student1.name})
47+
self.assertDictEqual(content['data']['students'][1], {'id': str(self.student2.id), 'name': self.student2.name})\
48+
49+
def test_student_sibling(self):
50+
response = self.query('''
51+
query {
52+
studentSibling(roll: "2") {
53+
id
54+
name
55+
}
56+
}
57+
''')
58+
content= json.loads(response.content)
59+
self.assertResponseNoErrors(response)
60+
self.assertDictEqual(content['data']['studentSibling'][0], {'id': str(self.student3.id), 'name': self.student3.name})
61+
self.assertDictEqual(content['data']['studentSibling'][1], {'id': str(self.student4.id), 'name': self.student4.name})

0 commit comments

Comments
 (0)