1 from django.shortcuts import render_to_response, get_object_or_404
2 from django.contrib.auth.decorators import login_required, permission_required
3 from django.http import HttpResponse
4 from django.forms.models import inlineformset_factory
5 from django.template import RequestContext
6 from django.views.generic.create_update import get_model_and_form_class, apply_extra_context, redirect, update_object, lookup_object, delete_object
7 from django.views.generic import UpdateView, DeleteView, CreateView, DetailView
8 from django.utils.decorators import method_decorator
10 from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSet
11 from extra_views.generic import GenericInlineFormSet
13 from invoice.models import Client, Invoice, InvoiceLine
14 from invoice.forms import ClientForm, InvoiceForm
18 clients = Client.objects.all()
19 return render_to_response('invoice/index.html', {'clients': clients})
21 # ------------------- CLIENT ---------------
23 class DetailClient(DetailView):
25 @method_decorator(login_required)
26 def dispatch(self, *args, **kwargs):
27 return super(DetailView, self).dispatch(*args, **kwargs)
29 class CreateClient(CreateView):
31 form_class = ClientForm
34 @method_decorator(login_required)
35 def dispatch(self, *args, **kwargs):
36 return super(CreateClient, self).dispatch(*args, **kwargs)
38 class UpdateClient(UpdateView):
40 form_class = ClientForm
43 @method_decorator(login_required)
44 def dispatch(self, *args, **kwargs):
45 return super(UpdateClient, self).dispatch(*args, **kwargs)
47 class DeleteClient(DeleteView):
49 form_class = ClientForm
52 @method_decorator(login_required)
53 def dispatch(self, *args, **kwargs):
54 return super(DeleteClient, self).dispatch(*args, **kwargs)
56 # ------------------- INVOICE ---------------
58 class InvoiceLineInline(InlineFormSet):
61 class DetailInvoice(DetailView):
64 @method_decorator(login_required)
65 def dispatch(self, *args, **kwargs):
66 return super(DetailInvoice, self).dispatch(*args, **kwargs)
68 class CreateInvoice(CreateWithInlinesView):
70 inlines = [InvoiceLineInline]
71 form_class = InvoiceForm
74 @method_decorator(login_required)
75 def dispatch(self, *args, **kwargs):
76 return super(CreateInvoice, self).dispatch(*args, **kwargs)
78 def get_initial(self):
79 initial = super(CreateInvoice, self).get_initial().copy()