1
+ import datetime
2
+
1
3
from django .core .exceptions import ObjectDoesNotExist
2
4
from django .db .models import Q
3
5
from django .utils import timezone
4
- from scheduler .models import Attendance , SectionOccurrence
5
6
from rest_framework import status , viewsets
6
7
from rest_framework .decorators import action
7
8
from rest_framework .exceptions import PermissionDenied
8
9
from rest_framework .response import Response
9
- import datetime
10
+ from scheduler . models import Attendance , SectionOccurrence
10
11
11
- from .utils import log_str , logger , get_object_or_error
12
12
from ..models import Student
13
13
from ..serializers import AttendanceSerializer , StudentSerializer
14
+ from .utils import get_object_or_error , log_str , logger
14
15
15
16
16
17
class StudentViewSet (viewsets .GenericViewSet ):
@@ -43,19 +44,22 @@ def drop(self, request, pk=None):
43
44
student .course .whitelist .remove (student .user )
44
45
student .save ()
45
46
logger .info (
46
- f"<Drop> User { log_str (request .user )} dropped Section { log_str (student .section )} for Student user { log_str (student .user )} "
47
+ f"<Drop> User { log_str (request .user )} dropped Section"
48
+ f" { log_str (student .section )} for Student user { log_str (student .user )} "
47
49
)
48
50
# filter attendances and delete future attendances
49
51
now = timezone .now ().astimezone (timezone .get_default_timezone ())
50
52
num_deleted , _ = student .attendance_set .filter (
51
53
Q (
52
54
sectionOccurrence__date__gte = now .date (),
53
55
sectionOccurrence__section = student .section ,
54
- presence = ""
56
+ presence = "" ,
55
57
)
56
58
).delete ()
57
59
logger .info (
58
- f"<Drop> Deleted { num_deleted } attendances for user { log_str (student .user )} in Section { log_str (student .section )} after { now .date ()} "
60
+ f"<Drop> Deleted { num_deleted } attendances for user"
61
+ f" { log_str (student .user )} in Section { log_str (student .section )} after"
62
+ f" { now .date ()} "
59
63
)
60
64
return Response (status = status .HTTP_204_NO_CONTENT )
61
65
@@ -82,18 +86,21 @@ def attendances(self, request, pk=None):
82
86
)
83
87
except ObjectDoesNotExist :
84
88
logger .error (
85
- f"<Attendance:Failure> Could not record attendance for User { log_str (request .user )} , used non-existent attendance id { request .data ['id' ]} "
89
+ "<Attendance:Failure> Could not record attendance for User"
90
+ f" { log_str (request .user )} , used non-existent attendance id"
91
+ f" { request .data ['id' ]} "
86
92
)
87
93
return Response (status = status .HTTP_400_BAD_REQUEST )
88
94
89
95
if serializer .is_valid ():
90
96
attendance = serializer .save ()
91
97
logger .info (
92
- f"<Attendance:Success> Attendance { log_str (attendance )} recorded for User { log_str (request .user )} "
98
+ f"<Attendance:Success> Attendance { log_str (attendance )} recorded for"
99
+ f" User { log_str (request .user )} "
93
100
)
94
101
return Response (status = status .HTTP_204_NO_CONTENT )
95
102
logger .error (
96
- f"<Attendance:Failure> Could not record attendance for User { log_str (request .user )} , errors: { serializer .errors } "
103
+ "<Attendance:Failure> Could not record attendance for User"
104
+ f" { log_str (request .user )} , errors: { serializer .errors } "
97
105
)
98
106
return Response (serializer .errors , status = status .HTTP_422_UNPROCESSABLE_ENTITY )
99
-
0 commit comments