Change currency exchange rate api to fixer.io
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.json b/erpnext/setup/doctype/global_defaults/global_defaults.json
index 777ae3b..c7330d0 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.json
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.json
@@ -66,20 +66,6 @@
"label": "Disable Rounded Total",
"permlevel": 0,
"read_only": 0
- },
- {
- "fieldname": "section_break_8",
- "fieldtype": "Section Break",
- "permlevel": 0,
- "precision": ""
- },
- {
- "description": "For automatic exchange rates go to jsonrates.com and signup for an API key",
- "fieldname": "jsonrates_api_key",
- "fieldtype": "Data",
- "label": "jsonrates.com API Key",
- "permlevel": 0,
- "precision": ""
}
],
"hide_toolbar": 0,
@@ -87,7 +73,7 @@
"idx": 1,
"in_create": 1,
"issingle": 1,
- "modified": "2015-05-07 05:43:49.760061",
+ "modified": "2015-06-30 03:00:26.420003",
"modified_by": "Administrator",
"module": "Setup",
"name": "Global Defaults",
diff --git a/erpnext/setup/doctype/global_defaults/global_defaults.py b/erpnext/setup/doctype/global_defaults/global_defaults.py
index a3fa3a9..efdc875 100644
--- a/erpnext/setup/doctype/global_defaults/global_defaults.py
+++ b/erpnext/setup/doctype/global_defaults/global_defaults.py
@@ -17,7 +17,6 @@
'hide_currency_symbol':'hide_currency_symbol',
'account_url':'account_url',
'disable_rounded_total': 'disable_rounded_total',
- 'jsonrates_api_key': 'jsonrates_api_key'
}
from frappe.model.document import Document
diff --git a/erpnext/setup/utils.py b/erpnext/setup/utils.py
index cef6079..f661edb 100644
--- a/erpnext/setup/utils.py
+++ b/erpnext/setup/utils.py
@@ -60,20 +60,21 @@
@frappe.whitelist()
def get_exchange_rate(from_currency, to_currency):
- jsonrates_api_key = frappe.conf.jsonrates_api_key or frappe.db.get_default("jsonrates_api_key")
-
- if jsonrates_api_key:
+ try:
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, jsonrates_api_key))
+ response = requests.get("http://api.fixer.io/latest", params={
+ "base": from_currency,
+ "symbols": to_currency
+ })
# expire in 24 hours
- value = response.json().get("rate")
+ response.raise_for_status()
+ value = response.json()["rates"][to_currency]
cache.setex(key, value, 24 * 60 * 60)
return flt(value)
- else:
+ except:
exchange = "%s-%s" % (from_currency, to_currency)
return flt(frappe.db.get_value("Currency Exchange", exchange, "exchange_rate"))