summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Ociepka <michal@ociepka.info>2014-06-13 18:41:08 +0200
committerMichał Ociepka <michal@ociepka.info>2014-06-13 18:41:08 +0200
commitf1e523d1d9997cdc84f9ab29b2b71bd4d292b0b4 (patch)
tree2661eabbfa2e63fe0ae5cdfbd06b660f413420e7
parentd63e99d2b6b8472de142068ee7a60494ae60f4d5 (diff)
downloaddjango-payments-taler-f1e523d1d9997cdc84f9ab29b2b71bd4d292b0b4.tar.gz
django-payments-taler-f1e523d1d9997cdc84f9ab29b2b71bd4d292b0b4.tar.bz2
django-payments-taler-f1e523d1d9997cdc84f9ab29b2b71bd4d292b0b4.zip
Set payment host from sites if available
-rw-r--r--payments/__init__.py23
-rw-r--r--test_settings.py2
2 files changed, 20 insertions, 5 deletions
diff --git a/payments/__init__.py b/payments/__init__.py
index 4a8584a..1292f54 100644
--- a/payments/__init__.py
+++ b/payments/__init__.py
@@ -14,14 +14,29 @@ from django.db.models import get_model
PAYMENT_VARIANTS = {
'default': ('payments.dummy.DummyProvider', {})}
-if not hasattr(settings, 'PAYMENT_BASE_URL'):
- raise ImproperlyConfigured('The PAYMENT_BASE_URL setting '
- 'must not be empty.')
+PAYMENT_HOST = getattr(settings, 'PAYMENT_HOST', None)
+PAYMENT_USES_SSL = getattr(settings, 'PAYMENT_USES_SSL', False)
+
+if not PAYMENT_HOST:
+ try:
+ from django.contrib.sites.models import Site
+ except ImportError:
+ raise ImproperlyConfigured('The PAYMENT_HOST setting without '
+ 'the sites app must not be empty.')
PurchasedItem = namedtuple('PurchasedItem',
'name, quantity, price, currency, sku')
+def get_base_url():
+ protocol = 'https' if PAYMENT_USES_SSL else 'http'
+ if not PAYMENT_HOST:
+ current_site = Site.objects.get_current()
+ domain = current_site.domain
+ return '%s://%s' % (protocol, domain)
+ return '%s://%s' % (protocol, PAYMENT_HOST)
+
+
class RedirectNeeded(Exception):
pass
@@ -81,7 +96,7 @@ class BasicProvider(object):
def get_return_url(self, extra_data=None):
payment_link = self.payment.get_process_url()
- url = urljoin(settings.PAYMENT_BASE_URL, payment_link)
+ url = urljoin(get_base_url(), payment_link)
if extra_data:
qs = urlencode(extra_data)
return url + '?' + qs
diff --git a/test_settings.py b/test_settings.py
index cb6032d..84eb806 100644
--- a/test_settings.py
+++ b/test_settings.py
@@ -1,4 +1,4 @@
from __future__ import unicode_literals
SECRET_KEY = 'NOTREALLY'
-PAYMENT_BASE_URL = 'http://example.com/'
+PAYMENT_HOST = 'example.com'