diff --git a/jobposting/views.py b/jobposting/views.py index 2c8b048..3f80cc8 100644 --- a/jobposting/views.py +++ b/jobposting/views.py @@ -10,7 +10,7 @@ from rest_framework.views import APIView from django.conf import settings - +from django.db.models import Q from jobposting.serializers import ( JobOfferSerializer, @@ -76,9 +76,20 @@ class JobOfferListView(APIView): permission_classes = [] def get(self, request, format=None): - start = request.query_params.get('start', 0) - end = request.query_params.get('end', 12) - job_offers = JobOffer.objects.all()[start:end] + 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), + 'category': request.query_params.get('category', None), + '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) serializer = SlimJobOffersSerializer(job_offers, many=True) return Response(serializer.data) @@ -144,12 +155,8 @@ class JobOfferDetailView(APIView): return Response({'error': 'Not Found'}, status=status.HTTP_404_NOT_FOUND) def get(self, request, pk=None, format=None): - if pk: - job_offer = self.get_object(pk) - serializer = JobOfferSerializer(job_offer,) - else: - job_offer = JobOffer.objects.all() - serializer = JobOfferSerializer(job_offer, many=True) + job_offer = self.get_object(pk) + serializer = JobOfferSerializer(job_offer,) return Response(serializer.data) def put(self, request, pk, format=None):