diff --git a/jobposting/views.py b/jobposting/views.py index c6890a9..85c3680 100644 --- a/jobposting/views.py +++ b/jobposting/views.py @@ -19,7 +19,25 @@ from jobposting.serializers import ( SkillSerializer, SlimJobOffersSerializer, MainJobOfferSerializer -) +)\ + +def remove_none_from_filters(filter: int|str, filter_type: str) -> int|str|None: + if filter_type == 'int': + if filter is not None or filter == '': + try: + filter = int(filter) + except ValueError: + filter = None + except TypeError: + filter = None + else: + filter = None + else: + if filter is not None or filter == '': + pass + else: + filter = None + return filter class MyUserViewSet(viewsets.ModelViewSet): @@ -76,41 +94,21 @@ class JobOfferListView(APIView): authentication_classes = [] permission_classes = [] + + def get(self, request, format=None): dict_request = dict(request.query_params) print(dict_request) categories = dict_request.get('categories[]', None) - max_salary = request.query_params.get('max_salary', None) - min_salary = request.query_params.get('min_salary', None) - localization = request.query_params.get('localization', None) + max_salary = remove_none_from_filters( + request.query_params.get('max_salary', None), 'int') + min_salary = remove_none_from_filters( + request.query_params.get('min_salary', None), 'int') + localization = remove_none_from_filters( + request.query_params.get('localization', None), 'str') + name = remove_none_from_filters( + request.query_params.get('name', None), 'str') - name = request.query_params.get('name', None) - if name is not None or name != '': - pass - else: - name = None - if max_salary is not None or max_salary != '': - try: - max_salary = int(max_salary) - except ValueError: - max_salary = None - except TypeError: - max_salary = None - else: - max_salary = None - if min_salary is not None or min_salary != '': - try: - min_salary = int(min_salary) - except ValueError: - min_salary = None - except TypeError: - min_salary = None - else: - min_salary = None - if localization is not None or localization != '': - pass - else: - localization = None filters = { 'name__icontains': name, 'min_salary__gte': min_salary,