brewery-website/equipment/views.py

64 lines
1.8 KiB
Python

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