First steps into a payment provider API

This commit is contained in:
Raphael Michel
2015-03-04 13:58:25 +01:00
parent bef74c39f7
commit 386bd032cf
9 changed files with 65 additions and 0 deletions

View File

@@ -8,3 +8,4 @@ Contents:
plugins
restriction
payment

View File

@@ -57,5 +57,12 @@ example, taken from the time restriction module (see next chapter) as a template
You have to implement a ``PretixPluginMeta`` class like in the example to make your
plugin available to the users.
Currently, the ``PluginType`` enum has the following values defined:
* ``RESTRICTION``
* ``PAYMENT``
The next pages provide details on their usage.
.. _signal dispatcher: https://docs.djangoproject.com/en/1.7/topics/signals/
.. _namespace packages: http://legacy.python.org/dev/peps/pep-0420/

View File

@@ -0,0 +1,10 @@
class BasePaymentProvider:
"""
This is the base class for all payment providers.
"""
def get_identifier(self) -> str:
"""
Return a unique identifier for this payment provider
"""
raise NotImplementedError()

View File

@@ -8,6 +8,7 @@ from django.apps import apps
class PluginType(Enum):
RESTRICTION = 1
PAYMENT = 2
def get_all_plugins() -> "List[class]":

View File

@@ -51,3 +51,11 @@ return a positive result (see plugin API documentation for details).
determine_availability = EventPluginSignal(
providing_args=["item", "variations", "context", "cache"]
)
"""
This signal is sent out to get all known payment providers. Receivers should return a
subclass of pretix.base.payment.BasePaymentProvider
"""
register_payment_providers = EventPluginSignal(
providing_args=[]
)

View File

@@ -0,0 +1,22 @@
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _
from pretix.base.plugins import PluginType
class BankTransferApp(AppConfig):
name = 'pretix.plugins.banktransfer'
verbose_name = _("Bank transfer")
class PretixPluginMeta:
type = PluginType.PAYMENT
name = _("Bank transfer")
author = _("the pretix team")
version = '1.0.0'
description = _("This plugin allows you to receive payments " +
"via bank transfer ")
def ready(self):
from . import signals # NOQA
default_app_config = 'pretix.plugins.banktransfer.BankTransferApp'

View File

@@ -0,0 +1,5 @@
from pretix.base.payment import BasePaymentProvider
class BankTransfer(BasePaymentProvider):
pass

View File

@@ -0,0 +1,10 @@
from django.dispatch import receiver
from pretix.base.signals import register_payment_providers
from .payment import BankTransfer
@receiver(register_payment_providers)
def register_payment_provider(sender, **kwargs):
return BankTransfer

View File

@@ -46,6 +46,7 @@ INSTALLED_APPS = (
'djangoformsetjs',
'pretix.plugins.testdummy',
'pretix.plugins.timerestriction',
'pretix.plugins.banktransfer',
)
MIDDLEWARE_CLASSES = (