diff --git a/aleksis/apps/tezor/models/base.py b/aleksis/apps/tezor/models/base.py index a57f180ce0a1602d592159162591157e9c4d28f6..d76cd8c3115a45884e0a888df102c99c5ba94481 100644 --- a/aleksis/apps/tezor/models/base.py +++ b/aleksis/apps/tezor/models/base.py @@ -10,6 +10,12 @@ from aleksis.core.mixins import ExtensibleModel class Client(ExtensibleModel): + VARIANT_DISPLAY = { + "paypal": (_("PayPal"), "logos:paypal"), + "sofort": (_("Klarna / Sofort"), "simple-icons:klarna"), + "pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"), + "sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"), + } name = models.CharField(verbose_name=_("Name"), max_length=255) email = models.EmailField(verbose_name=_("Email")) @@ -69,3 +75,11 @@ class Client(ExtensibleModel): def __str__(self) -> str: return self.name + + def get_variant_choices(self=None): + choices = [] + for variant in Client.VARIANT_DISPLAY.keys(): + if self and not getattr(self, f"{variant}_enabled"): + continue + choices.append((variant, Client.VARIANT_DISPLAY[variant][0])) + return choices diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py index 223cd61d6d9ae75c22c5b32599f6a6cd367c61e4..06cea962b19175e69cb9de6b639b38dca8613949 100644 --- a/aleksis/apps/tezor/models/invoice.py +++ b/aleksis/apps/tezor/models/invoice.py @@ -32,6 +32,12 @@ class InvoiceGroup(ExtensibleModel): def __str__(self) -> str: return self.name + def get_variant_choices(self=None): + if self and self.client: + return self.client.get_variant_choices() + else: + return Client.get_variant_choices() + class Meta: constraints = [ models.UniqueConstraint(fields=["client", "name"], name="group_uniq_per_client") @@ -39,12 +45,6 @@ class InvoiceGroup(ExtensibleModel): class Invoice(BasePayment, PureDjangoModel): - VARIANT_DISPLAY = { - "paypal": (_("PayPal"), "logos:paypal"), - "sofort": (_("Klarna / Sofort"), "simple-icons:klarna"), - "pledge": (_("Payment pledge / manual payment"), "mdi:hand-coin"), - "sdd": (_("SEPA Direct Debit"), "mdi:bank-transfer"), - } STATUS_ICONS = { PaymentStatus.WAITING: "mdi:cash-lock-open", PaymentStatus.INPUT: "mdi:cash-lock-open", @@ -105,23 +105,16 @@ class Invoice(BasePayment, PureDjangoModel): super().save(*args, **kwargs) def get_variant_choices(self=None): - choices = [] - for variant in Invoice.VARIANT_DISPLAY.keys(): - if ( - self - and self.group - and self.group.client - and not getattr(self.group.client, f"{variant}_enabled") - ): - continue - choices.append((variant, Invoice.VARIANT_DISPLAY[variant][0])) - return choices + if self and self.group: + return self.group.get_variant_choices() + else: + return InvoiceGroup.get_variant_choices() def get_variant_name(self): - return self.__class__.VARIANT_DISPLAY[self.variant][0] + return Client.VARIANT_DISPLAY[self.variant][0] def get_variant_icon(self): - return self.__class__.VARIANT_DISPLAY[self.variant][1] + return Client.VARIANT_DISPLAY[self.variant][1] def get_status_icon(self): return self.__class__.STATUS_ICONS[self.status]