diff options
author | Michał Ociepka <michal@ociepka.info> | 2014-06-13 18:41:08 +0200 |
---|---|---|
committer | Michał Ociepka <michal@ociepka.info> | 2014-06-13 18:41:08 +0200 |
commit | f1e523d1d9997cdc84f9ab29b2b71bd4d292b0b4 (patch) | |
tree | 2661eabbfa2e63fe0ae5cdfbd06b660f413420e7 | |
parent | d63e99d2b6b8472de142068ee7a60494ae60f4d5 (diff) | |
download | django-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__.py | 23 | ||||
-rw-r--r-- | test_settings.py | 2 |
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' |