From 065d3a3c51d86a8559ec03bc3f7e88fcc879729c Mon Sep 17 00:00:00 2001
From: Dominik George <dominik.george@teckids.org>
Date: Sat, 12 Mar 2022 12:46:44 +0100
Subject: [PATCH] Move status icon to Invoice model

---
 aleksis/apps/tezor/models/invoice.py               | 14 +++++++++++++-
 .../apps/tezor/templates/tezor/invoice/full.html   | 12 +-----------
 2 files changed, 14 insertions(+), 12 deletions(-)

diff --git a/aleksis/apps/tezor/models/invoice.py b/aleksis/apps/tezor/models/invoice.py
index 1ed1fa8..3ea79e3 100644
--- a/aleksis/apps/tezor/models/invoice.py
+++ b/aleksis/apps/tezor/models/invoice.py
@@ -6,7 +6,7 @@ from django.shortcuts import reverse
 from django.utils.translation import gettext_lazy as _
 
 from djmoney.models.fields import CurrencyField, MoneyField
-from payments import PurchasedItem
+from payments import PaymentStatus, PurchasedItem
 from payments.models import BasePayment
 
 from aleksis.core.mixins import ExtensibleModel, PureDjangoModel
@@ -40,6 +40,15 @@ class Invoice(BasePayment, PureDjangoModel):
         "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",
+        PaymentStatus.PREAUTH: "mdi:cash-lock",
+        PaymentStatus.CONFIRMED: "mdi:cash-check",
+        PaymentStatus.REFUNDED: "mdi:cash-refund",
+        PaymentStatus.REJECTED: "mdi:cash-remove",
+        PaymentStatus.ERROR: "mdi:cash-remove",
+    }
 
     group = models.ForeignKey(
         InvoiceGroup, verbose_name=_("Invoice group"), related_name="invoices", on_delete=models.SET_NULL, null=True
@@ -64,6 +73,9 @@ class Invoice(BasePayment, PureDjangoModel):
     def get_variant_icon(self):
         return self.__class__.VARIANT_DISPLAY[self.variant][1]
 
+    def get_status_icon(self):
+        return self.__class__.STATUS_ICONS[self.status]
+
     def get_purchased_items(self):
         return self.for_object.get_purchased_items()
 
diff --git a/aleksis/apps/tezor/templates/tezor/invoice/full.html b/aleksis/apps/tezor/templates/tezor/invoice/full.html
index e51b62f..2e0d735 100644
--- a/aleksis/apps/tezor/templates/tezor/invoice/full.html
+++ b/aleksis/apps/tezor/templates/tezor/invoice/full.html
@@ -72,17 +72,7 @@
               </tr>
               <tr>
                 <td>
-                  {% if object.status == "waiting" or object.status == "input" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-lock-open"></i>
-                  {% elif object.status == "rejected" or object.status == "error" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-remove"></i>
-                  {% elif object.status == "preauth" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-lock"></i>
-                  {% elif object.status == "confirmed" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-check"></i>
-                  {% elif object.status == "refunded" %}
-                  <i class="material-icons iconify" data-icon="mdi:cash-refund"></i>
-                  {% endif %}
+                  <i class="material-icons iconify" data-icon="object.get_status_icon"></i>
                 </td>
                 <td>
                   {{ object.get_status_display }}
-- 
GitLab