1
1
from django .conf import settings
2
+ from django .db .models .query import QuerySet
2
3
from django .db .models .query_utils import Q
3
4
from django .utils .timezone import localtime , now
4
5
from django_filters import rest_framework as filters
15
16
16
17
from care .facility .api .serializers .shifting import (
17
18
ShiftingDetailSerializer ,
18
- ShiftingRequestCommentSerializer ,
19
+ ShiftingListSerializer ,
20
+ ShiftingRequestCommentDetailSerializer ,
21
+ ShiftingRequestCommentListSerializer ,
19
22
ShiftingSerializer ,
20
23
has_facility_permission ,
21
24
)
@@ -93,36 +96,7 @@ class ShiftingViewSet(
93
96
):
94
97
serializer_class = ShiftingSerializer
95
98
lookup_field = "external_id"
96
- queryset = ShiftingRequest .objects .all ().select_related (
97
- "origin_facility" ,
98
- "origin_facility__ward" ,
99
- "origin_facility__local_body" ,
100
- "origin_facility__district" ,
101
- "origin_facility__state" ,
102
- "shifting_approving_facility" ,
103
- "shifting_approving_facility__ward" ,
104
- "shifting_approving_facility__local_body" ,
105
- "shifting_approving_facility__district" ,
106
- "shifting_approving_facility__state" ,
107
- "assigned_facility" ,
108
- "assigned_facility__ward" ,
109
- "assigned_facility__local_body" ,
110
- "assigned_facility__district" ,
111
- "assigned_facility__state" ,
112
- "patient" ,
113
- "patient__ward" ,
114
- "patient__local_body" ,
115
- "patient__district" ,
116
- "patient__state" ,
117
- "patient__facility" ,
118
- "patient__facility__ward" ,
119
- "patient__facility__local_body" ,
120
- "patient__facility__district" ,
121
- "patient__facility__state" ,
122
- "assigned_to" ,
123
- "created_by" ,
124
- "last_edited_by" ,
125
- )
99
+ queryset = ShiftingRequest .objects .all ()
126
100
ordering_fields = ["id" , "created_date" , "modified_date" , "emergency" ]
127
101
128
102
permission_classes = (IsAuthenticated , DRYPermissions )
@@ -133,8 +107,52 @@ class ShiftingViewSet(
133
107
)
134
108
filterset_class = ShiftingFilterSet
135
109
110
+ def get_queryset (self ) -> QuerySet :
111
+ if self .action == "list" :
112
+ self .queryset = self .queryset .select_related (
113
+ "origin_facility" ,
114
+ "shifting_approving_facility" ,
115
+ "assigned_facility" ,
116
+ "patient" ,
117
+ )
118
+
119
+ else :
120
+ self .queryset = self .queryset .select_related (
121
+ "origin_facility" ,
122
+ "origin_facility__ward" ,
123
+ "origin_facility__local_body" ,
124
+ "origin_facility__district" ,
125
+ "origin_facility__state" ,
126
+ "shifting_approving_facility" ,
127
+ "shifting_approving_facility__ward" ,
128
+ "shifting_approving_facility__local_body" ,
129
+ "shifting_approving_facility__district" ,
130
+ "shifting_approving_facility__state" ,
131
+ "assigned_facility" ,
132
+ "assigned_facility__ward" ,
133
+ "assigned_facility__local_body" ,
134
+ "assigned_facility__district" ,
135
+ "assigned_facility__state" ,
136
+ "patient" ,
137
+ "patient__ward" ,
138
+ "patient__local_body" ,
139
+ "patient__district" ,
140
+ "patient__state" ,
141
+ "patient__facility" ,
142
+ "patient__facility__ward" ,
143
+ "patient__facility__local_body" ,
144
+ "patient__facility__district" ,
145
+ "patient__facility__state" ,
146
+ "assigned_to" ,
147
+ "created_by" ,
148
+ "last_edited_by" ,
149
+ )
150
+ return self .queryset
151
+
136
152
def get_serializer_class (self ):
137
153
serializer_class = self .serializer_class
154
+ if self .action == "list" :
155
+ return ShiftingListSerializer
138
156
if self .action == "retrieve" :
139
157
serializer_class = ShiftingDetailSerializer
140
158
return serializer_class
@@ -186,7 +204,8 @@ def list(self, request, *args, **kwargs):
186
204
field_header_map = ShiftingRequest .CSV_MAPPING ,
187
205
field_serializer_map = ShiftingRequest .CSV_MAKE_PRETTY ,
188
206
)
189
- return super (ShiftingViewSet , self ).list (request , * args , ** kwargs )
207
+ response = super ().list (request , * args , ** kwargs )
208
+ return response
190
209
191
210
192
211
class ShifitngRequestCommentViewSet (
@@ -195,7 +214,7 @@ class ShifitngRequestCommentViewSet(
195
214
mixins .RetrieveModelMixin ,
196
215
GenericViewSet ,
197
216
):
198
- serializer_class = ShiftingRequestCommentSerializer
217
+ serializer_class = ShiftingRequestCommentDetailSerializer
199
218
lookup_field = "external_id"
200
219
queryset = ShiftingRequestComment .objects .all ().order_by ("-created_date" )
201
220
@@ -243,3 +262,8 @@ def get_request(self):
243
262
244
263
def perform_create (self , serializer ):
245
264
serializer .save (request = self .get_request ())
265
+
266
+ def get_serializer_class (self ):
267
+ if self .action == "list" :
268
+ return ShiftingRequestCommentListSerializer
269
+ return ShiftingRequestCommentDetailSerializer
0 commit comments