[enhancement] automatic exchange rates via jsonrates

This commit is contained in:
Rushabh Mehta
2015-05-07 12:25:33 +05:30
parent 43a7b36fcf
commit 66fa1ff878
3 changed files with 25 additions and 7 deletions

View File

@@ -58,6 +58,20 @@ def before_tests():
frappe.db.sql("delete from `tabItem Price`")
frappe.db.commit()
@frappe.whitelist()
def get_exchange_rate(from_currency, to_currency):
exchange = "%s-%s" % (from_currency, to_currency)
return flt(frappe.db.get_value("Currency Exchange", exchange, "exchange_rate"))
if frappe.conf.jsonrates_api_key:
cache = frappe.cache()
key = "currency_exchange_rate:{0}:{1}".format(from_currency, to_currency)
value = cache.get(key)
if not value:
import requests
response = requests.get("http://jsonrates.com/get/?from={0}&to={1}&apiKey={2}".format(from_currency,
to_currency, frappe.conf.jsonrates_api_key))
# expire in 24 hours
value = response.json().get("rate")
cache.setex(key, value, 24 * 60 * 60)
return flt(value)
else:
exchange = "%s-%s" % (from_currency, to_currency)
return flt(frappe.db.get_value("Currency Exchange", exchange, "exchange_rate"))