From fe1223155d868a5e970116af1f8f2f7d2ce8d210 Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Mon, 24 Mar 2025 11:34:46 +0100
Subject: [PATCH 1/2] Adjust to RegistryObject classvar name change

---
 aleksis/apps/tezor/models/base.py                    | 2 +-
 aleksis/apps/tezor/models/invoice.py                 | 6 ++++--
 aleksis/apps/tezor/models/payment_variant.py         | 8 ++++----
 aleksis/apps/tezor/templates/tezor/invoice/full.html | 2 +-
 aleksis/apps/tezor/views.py                          | 2 +-
 5 files changed, 11 insertions(+), 9 deletions(-)

diff --git a/aleksis/apps/tezor/models/base.py b/aleksis/apps/tezor/models/base.py
index fd51caa..18dc03a 100644
--- a/aleksis/apps/tezor/models/base.py
+++ b/aleksis/apps/tezor/models/base.py
@@ -9,7 +9,7 @@ class Client(ExtensibleModel):
     email = models.EmailField(verbose_name=_("Email"))
 
     def get_payment_variant_choices(self):
-        return [(v.name, v.verbose_name) for v in self.payment_variants.all()]
+        return [(v._class_name, v.verbose_name) for v in self.payment_variants.all()]
 
     def __str__(self):
         return self.name
diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index b7f3781..550cbe0 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -127,14 +127,16 @@ class Invoice(BasePayment, PureDjangoModel):
         super().save(*args, **kwargs)
 
     def get_variant(self):
-        variants = [v for v in self.group.client.payment_variants.all() if v.name == self.variant]
+        variants = [
+            v for v in self.group.client.payment_variants.all() if v._class_name == self.variant
+        ]
         return variants[0] if variants else None
 
     def get_absolute_url(self):
         return reverse("invoice_by_token", kwargs={"slug": self.token})
 
     def get_variant_name(self) -> str:
-        return PaymentVariant.registered_objects_dict[self.variant].name
+        return PaymentVariant.registered_objects_dict[self.variant]._class_name
 
     def get_variant_icon(self) -> str:
         return PaymentVariant.registered_objects_dict[self.variant].icon
diff --git a/aleksis/apps/tezor/models/payment_variant.py b/aleksis/apps/tezor/models/payment_variant.py
index 1fb91aa..62d95f4 100644
--- a/aleksis/apps/tezor/models/payment_variant.py
+++ b/aleksis/apps/tezor/models/payment_variant.py
@@ -44,7 +44,7 @@ class PaymentVariant(RegistryObject, ExtensiblePolymorphicModel):
 class SofortPaymentVariant(PaymentVariant):
     icon = "simple-icons:klarna"
     verbose_name = _("Klarna/Sofort")
-    name = "sofort"
+    _class_name = "sofort"
 
     api_id = models.CharField(verbose_name=_("API ID"), max_length=255)
     api_key = models.CharField(verbose_name=_("API key"), max_length=255)
@@ -64,7 +64,7 @@ class SofortPaymentVariant(PaymentVariant):
 class PaypalPaymentVariant(PaymentVariant):
     icon = "logos:paypal"
     verbose_name = _("PayPal")
-    name = "paypal"
+    _class_name = "paypal"
 
     api_client_id = models.CharField(verbose_name=_("Client ID"), max_length=255)
     secret = models.CharField(verbose_name=_("Secret"), max_length=255)
@@ -90,7 +90,7 @@ class PaypalPaymentVariant(PaymentVariant):
 class SEPADirectDebitPaymentVariant(PaymentVariant):
     icon = "mdi:bank-transfer"
     verbose_name = _("SEPA Direct Debit")
-    name = "sdd"
+    _class_name = "sdd"
 
     creditor = models.CharField(verbose_name=_("Creditor name"), max_length=255)
     creditor_identifier = models.CharField(
@@ -120,7 +120,7 @@ class SEPADirectDebitPaymentVariant(PaymentVariant):
 class PledgePaymentVariant(PaymentVariant):
     icon = "mdi:hand-coin"
     verbose_name = _("Payment pledge/Manual payment")
-    name = "pledge"
+    _class_name = "pledge"
 
     def get_provider(self):
         from djp_sepa.providers import PaymentPledgeProvider  # noqa
diff --git a/aleksis/apps/tezor/templates/tezor/invoice/full.html b/aleksis/apps/tezor/templates/tezor/invoice/full.html
index 1263c94..7ea2caf 100644
--- a/aleksis/apps/tezor/templates/tezor/invoice/full.html
+++ b/aleksis/apps/tezor/templates/tezor/invoice/full.html
@@ -76,7 +76,7 @@
                   <td>
                     <select name="variant" {% if not can_change_variant %}disabled{% endif %}>
                       {% for payment_variant in object.group.client.payment_variants.all %}
-                        <option value="{{ payment_variant.name }}" {% if object.variant == payment_variant.name %}selected{% endif %}>{{ payment_variant.verbose_name }}</option>
+                        <option value="{{ payment_variant._class_name }}" {% if object.variant == payment_variant._class_name %}selected{% endif %}>{{ payment_variant.verbose_name }}</option>
                       {% endfor %}
                     </select>
                   </td>
diff --git a/aleksis/apps/tezor/views.py b/aleksis/apps/tezor/views.py
index 3fdabfe..e83aa70 100644
--- a/aleksis/apps/tezor/views.py
+++ b/aleksis/apps/tezor/views.py
@@ -54,7 +54,7 @@ class DoPaymentView(PermissionRequiredMixin, View):
         self.object = get_object_or_404(self.model, token=token)
 
         allowed_variants = [
-            variant.name for variant in self.object.group.client.payment_variants.all()
+            variant._class_name for variant in self.object.group.client.payment_variants.all()
         ]
 
         new_variant = request.GET.get("variant", None)
-- 
GitLab


From e1160c5f5bdb3595834bacd4a2968dc59f6c9496 Mon Sep 17 00:00:00 2001
From: magicfelix <felix@felix-zauberer.de>
Date: Mon, 24 Mar 2025 11:36:10 +0100
Subject: [PATCH 2/2] Update changelog

---
 CHANGELOG.rst | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 054e1dc..8df4111 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -12,6 +12,11 @@ Unreleased
 This version requires AlekSIS-Core 3.0. It is incompatible with any previous
 version.
 
+Breaking
+~~~~~~~~
+
+* `PaymentVariant`'s class variable `name` has been renamed to `_class_name`.
+
 Removed
 ~~~~~~~
 
-- 
GitLab