Source code for web_payments.django

from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
# apps clash with 'apps' of module so import as django_apps
from django.apps import apps as django_apps
from django.utils import translation as django_translation

from .. import translation


__all__ = ["get_base_url", "get_payment_model", "initialize"]

# django variable: allows import of web_payments.django instead of full path
default_app_config = 'web_payments.django.apps.WebPaymentsConfig'


[docs]def get_payment_model(): ''' Return the Payment model that is active in this project ''' try: app_label, model_name = settings.PAYMENT_MODEL.split('.') except (ValueError, AttributeError): raise ImproperlyConfigured('PAYMENT_MODEL must be of the form ' '"app_label.model_name"') payment_model = django_apps.get_model(app_label, model_name) if payment_model is None: msg = ( 'PAYMENT_MODEL refers to model "%s" that has not been installed' % settings.PAYMENT_MODEL) raise ImproperlyConfigured(msg) return payment_model
[docs]def get_base_url(provider=None): ''' Returns host url according to project settings. Protocol is chosen by PAYMENT_PROTOCOL variable. If PAYMENT_HOST is not specified, get domain from Sites. Otherwise checks if it's callable and returns it's result. If it's not a callable treats it as domain. ''' protocol = getattr(settings, 'PAYMENT_PROTOCOL', 'https') PAYMENT_HOST = getattr(settings, 'PAYMENT_HOST', None) if not PAYMENT_HOST: from django.contrib.sites.models import Site current_site = Site.objects.get_current() domain = current_site.domain elif callable(PAYMENT_HOST): domain = PAYMENT_HOST(provider) else: domain = PAYMENT_HOST return '%s://%s' % (protocol, domain)
[docs]def initialize(): ''' overwrites get/set language with django equivalents ''' translation.get_language = django_translation.get_language translation.set_language = django_translation.activate