diff --git a/aleksis/apps/tezor/filters.py b/aleksis/apps/tezor/filters.py index 397883fff0a581ef936fa06d31d268070923ebdc..2afa6361751917dfdb75ee5c723cb01669e7469a 100644 --- a/aleksis/apps/tezor/filters.py +++ b/aleksis/apps/tezor/filters.py @@ -8,14 +8,12 @@ from .models.invoice import Invoice class InvoicesFilter(FilterSet): variant = ChoiceFilter(choices=Invoice.get_variant_choices()) status = ChoiceFilter(choices=PaymentStatus.CHOICES) - - + def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.form.layout = Layout( Row("variant", "status"), ) - class Meta: models = Invoice diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py index 08805fedd809dcd57ae2d0bf507e863bc7d51426..223cd61d6d9ae75c22c5b32599f6a6cd367c61e4 100644 --- a/aleksis/apps/tezor/models/invoice.py +++ b/aleksis/apps/tezor/models/invoice.py @@ -1,4 +1,3 @@ -from django.conf import settings from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contenttypes.models import ContentType from django.db import models @@ -105,11 +104,17 @@ class Invoice(BasePayment, PureDjangoModel): super().save(*args, **kwargs) - @classmethod - def get_variant_choices(cls): + def get_variant_choices(self=None): choices = [] - for variant in settings.PAYMENT_VARIANTS.keys(): - choices.append((variant, cls.VARIANT_DISPLAY[variant][0])) + 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 def get_variant_name(self): diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py index 8ede4aa614fccdef7a5b9f74c78990e8d6b070e1..17cc6888b95ba049ee2495834aaf577f0b27f89b 100644 --- a/aleksis/apps/tezor/views.py +++ b/aleksis/apps/tezor/views.py @@ -1,4 +1,3 @@ -from django.conf import settings from django.core.exceptions import PermissionDenied, SuspiciousOperation from django.shortcuts import get_object_or_404, redirect, render from django.urls import reverse, reverse_lazy @@ -48,7 +47,7 @@ class DoPaymentView(PermissionRequiredMixin, View): new_variant = request.GET.get("variant", None) if new_variant: if request.user.has_perm("tezor.change_payment_variant", self.object): - if new_variant in settings.PAYMENT_VARIANTS: + if new_variant in dict(self.object.get_variant_choices()).keys(): self.object.variant = new_variant self.object.save() else: @@ -145,7 +144,9 @@ class InvoiceGroupDetailView(PermissionRequiredMixin, DetailView): def post(self, request, *args, **kwargs): r = super().get(request, *args, **kwargs) if self.invoices_action_form.is_valid(): - action = self.invoices_action_form._get_actions_dict()[self.invoices_action_form.cleaned_data["action"]] + action = self.invoices_action_form._get_actions_dict()[ + self.invoices_action_form.cleaned_data["action"] + ] if request.user.has_perm(action.permission): self.invoices_action_form.execute() return r @@ -162,7 +163,9 @@ class InvoiceGroupDetailView(PermissionRequiredMixin, DetailView): RequestConfig(self.request).configure(invoices_table) context["invoices_table"] = invoices_table - self.invoices_action_form = InvoicesActionForm(self.request, self.request.POST or None, queryset=invoices) + self.invoices_action_form = InvoicesActionForm( + self.request, self.request.POST or None, queryset=invoices + ) context["action_form"] = self.invoices_action_form return context