brewery-website/kegs/views.py
2024-05-30 16:26:55 -04:00

47 lines
1.4 KiB
Python

from django.shortcuts import render, get_object_or_404
from django.views.generic import ListView
from django.http import HttpResponse
from kegs.models import Keg
from config.extras import AveryLabel
import logging
logger = logging.getLogger('django')
def home(request):
return render(request, 'kegs/home.html',{'kegs':Keg.objects.all()})
class KegListView(ListView):
model = Keg
def keg(request, keg_id):
keg = get_object_or_404(Keg, pk=keg_id)
return render(request, 'kegs/keg.html', {'keg': keg})
def keg_labels(request):
""" Create label PDF for selected kegs
"""
skip_count = request.POST.get("skip_count", "")
kegs_list = request.POST.getlist("kegs", "")
to_print = list(filter(lambda d: str(d.id) in kegs_list, Keg.objects.all()))
# Create the HttpResponse object with the appropriate PDF headers.
response = HttpResponse(content_type ='application/pdf')
response['Content-Disposition'] = 'attachment; filename=keglabels.pdf'
labelSheet = AveryLabel(5263, debug=False)
labels = []
for keg in to_print:
labels.append({
'id': keg.id,
'title': keg.kegtype.name,
'data': ['{} gal'.format(keg.kegtype.size_gal), 'ID: {}'.format(keg.id)],
'blank': False,
'host': request.get_host(),
'template': 'keg',
'ns': 'kegs'
})
labelSheet.render(labels, response, skip_count)
return response