Пример #1
0
 def get_destination(self, qs, name, value):
     radius = self.data.get('destination_radius', '5')
     if not radius:
         radius = '5'
     radius = min(max(float(radius), 0.05), 20)
     pipe = RequestPipeline('destination', self.request)
     result = pipe.search(value)
     if result is None:
         return qs.none()
     return qs.filter(destination_point__distance_lte=(result.point, D(km=radius)))
Пример #2
0
    def validate(self, data):
        data = super().validate(data)

        if data.get('seats_left__gte'):
            data['min_seats'] = data.pop('seats_left__gte')

        if data.get('datetime__lte'):
            data['datetime_lte'] = data.pop('datetime__lte')

        if data.get('datetime__gte'):
            data['datetime_gte'] = data.pop('datetime__gte')

        if data.get('price__lte'):
            data['price'] = data.pop('price__lte')

        if data.get('origin'):
            pipe_origin = RequestPipeline(query_type='origin',
                                          request=self.context['request'])
            result_origin = pipe_origin.search(data['origin'])
            data['origin'] = result_origin.address
            data['origin_point'] = result_origin.point

        if data.get('destination'):
            pipe_destination = RequestPipeline(query_type='destination',
                                               request=self.context['request'])
            result_destination = pipe_destination.search(data['destination'])
            data['destination'] = result_destination.address
            data['destination_point'] = result_destination.point
        return data
Пример #3
0
    def validate(self, data):
        data = super().validate(data)

        if data.get('origin'):
            pipe_origin = RequestPipeline(query_type='origin',
                                          request=self.context['request'])
            result_origin = pipe_origin.search(data['origin'])
            data['origin'] = result_origin.address
            data['origin_point'] = result_origin.point

        if data.get('destination'):
            pipe_destination = RequestPipeline(query_type='destination',
                                               request=self.context['request'])
            result_destination = pipe_destination.search(data['destination'])
            data['destination'] = result_destination.address
            data['destination_point'] = result_destination.point
        return data