]> git.0d.be Git - django-panik-matos.git/blob - matos/views.py
e835788236ad1cbfeb86b1d4258319b783cae9d4
[django-panik-matos.git] / matos / views.py
1 from django.core.urlresolvers import reverse
2
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
6
7 from .models import Piece, Loan, LoanPiece
8 from .forms import LoanForm
9
10
11 class PieceListView(ListView):
12     model = Piece
13
14
15 class PieceDetailView(DetailView):
16     model = Piece
17
18
19 class PieceCreateView(CreateView):
20     model = Piece
21
22
23 class PieceUpdateView(UpdateView):
24     model = Piece
25
26
27 class PieceDeleteView(DeleteView):
28     model = Piece
29
30     def get_success_url(self):
31         return reverse('pieces-list')
32
33
34 class LoanCreateView(CreateView):
35     model = Loan
36     form_class = LoanForm
37
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)
41         return context
42
43
44 class LoanDetailView(DetailView):
45     model = Loan
46
47
48 class LoanUpdateView(UpdateView):
49     model = Loan
50     form_class = LoanForm
51
52     def form_valid(self, form):
53         pieces = {}
54         for piece in self.request.POST.getlist('id_pieces'):
55             if piece not in pieces:
56                 pieces[piece] = 0
57             pieces[piece] += 1
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)
63         return result
64
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)
71         return context
72
73
74 class LoanDeleteView(DeleteView):
75     model = Loan
76
77     def get_success_url(self):
78         return reverse('pieces-list')