summaryrefslogtreecommitdiff
path: root/payments/__init__.py
diff options
context:
space:
mode:
authorMichał Ociepka <michal@ociepka.info>2013-05-22 03:36:45 -0700
committerMichał Ociepka <michal@ociepka.info>2013-05-22 03:36:45 -0700
commit21df018bac129bdfca202f741d876f5e11297610 (patch)
tree14e14b167dd0de5e20e4f25a4905ef893262fc37 /payments/__init__.py
parentd1bb3caaf0926d9f8a2d3cfd850933a74739629b (diff)
parent5ef6530f29952c282a14057fadc47ffa62c19f26 (diff)
downloaddjango-payments-taler-21df018bac129bdfca202f741d876f5e11297610.tar.gz
django-payments-taler-21df018bac129bdfca202f741d876f5e11297610.tar.bz2
django-payments-taler-21df018bac129bdfca202f741d876f5e11297610.zip
Merge pull request #11 from mirumee/features/wallet
Features/wallet
Diffstat (limited to 'payments/__init__.py')
-rw-r--r--payments/__init__.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/payments/__init__.py b/payments/__init__.py
index 03b9196..fbf57f2 100644
--- a/payments/__init__.py
+++ b/payments/__init__.py
@@ -59,24 +59,28 @@ class BasicProvider(object):
'''
raise NotImplementedError()
+ def get_token_from_request(self, request):
+ '''
+ Return payment token from provider request.
+ '''
+ raise NotImplementedError()
+
def get_return_url(self):
payment_link = self.payment.get_process_url()
return urljoin(settings.PAYMENT_BASE_URL, payment_link)
-def factory(payment):
- '''
- Takes the payment object and returns an appropriate provider instance.
- '''
+def provider_factory(variant, payment=None):
+ "Return the provider instance based on variant"
variants = getattr(settings, 'PAYMENT_VARIANTS', PAYMENT_VARIANTS)
- handler, config = variants.get(payment.variant, (None, None))
+ handler, config = variants.get(variant, (None, None))
if not handler:
raise ValueError('Payment variant does not exist: %s' %
- (payment.variant,))
+ (variant,))
path = handler.split('.')
if len(path) < 2:
raise ValueError('Payment variant uses an invalid payment module: %s' %
- (payment.variant,))
+ (variant,))
module_path = '.'.join(path[:-1])
klass_name = path[-1]
module = __import__(module_path, globals(), locals(), [klass_name])
@@ -84,6 +88,13 @@ def factory(payment):
return klass(payment, **config)
+def factory(payment):
+ '''
+ Takes the payment object and returns an appropriate provider instance.
+ '''
+ return provider_factory(payment.variant, payment)
+
+
def get_payment_model():
"Return the Payment model that is active in this project"
try: