diff options
author | Michał Ociepka <michal@ociepka.info> | 2013-05-22 03:36:45 -0700 |
---|---|---|
committer | Michał Ociepka <michal@ociepka.info> | 2013-05-22 03:36:45 -0700 |
commit | 21df018bac129bdfca202f741d876f5e11297610 (patch) | |
tree | 14e14b167dd0de5e20e4f25a4905ef893262fc37 /payments/__init__.py | |
parent | d1bb3caaf0926d9f8a2d3cfd850933a74739629b (diff) | |
parent | 5ef6530f29952c282a14057fadc47ffa62c19f26 (diff) | |
download | django-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__.py | 25 |
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: |