Add invoice management
This commit is contained in:
parent
5339a725f2
commit
6ef5a441e1
4 changed files with 44 additions and 6 deletions
|
@ -28,3 +28,13 @@ class Invoice(models.Model):
|
|||
|
||||
def __str__(self):
|
||||
return f"{self.name}: {self.transaction}"
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
self.file.delete()
|
||||
super().delete(*args, **kwargs)
|
||||
|
||||
|
||||
class InvoiceForm(ModelForm):
|
||||
class Meta:
|
||||
model = Invoice
|
||||
fields = ["name", "file"]
|
||||
|
|
|
@ -4,8 +4,15 @@
|
|||
<input type="submit" />
|
||||
</form>
|
||||
|
||||
<ul>
|
||||
<form action="{% url 'add_invoice' transaction.id %}" method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<ul>
|
||||
{% for inv in invoices %}
|
||||
<li><a href="{% url 'invoice' inv.id %}">{{ inv.name }}</a></li>
|
||||
<li>
|
||||
<a href="{% url 'invoice' inv.id %}">{{ inv.name }}</a>
|
||||
<a href="{% url 'del_invoice' transaction.id inv.id %}">x</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<li>{{ invoice_form }}<input type="submit" /></li>
|
||||
</ul>
|
||||
</form>
|
||||
|
|
|
@ -8,5 +8,11 @@ urlpatterns = [
|
|||
path(
|
||||
"transaction/<uuid>/update", views.update_transaction, name="update_transaction"
|
||||
),
|
||||
path("transaction/<uuid>/add_invoice", views.add_invoice, name="add_invoice"),
|
||||
path(
|
||||
"transaction/<uuid>/del_invoice/<invoice_id>",
|
||||
views.del_invoice,
|
||||
name="del_invoice",
|
||||
),
|
||||
path("invoice/<uuid>", views.invoice, name="invoice"),
|
||||
]
|
||||
|
|
|
@ -2,7 +2,7 @@ from django.shortcuts import render, get_object_or_404, redirect
|
|||
from django.http import HttpResponse
|
||||
|
||||
|
||||
from .models import Transaction, TransactionForm, Invoice
|
||||
from .models import Transaction, TransactionForm, Invoice, InvoiceForm
|
||||
|
||||
|
||||
def index(request):
|
||||
|
@ -23,6 +23,7 @@ def transaction(request, uuid):
|
|||
"transaction": _transaction,
|
||||
"form": TransactionForm(instance=_transaction),
|
||||
"invoices": _invoices,
|
||||
"invoice_form": InvoiceForm(instance=Invoice(transaction=_transaction)),
|
||||
},
|
||||
)
|
||||
|
||||
|
@ -38,3 +39,17 @@ def invoice(request, uuid):
|
|||
_invoice = get_object_or_404(Invoice, id=uuid)
|
||||
with _invoice.file.open() as _file:
|
||||
return HttpResponse(_file.read(), content_type="application/pdf")
|
||||
|
||||
|
||||
def add_invoice(request, uuid):
|
||||
_transaction = get_object_or_404(Transaction, id=uuid)
|
||||
_invoice = Invoice(transaction=_transaction)
|
||||
_form = InvoiceForm(request.POST, request.FILES, instance=_invoice)
|
||||
_form.save()
|
||||
return redirect(transaction, uuid=uuid)
|
||||
|
||||
|
||||
def del_invoice(request, uuid, invoice_id):
|
||||
_invoice = get_object_or_404(Invoice, id=invoice_id)
|
||||
_invoice.delete()
|
||||
return redirect(transaction, uuid=uuid)
|
||||
|
|
Loading…
Reference in a new issue