from django.views.generic import View from django.shortcuts import render from django.views.decorators.cache import never_cache from django.utils.decorators import method_decorator from django.views.generic import FormView, TemplateView from django.utils.translation import ugettext as _ from django.urls import reverse, reverse_lazy from django.views.generic.detail import DetailView from rules.contrib.views import PermissionRequiredMixin from django_tables2.views import SingleTableView from aleksis.core.views import RenderPDFView from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView from .tables import ClientsTable from .forms import EditClientForm from .models.base import Client from .models.invoice import Invoice class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView): permission_required = "tezor.can_print_invoice" def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) invoice = Invoice.objects.get(id=self.kwargs["pk"]) self.template_name = invoice.group.template_name context["invoice"] = invoice print(invoice.group.__dict__) return context class ClientListView(PermissionRequiredMixin, SingleTableView): """Table of all clients.""" model = Client table_class = ClientsTable permission_required = "tezor.view_clients" template_name = "tezor/client/list.html" @method_decorator(never_cache, name="dispatch") class ClientCreateView(PermissionRequiredMixin, AdvancedCreateView): """Create view for clients.""" model = Client form_class = EditClientForm permission_required = "tezor.add_clients" template_name = "tezor/client/create.html" success_url = reverse_lazy("clients") success_message = _("The client has been created.") @method_decorator(never_cache, name="dispatch") class ClientEditView(PermissionRequiredMixin, AdvancedEditView): """Edit view for clients.""" model = Client form_class = EditClientForm permission_required = "tezor.edit_clients" template_name = "tezor/client/edit.html" success_url = reverse_lazy("clients") success_message = _("The client has been saved.") class ClientDeleteView(PermissionRequiredMixin, AdvancedDeleteView): """Delete view for client.""" model = Client permission_required = "tezor.delete_client" template_name = "core/pages/delete.html" success_url = reverse_lazy("clients") success_message = _("The client has been deleted.")