Beispiel #1
0
def vendor_list(request):
    """
    */vendors/*

    List all vendors in the database. There is no order to this list,
    only whatever is returned by the database.
    """
    error = {"status": False, "name": None, "text": None, "level": None, "debug": None}
    data = {}

    point, proximity, limit, error = get_lat_long_prox(request, error)

    if point:
        vendor_list = Vendor.objects.filter(location__distance_lte=(point, D(mi=proximity)))[:limit]
    else:
        vendor_list = Vendor.objects.all()[:limit]

    if not vendor_list:
        error = {"status": True, "name": "No Vendors", "text": "No Vendors found", "level": "Information", "debug": ""}

    serializer = FreshSerializer()

    data = {"vendors": json.loads(serializer.serialize(vendor_list, use_natural_foreign_keys=True)), "error": error}

    return HttpResponse(json.dumps(data), content_type="application/json")
def vendors_products(request, id=None):
    """
    */vendors/products/<id>*

    List all vendors in the database that sell product <id>.
    There is no order to this list, only whatever is returned by the database.
    """
    error = {
        'status': False,
        'name': None,
        'text': None,
        'level': None,
        'debug': None
    }
    data = {}

    point, proximity, limit, error = get_lat_long_prox(request, error)
    try:
        if point:
            vendor_list = Vendor.objects.filter(
                vendorproduct__product_preparation__product__id__exact=id,
                location__distance_lte=(point, D(mi=proximity)))[:limit]
        else:
            vendor_list = Vendor.objects.filter(
                vendorproduct__product_preparation__product__id__exact=id
            )[:limit]

    except Exception as e:
        error = {
            'status': True,
            'name': 'Invalid product',
            'text': 'Product id is invalid',
            'level': 'Error',
            'debug': "{0}: {1}".format(type(e).__name__, str(e))
        }
        return HttpResponseNotFound(json.dumps(data),
                                    content_type="application/json")

    if not vendor_list:
        error = {
            "status": True,
            "name": "No Vendors",
            "text": "No Vendors found for product %s" % id,
            "level": "Information",
            "debug": ""
        }

    serializer = FreshSerializer()

    data = {
        "vendors":
        json.loads(
            serializer.serialize(vendor_list, use_natural_foreign_keys=True)),
        "error":
        error
    }

    return HttpResponse(json.dumps(data), content_type="application/json")
