Skip to content

Commit bc0805b

Browse files
committed
refactor: Update vacation retrieval and validation
- Simplify queryset logic for vacation retrieval - Add default values for request_type and status parameters - Implement validation for user_id and request_type in GET method - Improve user existence check before processing requests
1 parent efd3bba commit bc0805b

1 file changed

Lines changed: 20 additions & 27 deletions

File tree

server/cshr/views/vacations.py

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -148,40 +148,17 @@ class VacationUserApiView(ListAPIView):
148148
permission_classes = [UserIsAuthenticated]
149149
pagination_class = BaseGeneralUserPagination
150150

151-
def get_queryset(self) -> Response:
151+
def get_queryset(self):
152152
"""method to get all vacations for certain user"""
153153
user_id = self.request.query_params.get("user_id")
154-
if not user_id:
155-
return CustomResponse.bad_request(message="user_id is required")
156-
157154
year = self.request.query_params.get("year")
158155
if not year:
159156
year = datetime.now().year
160157

161-
request_type = self.request.query_params.get("type")
162-
if not request_type:
163-
request_type = "all"
158+
request_type = self.request.query_params.get("type", "all")
159+
status = self.request.query_params.get("status", "all")
164160

165-
if request_type != "all":
166-
request_type = normalize_request_type(request_type)
167-
if request_type is None:
168-
return CustomResponse.bad_request(message="Invalid request type")
169-
170-
current_user: User = get_user_by_id(user_id)
171-
if current_user is None:
172-
return CustomResponse.not_found(
173-
message="user is not found", status_code=404
174-
)
175-
176-
queryset = None
177-
178-
status = self.request.query_params.get("status")
179-
if not status:
180-
status = "all"
181-
182-
queryset = filter_vacations_by_user_id(current_user.id).filter(
183-
from_date__year=year
184-
)
161+
queryset = filter_vacations_by_user_id(user_id).filter(from_date__year=year)
185162

186163
if request_type != "all":
187164
request_type = normalize_request_type(request_type)
@@ -193,6 +170,22 @@ def get_queryset(self) -> Response:
193170

194171
return queryset.order_by("-created_at")
195172

173+
def get(self, request: Request, *args, **kwargs) -> Response:
174+
user_id = request.query_params.get("user_id")
175+
if not user_id:
176+
return CustomResponse.bad_request(message="user_id is required")
177+
178+
request_type = request.query_params.get("type", "all")
179+
if request_type != "all":
180+
if normalize_request_type(request_type) is None:
181+
return CustomResponse.bad_request(message="Invalid request type")
182+
183+
current_user = get_user_by_id(user_id)
184+
if current_user is None:
185+
return CustomResponse.not_found(message="user is not found")
186+
187+
return super().get(request, *args, **kwargs)
188+
196189

197190
class VacationsUpdateApiView(ListAPIView, GenericAPIView):
198191
serializer_class = VacationsUpdateSerializer

0 commit comments

Comments
 (0)