1 from django.core.urlresolvers import reverse
3 from django.views.generic.list import ListView
4 from django.views.generic.detail import DetailView
5 from django.views.generic.edit import CreateView, UpdateView, DeleteView
7 from .models import Piece, Loan, LoanPiece
8 from .forms import LoanForm
11 class PieceListView(ListView):
15 class PieceDetailView(DetailView):
19 class PieceCreateView(CreateView):
23 class PieceUpdateView(UpdateView):
27 class PieceDeleteView(DeleteView):
30 def get_success_url(self):
31 return reverse('pieces-list')
34 class LoanCreateView(CreateView):
38 def get_context_data(self, *args, **kwargs):
39 context = super(LoanCreateView, self).get_context_data(*args, **kwargs)
40 context['pieces'] = Piece.objects.filter(rentable=True)
44 class LoanDetailView(DetailView):
48 class LoanUpdateView(UpdateView):
52 def form_valid(self, form):
54 for piece in self.request.POST.getlist('id_pieces'):
55 if piece not in pieces:
58 result = super(LoanUpdateView, self).form_valid(form)
59 self.object.pieces.clear()
60 for piece_id, quantity in pieces.items():
61 LoanPiece.objects.create(piece=Piece.objects.get(id=piece_id),
62 loan=self.object, quantity=quantity)
65 def get_context_data(self, *args, **kwargs):
66 context = super(LoanUpdateView, self).get_context_data(*args, **kwargs)
67 context['pieces'] = Piece.objects.filter(rentable=True)
68 context['loaned'] = []
69 for x in LoanPiece.objects.filter(loan=self.object):
70 context['loaned'].extend([x.id]*x.quantity)
74 class LoanDeleteView(DeleteView):
77 def get_success_url(self):
78 return reverse('pieces-list')