2017-03-14 08:58:01 +00:00
|
|
|
from longclaw.longclawshipping import models
|
|
|
|
|
|
|
|
|
|
|
|
class InvalidShippingRate(Exception):
|
|
|
|
pass
|
|
|
|
|
2017-05-30 10:34:45 +00:00
|
|
|
|
2017-03-14 08:58:01 +00:00
|
|
|
class InvalidShippingCountry(Exception):
|
|
|
|
pass
|
|
|
|
|
2017-08-09 13:46:48 +00:00
|
|
|
def get_shipping_cost(settings, country_code=None, name=None):
|
|
|
|
"""Return the shipping cost for a given country code and shipping option (shipping rate name)
|
2017-05-24 10:12:36 +00:00
|
|
|
"""
|
2017-08-09 13:46:48 +00:00
|
|
|
shipping_rate = None
|
|
|
|
if settings.default_shipping_enabled:
|
2017-05-30 10:34:45 +00:00
|
|
|
shipping_rate = {
|
2017-08-09 13:46:48 +00:00
|
|
|
"rate": settings.default_shipping_rate,
|
|
|
|
"description": "Standard shipping to rest of world",
|
|
|
|
"carrier": settings.default_shipping_carrier
|
|
|
|
}
|
|
|
|
elif not country_code:
|
|
|
|
raise InvalidShippingCountry
|
|
|
|
|
|
|
|
if country_code:
|
|
|
|
qrs = models.ShippingRate.objects.filter(countries__in=[country_code], name=name)
|
|
|
|
count = qrs.count()
|
|
|
|
if count == 1:
|
2017-05-30 10:34:45 +00:00
|
|
|
shipping_rate_qrs = qrs[0]
|
|
|
|
else:
|
|
|
|
raise InvalidShippingRate()
|
2017-08-09 13:46:48 +00:00
|
|
|
shipping_rate = {
|
|
|
|
"rate": shipping_rate_qrs.rate,
|
|
|
|
"description": shipping_rate_qrs.description,
|
|
|
|
"carrier": shipping_rate_qrs.carrier}
|
2017-05-30 10:34:45 +00:00
|
|
|
return shipping_rate
|