def create_invoice_form(self): kwargs = {'instance': self.get_object()} if self.request.method == 'POST': kwargs.update({'data': self.request.POST}) self.invoice_form = InvoiceCreateForm(**kwargs)
class ManageApplication(ManagerPermissionMixin, SetCompetitionContextMixin, DetailView): model = Application pk_url_kwarg = 'pk2' template_name = 'manager/application.html' invoice_form = None def get_context_data(self, **kwargs): context = super(ManageApplication, self).get_context_data(**kwargs) context.update({'invoice_form': self.invoice_form}) context.update({'payments': self.object.payment_set.all()}) return context def create_invoice_form(self): kwargs = {'instance': self.get_object()} if self.request.method == 'POST': kwargs.update({'data': self.request.POST}) self.invoice_form = InvoiceCreateForm(**kwargs) @method_decorator(xframe_options_exempt) def get(self, request, *args, **kwargs): self.create_invoice_form() return super(ManageApplication, self).get(request, *args, **kwargs) def process_post(self, request): action = request.POST.get('action', '') if action == 'mark_as_payed': self.object.payment_status = Application.PAY_STATUS_PAYED for participant in self.object.participant_set.all(): participant.is_participating = True participant.save() self.object.save() elif action == 'create_invoice': self.create_invoice_form() if self.invoice_form.is_valid(): self.invoice_form.save() @method_decorator(xframe_options_exempt) def post(self, request, *args, **kwargs): self.object = self.get_object() self.process_post(request) return super(ManageApplication, self).get(request, *args, **kwargs)