summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Wolski <krzysztof.k.wolski@gmail.com>2017-02-06 17:40:06 +0100
committerKrzysztof Wolski <krzysztof.k.wolski@gmail.com>2017-02-06 17:40:06 +0100
commite68689540cd87163af7016ba2eb2e2cad07b8c80 (patch)
tree4ca00434920f464fefa9f0569dc5fc0e69acc882
parenta9a47490fa5f9129822b6cf8dd94b531db0dca6d (diff)
downloaddjango-payments-taler-e68689540cd87163af7016ba2eb2e2cad07b8c80.tar.gz
django-payments-taler-e68689540cd87163af7016ba2eb2e2cad07b8c80.tar.bz2
django-payments-taler-e68689540cd87163af7016ba2eb2e2cad07b8c80.zip
Use django import_string
-rw-r--r--payments/core.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/payments/core.py b/payments/core.py
index 22badd8..1a6e1da 100644
--- a/payments/core.py
+++ b/payments/core.py
@@ -1,6 +1,5 @@
from __future__ import unicode_literals
import re
-import importlib
try:
from urllib.parse import urljoin, urlencode
except ImportError:
@@ -8,6 +7,8 @@ except ImportError:
from urlparse import urljoin
from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
+from django.utils.module_loading import import_string
+
PAYMENT_VARIANTS = {
'default': ('payments.dummy.DummyProvider', {})}
@@ -22,26 +23,25 @@ if not PAYMENT_HOST:
PAYMENT_USES_SSL = getattr(settings, 'PAYMENT_USES_SSL', not settings.DEBUG)
-def get_function(function_name):
- """Imports function with given name"""
- splitted_path = function_name.split('.')
- module_name = '.'.join(splitted_path[:-1])
- function_name = splitted_path[-1]
- module = importlib.import_module(module_name)
- return getattr(module, function_name)
-
-
def get_base_url():
+ """
+ Returns host url according to project settings. Protocol is chosen by
+ checking PAYMENT_USES_SSL variable.
+ If PAYMENT_HOST is not specified, gets domain from Sites. Otherwise,
+ checks if it's callable and returns it's result. If there is no function
+ treats it as domain.
+ """
protocol = 'https' if PAYMENT_USES_SSL else 'http'
if not PAYMENT_HOST:
current_site = Site.objects.get_current()
return '%s://%s' % (protocol, current_site.domain)
try:
- function = get_function(PAYMENT_HOST)
- domain = function()
- except (ImportError, AttributeError, TypeError, ValueError):
+ function = import_string(PAYMENT_HOST)
+ except ImportError:
domain = PAYMENT_HOST
+ else:
+ domain = function()
return '%s://%s' % (protocol, domain)