Skip to content

Commit 51d7ace

Browse files
committed
add EAN barcode
1 parent e9efdbf commit 51d7ace

File tree

5 files changed

+19
-3
lines changed

5 files changed

+19
-3
lines changed

database/db.sqlite3

0 Bytes
Binary file not shown.
249 Bytes
Binary file not shown.

myapp/templates/view-item.html

+3-2
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,16 @@ <h6>{{ item.name }}</h6>
6767
</div>
6868
</div><!-- End Item Details Card -->
6969

70-
<!-- QR Code Card -->
70+
<!-- QR Code and Barcode Card -->
7171
<div class="col-lg-4">
7272
<div class="card">
7373
<div class="card-body text-center">
7474
<h5 class="card-title">Scan to Redeem</h5>
7575
<img src="data:image/png;base64,{{ qr_code_base64 }}" alt="QR Code" class="img-fluid" style="max-width: 100%;">
76+
<img src="data:image/png;base64,{{ barcode_base64 }}" alt="Barcode" class="img-fluid" style="max-width: 100%;">
7677
</div>
7778
</div>
78-
</div><!-- End QR Code Card -->
79+
</div><!-- End QR Code and Barcode Card -->
7980

8081
</div>
8182
</div><!-- End Full width column -->

myapp/views.py

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from .forms import ItemForm
1111
from .models import *
1212
from django.db.models import Sum
13+
import treepoem
1314

1415

1516
@require_GET
@@ -101,13 +102,26 @@ def create_item(request):
101102
@auth_required
102103
def view_item(request, item_uuid):
103104
item = get_object_or_404(Item, id=item_uuid)
105+
106+
# Generate QR code
104107
qr = qrcode.make(item.redeem_code)
105108
buffer = io.BytesIO()
106-
qr.save(buffer) # Remove format="PNG"
109+
qr.save(buffer)
107110
qr_code_base64 = base64.b64encode(buffer.getvalue()).decode()
111+
112+
# Generate EAN13 barcode
113+
barcode_image = treepoem.generate_barcode(
114+
barcode_type='ean13',
115+
data=str(item.id.int)[:12] # Ensure the data is 12 digits
116+
)
117+
buffer = io.BytesIO()
118+
barcode_image.convert('1').save(buffer, format='PNG')
119+
barcode_base64 = base64.b64encode(buffer.getvalue()).decode()
120+
108121
context = {
109122
'item': item,
110123
'qr_code_base64': qr_code_base64,
124+
'barcode_base64': barcode_base64,
111125
'current_date': timezone.now(),
112126
}
113127
return render(request, 'view-item.html', context)

requirements.txt

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ django-csp==3.7
1818

1919
# APP SPECIFIC
2020
qrcode==7.4.2
21+
treepoem==3.24.0
2122
apprise==1.8.0
2223

2324
# TASKS

0 commit comments

Comments
 (0)