<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get(self, request, *args, **kwargs):
 """ Retrieve list of service requests """

        if 'service_code' not in request.GET.keys():
            return Response({ 'detail': _('A service code must be inserted') }, status=404)

        service_code = request.GET['service_code']

        if service_code not in SERVICES.keys():
            return Response({ 'detail': _('Service not found') }, status=404)

        start_date = None
        end_date = None
        status = None
        layer = None

        STATUSES = {}
        for status_type in ('open', 'closed'):
            STATUSES[status_type] = [k for k, v in STATUS.items() if v == status_type]

        if 'start_date' in request.GET.keys():
            start_date = request.GET['start_date']
            if iso8601_REGEXP.match(start_date) is None:
                return Response({ 'detail': _('Invalid date inserted') }, status=404)

        if 'end_date' in request.GET.keys():
            end_date = request.GET['end_date']
            if iso8601_REGEXP.match(end_date) is None:
                return Response({ 'detail': _('Invalid date inserted') }, status=404)

        if 'status' in request.GET.keys():
            if request.GET['status'] not in ('open','closed'):
                return Response({ 'detail': _('Invalid status inserted') }, status=404)
            status = request.GET['status']

        if 'layer' in request.GET.keys():
            layer = request.GET['layer']
            node_layer = get_object_or_404(Layer, slug=layer)

        service_model = MODELS[service_code]
        if service_code in ('vote', 'comment', 'rate'):
            self.queryset = service_model.objects.none()
        else:
            self.queryset = service_model.objects.all()

            # Filter by layer
            if layer is not None:
                self.queryset = self.queryset.filter(layer = node_layer)

            # Check of date parameters
            if start_date is not None and end_date is not None:
                self.queryset = self.queryset.filter(added__gte = start_date).filter(added__lte = end_date)

            if start_date is not None and end_date is None:
                self.queryset = self.queryset.filter(added__gte = start_date)

            if start_date is None and end_date is not None:
                self.queryset = self.queryset.filter(added__lte = end_date)

        # Check of status parameter
        if status is not None:
            q_list = [Q(status__slug__exact = s) for s in STATUSES[status]]
            self.queryset = self.queryset.filter(reduce(operator.or_, q_list))
        return self.list(request, *args, **kwargs)