Skip to content
Snippets Groups Projects
Commit 4a9f5fcf authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Move preferences to model

parent 6245549d
No related tags found
1 merge request!15Update dependency django-payments to v1
...@@ -27,7 +27,17 @@ class InvoicesActionForm(ActionForm): ...@@ -27,7 +27,17 @@ class InvoicesActionForm(ActionForm):
class EditClientForm(ExtensibleForm): class EditClientForm(ExtensibleForm):
"""Form to create or edit clients.""" """Form to create or edit clients."""
layout = Layout("name", "email") layout = Layout(
Row("name", "email"),
Fieldset(
_("Sofort / Klarna"),
Row("sofort_api_id", "sofort_api_key", "sofort_project_id"),
),
Fieldset(
_("PayPal"),
Row("paypal_client_id", "paypal_secret", "paypal_capture"),
),
)
class Meta: class Meta:
model = Client model = Client
......
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from localflavor.generic.models import IBANField, BICField
from aleksis.core.mixins import ExtensibleModel from aleksis.core.mixins import ExtensibleModel
...@@ -8,9 +10,56 @@ class Client(ExtensibleModel): ...@@ -8,9 +10,56 @@ class Client(ExtensibleModel):
name = models.CharField(verbose_name=_("Name"), max_length=255) name = models.CharField(verbose_name=_("Name"), max_length=255)
email = models.EmailField(verbose_name=_("Email")) email = models.EmailField(verbose_name=_("Email"))
sofort_api_id = models.CharField(verbose_name=_("Sofort / Klarna API ID"), blank=True)
sofort_api_key = models.CharField(verbose_name=_("Sofort / Klarna API key"), blank=True)
sofort_project_id = models.CharField(verbose_name=_("Sofort / Klarna Project ID"), blank=True)
paypal_client_id = models.CharField(verbose_name=_("PayPal client ID"), blank=True)
paypal_secret = models.CharField(verbose_name=_("PayPal secret"), blank=True)
paypal_capture = models.BooleanField(
verbose_name=_("Use PayPal Authorize & Capture"), default=False
)
sdd_creditor = models.CharField(verbose_name=_("SEPA Direct Debit - Creditor name"), blank=True)
sdd_creditor_identifier = models.CharField(
verbose_name=_("SEPA Direct Debit - Creditor identifier"), blank=True
)
sdd_iban = IBANField(verbose_name=_("IBAN of bank account"), blank=True)
sdd_bic = BICField(verbose_name=_("BIC/SWIFT code of bank"), blank=True)
class Meta: class Meta:
sofort_enabled = get_site_preferences("payments__sofort_enabled")
paypal_enabled = get_site_preferences("payments__paypal_enabled")
debit_enabled = get_site_preferences("payments__debit_enabled")
constraints = [ constraints = [
models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site") models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site"),
models.CheckConstraint(
check=(
Q(sofort_enabled=True)
& ~Q(sofort_api_id="")
& ~Q(sofort_api_key="")
& ~Q(sofort_project_id="")
)
| Q(sofort_enabled=False),
name="sofort_enabled_configured",
),
models.CheckConstraint(
check=(
Q(debit_enabled=True)
& ~Q(sdd_creditor="")
& ~Q(sdd_creditor_identifier="")
& ~Q(sdd_iban="")
& ~Q(sdd_bic="")
)
| Q(debit_enabled=False),
name="debit_enabled_configured",
),
models.CheckConstraint(
check=(Q(paypal_enabled=True) & ~Q(paypal_client_id="") & ~Q(paypal_secret=""))
| Q(paypal_enabled=False),
name="paypal_enabled_configured",
),
] ]
def __str__(self) -> str: def __str__(self) -> str:
......
...@@ -24,99 +24,41 @@ class PublicPayments(BooleanPreference): ...@@ -24,99 +24,41 @@ class PublicPayments(BooleanPreference):
@site_preferences_registry.register @site_preferences_registry.register
class SofortAPIID(StringPreference): class EnablePledge(BooleanPreference):
"""Sofort payment backend - API ID.""" """Payment pledge payment backend - enable or not."""
section = payments
name = "sofort_api_id"
verbose_name = _("Sofort / Klarna - API ID")
default = ""
required = False
@site_preferences_registry.register
class SofortAPIKey(StringPreference):
"""Sofort payment backend - API key."""
section = payments
name = "sofort_api_key"
verbose_name = _("Sofort / Klarna - API Key")
default = ""
required = False
@site_preferences_registry.register
class SofortProjectID(StringPreference):
"""Sofort payment backend - project ID."""
section = payments
name = "sofort_project_id"
verbose_name = _("Sofort / Klarna - Project ID")
default = ""
required = False
@site_preferences_registry.register
class PaypalClientID(StringPreference):
"""PayPal payment backend - client ID."""
section = payments
name = "paypal_client_id"
verbose_name = _("PayPal - Client ID")
default = ""
required = False
@site_preferences_registry.register
class PaypalSecret(StringPreference):
"""PayPal payment backend - secret."""
section = payments
name = "paypal_secret"
verbose_name = _("PayPal - Secret")
default = ""
required = False
@site_preferences_registry.register
class PaypalCapture(BooleanPreference):
"""PayPal payment backend - use Authorize & Capture."""
section = payments section = payments
name = "paypal_capture" name = "pledge_enabled"
verbose_name = _("PayPal - Use Authorize & Capture") verbose_name = _("Enable pledged payments")
default = False default = False
required = False required = False
@site_preferences_registry.register @site_preferences_registry.register
class EnablePledge(BooleanPreference): class EnablePayPal(BooleanPreference):
"""Payment pledge payment backend - enable or not.""" """Payment paypal payment backend - enable or not."""
section = payments section = payments
name = "pledge_enabled" name = "paypal_enabled"
verbose_name = _("Enable pledged payments") verbose_name = _("Enable PayPal payments")
default = False default = False
required = False required = False
@site_preferences_registry.register @site_preferences_registry.register
class SDDCreditor(StringPreference): class EnableSofort(BooleanPreference):
"""SEPA direct debit backend - creditor name.""" """Payment sofort payment backend - enable or not."""
section = payments section = payments
name = "sdd_creditor" name = "sofort_enabled"
verbose_name = _("SEPA Direct Debit - Creditor name") verbose_name = _("Enable Sofort payments")
default = "" default = False
required = False required = False
@site_preferences_registry.register @site_preferences_registry.register
class SDDCreditorIdentifier(StringPreference): class EnableDebit(BooleanPreference):
"""SEPA direct debit backend - creditor identifier.""" """Payment debit payment backend - enable or not."""
section = payments section = payments
name = "sdd_creditor_identifier" name = "sdd_enabled"
verbose_name = _("SEPA Direct Debit - Creditor identifier") verbose_name = _("Enable debit payments")
default = "" default = False
required = False required = False
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment