diff --git a/InvenTree/InvenTree/exchange.py b/InvenTree/InvenTree/exchange.py index 8de0c9902f..2a2d287e1c 100644 --- a/InvenTree/InvenTree/exchange.py +++ b/InvenTree/InvenTree/exchange.py @@ -135,3 +135,18 @@ class InvenTreeFixerExchangeBackend(InvenTreeManualExchangeBackend): pass return {} + + +class ExchangeRateHostBackend(SimpleExchangeBackend): + """ + Backend for https://exchangerate.host/ + """ + + name = "exchangerate.host" + + def __init__(self): + self.url = "https://api.exchangerate.host/latest" + + def get_params(self): + # No API key is required + return {} diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index e99c3a3eea..f0a3312b39 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -513,9 +513,7 @@ CURRENCIES = CONFIG.get( ], ) -BASE_CURRENCY = CONFIG.get('base_currency', 'USD') - -EXCHANGE_BACKEND = 'InvenTree.exchange.' + CONFIG.get('exchange_backend', 'InvenTreeManualExchangeBackend') +EXCHANGE_BACKEND = 'InvenTree.exchange.ExchangeRateHostBackend' # Extract email settings from the config file email_config = CONFIG.get('email', {}) diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index b3649bcdcf..ad33232fe0 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -163,20 +163,27 @@ def check_for_updates(): def update_exchange_rates(): """ - Update backend rates + If an API key for fixer.io has been provided, attempt to update currency exchange rates """ try: - from .exchange import get_exchange_rate_backend + import common.models + from django.conf import settings + from InvenTree.exchange import ExchangeRateHostBackend except AppRegistryNotReady: # Apps not yet loaded! return - - # Get exchange rate backend - backend = get_exchange_rate_backend() - # Update rates - backend.update_rates(base_currency=backend.base_currency) + backend = ExchangeRateHostBackend() + print(f"Updating exchange rates from {backend.url}") + + currencies = ','.join(settings.CURRENCIES) + + base = common.models.InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY') + + print(f"Using base currency '{base}'") + + backend.update_rates(base_currency=base, symbols=currencies) def send_email(subject, body, recipients, from_email=None): diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index 361fec152a..67962c7859 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -10,8 +10,15 @@ import common.models INVENTREE_SW_VERSION = "0.2.2 pre" -# Increment this number whenever there is a significant change to the API that any clients need to know about -INVENTREE_API_VERSION = 2 +""" +Increment thi API version number whenever there is a significant change to the API that any clients need to know about + +v3 -> 2021-05-22: + - The updated StockItem "history tracking" now uses a different interface + +""" + +INVENTREE_API_VERSION = 3 def inventreeInstanceName(): diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index e499e9b801..99712b2a93 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -87,12 +87,6 @@ class InvenTreeSetting(models.Model): 'choices': djmoney.settings.CURRENCY_CHOICES, }, - 'INVENTREE_FIXER_API_KEY': { - 'name': _('fixer.io API key'), - 'description': _('API key for fixer.io currency conversion service'), - 'default': '', - }, - 'INVENTREE_DOWNLOAD_FROM_URL': { 'name': _('Download from URL'), 'description': _('Allow download of remote images and files from external URL'), diff --git a/InvenTree/part/templatetags/inventree_extras.py b/InvenTree/part/templatetags/inventree_extras.py index 734b365447..ceb2d11e31 100644 --- a/InvenTree/part/templatetags/inventree_extras.py +++ b/InvenTree/part/templatetags/inventree_extras.py @@ -119,6 +119,12 @@ def inventree_version(*args, **kwargs): return version.inventreeVersion() +@register.simple_tag() +def inventree_api_version(*args, **kwargs): + """ Return InvenTree API version """ + return version.inventreeApiVersion() + + @register.simple_tag() def django_version(*args, **kwargs): """ Return Django version string """ diff --git a/InvenTree/templates/InvenTree/settings/global.html b/InvenTree/templates/InvenTree/settings/global.html index fd91dafc67..1a8915f4fb 100644 --- a/InvenTree/templates/InvenTree/settings/global.html +++ b/InvenTree/templates/InvenTree/settings/global.html @@ -31,4 +31,4 @@ -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/InvenTree/templates/about.html b/InvenTree/templates/about.html index f190ab2755..7b023295d1 100644 --- a/InvenTree/templates/about.html +++ b/InvenTree/templates/about.html @@ -29,6 +29,11 @@ {% endif %} +