47 lines
1.4 KiB
Python
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 |