diff --git a/jobposting/views.py b/jobposting/views.py index fdebd07..acd4411 100644 --- a/jobposting/views.py +++ b/jobposting/views.py @@ -77,20 +77,36 @@ class JobOfferListView(APIView): permission_classes = [] def get(self, request, format=None): - categories = request.query_params.get('categories', None) - if categories is not None: - categories = categories.split(',') - filters = { - 'min_salary__gte': request.query_params.get('min_salary', None), - 'max_salary__lte': request.query_params.get('max_salary', None), - 'localization': request.query_params.get('localization', None), - 'categories': categories, - 'experience_level': request.query_params.get('experience_level', None), - 'employment_type': request.query_params.get('employment_type', None), - 'work_from_home': request.query_params.get('work_from_home', None), - } + min_salary = request.query_params.get('min_salary', None) + max_salary = request.query_params.get('max_salary', None) + localization = request.query_params.get('localization', None) + name = request.query_params.get('name', None) + if min_salary is not None and min_salary != '': + min_salary = int(min_salary) + if max_salary is not None and max_salary != '': + max_salary = int(max_salary) + if localization is not None and localization != '': + pass + else: + localization = None + if name is not None and name != '': + name = Q(name__icontains=name) | Q(company_name__icontains=name) + else: + name = None - # remove None values + categories = request.query_params.getlist('categories', None) + + filters = { + 'min_salary__gte': min_salary, + 'max_salary__lte': max_salary, + 'localization': localization, + 'category__in': categories, + 'experience_level': request.query_params.get('experience_level', None), + 'employment_type': request.query_params.get('employment_type', None), + 'work_from_home': request.query_params.get('work_from_home', None), + } + + # remove None values filters = {k: v for k, v in filters.items() if v is not None} job_offers = JobOffer.objects.filter(**filters)