Skip to content

Commit adc250d

Browse files
add/remove reading exercises
1 parent 981f82e commit adc250d

File tree

5 files changed

+51
-6
lines changed

5 files changed

+51
-6
lines changed

classroom/business/__init__.py

Lines changed: 0 additions & 2 deletions
This file was deleted.

classroom/business/classroom_teacher.py renamed to classroom/business/teacher/classroom.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from django.contrib.auth import get_user_model
44

55
from classroom.tasks import send_temp_password_for_new_students_task
6+
from classroom.models import ReadingExercise
67

78
User = get_user_model()
89

@@ -42,3 +43,12 @@ def add_students_to_classroom(classroom, students_data):
4243
def remove_students_from_classroom(classroom, student_emails):
4344
students_to_remove = classroom.students.filter(email__in=student_emails)
4445
classroom.students.remove(*students_to_remove)
46+
47+
48+
def add_reading_exercises_to_classroom(classroom, exercise_pks, user):
49+
exercises = user.reading_exercises_created.filter(pk__in=exercise_pks)
50+
classroom.reading_exercises.add(*exercises)
51+
52+
53+
def remove_reading_exercises_to_classroom(classroom, exercise_pks):
54+
classroom.reading_exercises.remove(*exercise_pks)
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
from .classroom import (AddStudentSerializer, ClassroomTeacherSerializer,
1+
from .classroom import (AddReadingExerciseSerializer, AddStudentSerializer,
2+
ClassroomTeacherSerializer,
3+
RemoveReadingExerciseSerializer,
24
RemoveStudentSerializer)
35
from .exercise import ReadingExerciseSerializer

classroom/serializers/teacher/classroom.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,11 @@ class Meta:
1414
model = Classroom
1515
fields = [
1616
'pk', 'url', 'name', 'description', 'create_datetime',
17-
'teacher', 'students',
17+
'teacher', 'students', 'reading_exercises',
1818
]
1919
extra_kwargs = {
2020
'url': {'view_name': 'classroom-teacher-detail'},
21+
'reading_exercises': {'view_name': 'reading-exercise-teacher-detail'},
2122
'create_datetime': {'read_only': True},
2223
}
2324

@@ -41,3 +42,11 @@ class AddStudentSerializer(serializers.Serializer):
4142

4243
class RemoveStudentSerializer(serializers.Serializer):
4344
email = serializers.EmailField()
45+
46+
47+
class AddReadingExerciseSerializer(serializers.Serializer):
48+
pk = serializers.IntegerField()
49+
50+
51+
class RemoveReadingExerciseSerializer(serializers.Serializer):
52+
pk = serializers.IntegerField()

classroom/views/teacher/classroom.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
from rest_framework.response import Response
44
from rest_framework.viewsets import ModelViewSet
55

6-
from classroom import business
6+
from classroom.business.teacher import classroom as business
77
from classroom.filters.teacher import ClassroomTeacherFilter
88
from classroom.models import Classroom
99
from classroom.permissions import IsClassroomTeacher
10-
from classroom.serializers.teacher import (AddStudentSerializer,
10+
from classroom.serializers.teacher import (AddReadingExerciseSerializer,
11+
AddStudentSerializer,
1112
ClassroomTeacherSerializer,
13+
RemoveReadingExerciseSerializer,
1214
RemoveStudentSerializer)
1315

1416

@@ -60,3 +62,27 @@ def remove_students(self, request, pk):
6062
classroom = self.get_object()
6163
business.remove_students_from_classroom(classroom, emails)
6264
return Response()
65+
66+
@action(
67+
methods=['POST'], detail=True, url_path='add-reading-exercises',
68+
serializer_class=AddReadingExerciseSerializer
69+
)
70+
def add_reading_exercises(self, request, pk):
71+
serializer = self.get_serializer(data=request.data, many=True)
72+
serializer.is_valid(raise_exception=True)
73+
exercise_pks = [data['pk'] for data in serializer.validated_data]
74+
classroom = self.get_object()
75+
business.add_reading_exercises_to_classroom(classroom, exercise_pks, request.user)
76+
return Response()
77+
78+
@action(
79+
methods=['POST'], detail=True, url_path='remove-reading-exercises',
80+
serializer_class=RemoveReadingExerciseSerializer,
81+
)
82+
def remove_reading_exercises(self, request, pk):
83+
serializer = self.get_serializer(data=request.data, many=True)
84+
serializer.is_valid(raise_exception=True)
85+
exercise_pks = [data['pk'] for data in serializer.validated_data]
86+
classroom = self.get_object()
87+
business.remove_reading_exercises_to_classroom(classroom, exercise_pks)
88+
return Response()

0 commit comments

Comments
 (0)