add qr code

This commit is contained in:
2024-01-05 20:18:24 +00:00
parent a0fd1844f2
commit 8073215888
2 changed files with 26 additions and 0 deletions

View File

@@ -1,7 +1,10 @@
from django.contrib import admin, messages from django.contrib import admin, messages
from django.utils.html import format_html
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import ngettext from django.utils.translation import ngettext
from segno import helpers
from .forms import ( from .forms import (
BankDataAdminForm, BankDataAdminForm,
BillAdminForm, BillAdminForm,
@@ -67,6 +70,7 @@ class BillAdmin(admin.ModelAdmin):
"status_colored", "status_colored",
"bill_creator", "bill_creator",
"affiliation", "affiliation",
"get_qrcode",
] ]
actions = ["make_cleared", "make_finished"] actions = ["make_cleared", "make_finished"]
@@ -171,6 +175,27 @@ class BillAdmin(admin.ModelAdmin):
return f"{ tmp.bic }" return f"{ tmp.bic }"
@admin.display(description="QR Code")
def get_qrcode(self, obj):
if obj.status != "C":
return "-"
try:
tmp = BankData.objects.get(id=obj.bankdata.id)
except Exception:
return "-"
qrcode = helpers.make_epc_qr(
name=tmp.name,
iban=tmp.iban,
amount=obj.amount,
text=obj.purpose,
bic=tmp.bic,
encoding="utf-8",
)
uri = qrcode.png_data_uri(scale=3.0)
return format_html(f'<img src="{uri}">')
@admin.display(description="Status") @admin.display(description="Status")
def status_colored(self, obj): def status_colored(self, obj):
# TODO: if there is a status without color, set nothing. # TODO: if there is a status without color, set nothing.

View File

@@ -16,6 +16,7 @@ ldap3==2.9.1
mysqlclient==2.1.1 mysqlclient==2.1.1
pillow==9.5.0 pillow==9.5.0
reportlab<4 reportlab<4
segno==1.6.0
xhtml2pdf==0.2.11 # dependency reportlab<4 xhtml2pdf==0.2.11 # dependency reportlab<4
Whoosh==2.7.4 Whoosh==2.7.4
elasticsearch elasticsearch