Beispiel #3
0
    def test_get_lat_long_prox_valid_lat_long_prox(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6', 'lng': '-123.4', 'proximity': '25'}

        point = fromstr('POINT (-123.4000000000000057 45.6000000000000014)',
                        srid=4326)

        expected_result = [point, 25, None, self.base_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result[1:], actual_result[1:])
        self.assertEqual(expected_result[0].x, actual_result[0].x)
        self.assertEqual(expected_result[0].y, actual_result[0].y)
    def test_get_lat_long_prox_valid_lat_long_prox(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6', 'lng': '-123.4', 'proximity': '25'}

        point = fromstr('POINT (-123.4000000000000057 45.6000000000000014)',
                        srid=4326)

        expected_result = [point, 25, None, self.base_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result[1:], actual_result[1:])
        self.assertEqual(expected_result[0].x, actual_result[0].x)
        self.assertEqual(expected_result[0].y, actual_result[0].y)
    def test_get_lat_long_prox_valid_lat_no_long(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6'}

        expected_error = {
            "level": "Warning",
            "status": True,
            "name": "Bad location",
            "text": "There was an error with the given "
                     "coordinates 45.6, None",
            'debug': 'GEOSException: Error encountered checking Geometry '
                     'returned from GEOS C function "GEOSWKTReader_read_r".'
            }

        expected_result = [None, 20, None, expected_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result, actual_result)
    def test_get_lat_long_prox_valid_lat_bad_long(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6', 'lng': 'kittens'}

        expected_error = {
            "level": "Warning",
            "status": True,
            "name": "Bad location",
            "text": "There was an error with the given "
                     "coordinates 45.6, kittens",
            'debug': "ValueError: String or unicode input unrecognized "
                     "as WKT EWKT, and HEXEWKB."
            }

        expected_result = [None, 20, None, expected_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result, actual_result)
Beispiel #7
0
def vendors_products(request, id=None):
    """
    */vendors/products/<id>*

    List all vendors in the database that sell product <id>.
    There is no order to this list, only whatever is returned by the database.
    """
    error = {"status": False, "name": None, "text": None, "level": None, "debug": None}
    data = {}

    point, proximity, limit, error = get_lat_long_prox(request, error)
    try:
        if point:
            vendor_list = Vendor.objects.filter(
                vendorproduct__product_preparation__product__id__exact=id,
                location__distance_lte=(point, D(mi=proximity)),
            )[:limit]
        else:
            vendor_list = Vendor.objects.filter(vendorproduct__product_preparation__product__id__exact=id)[:limit]

    except Exception as e:
        error = {
            "status": True,
            "name": "Invalid product",
            "text": "Product id is invalid",
            "level": "Error",
            "debug": "{0}: {1}".format(type(e).__name__, str(e)),
        }
        return HttpResponseNotFound(json.dumps(data), content_type="application/json")

    if not vendor_list:
        error = {
            "status": True,
            "name": "No Vendors",
            "text": "No Vendors found for product %s" % id,
            "level": "Information",
            "debug": "",
        }

    serializer = FreshSerializer()

    data = {"vendors": json.loads(serializer.serialize(vendor_list, use_natural_foreign_keys=True)), "error": error}

    return HttpResponse(json.dumps(data), content_type="application/json")
def vendor_list(request):
    """
    */vendors/*

    List all vendors in the database. There is no order to this list,
    only whatever is returned by the database.
    """
    error = {
        'status': False,
        'name': None,
        'text': None,
        'level': None,
        'debug': None
    }
    data = {}

    point, proximity, limit, error = get_lat_long_prox(request, error)

    if point:
        vendor_list = Vendor.objects.filter(
            location__distance_lte=(point, D(mi=proximity)))[:limit]
    else:
        vendor_list = Vendor.objects.all()[:limit]

    if not vendor_list:
        error = {
            "status": True,
            "name": "No Vendors",
            "text": "No Vendors found",
            "level": "Information",
            "debug": ""
        }

    serializer = FreshSerializer()

    data = {
        "vendors":
        json.loads(
            serializer.serialize(vendor_list, use_natural_foreign_keys=True)),
        "error":
        error
    }

    return HttpResponse(json.dumps(data), content_type="application/json")
Beispiel #9
0
    def test_get_lat_long_prox_valid_lat_no_long(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6'}

        expected_error = {
            "level":
            "Warning",
            "status":
            True,
            "name":
            "Bad location",
            "text":
            "There was an error with the given "
            "coordinates 45.6, None",
            'debug':
            'GEOSException: Error encountered checking Geometry '
            'returned from GEOS C function "GEOSWKTReader_read_r".'
        }

        expected_result = [None, 20, None, expected_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result, actual_result)
Beispiel #10
0
    def test_get_lat_long_prox_valid_lat_bad_long(self, mock_request):
        mock_request = Mock()
        mock_request.GET = {'lat': '45.6', 'lng': 'kittens'}

        expected_error = {
            "level":
            "Warning",
            "status":
            True,
            "name":
            "Bad location",
            "text":
            "There was an error with the given "
            "coordinates 45.6, kittens",
            'debug':
            "ValueError: String or unicode input unrecognized "
            "as WKT EWKT, and HEXEWKB."
        }

        expected_result = [None, 20, None, expected_error]
        actual_result = get_lat_long_prox(mock_request, self.base_error)

        self.assertEqual(expected_result, actual_result)