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):
|
def __str__(self):
|
||||||
return f"{self.name}: {self.transaction}"
|
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" />
|
<input type="submit" />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<ul>
|
<form action="{% url 'add_invoice' transaction.id %}" method="post" enctype="multipart/form-data">
|
||||||
{% for inv in invoices %}
|
{% csrf_token %}
|
||||||
<li><a href="{% url 'invoice' inv.id %}">{{ inv.name }}</a></li>
|
<ul>
|
||||||
{% endfor %}
|
{% for inv in invoices %}
|
||||||
</ul>
|
<li>
|
||||||
|
<a href="{% url 'invoice' inv.id %}">{{ inv.name }}</a>
|
||||||
|
<a href="{% url 'del_invoice' transaction.id inv.id %}">x</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
<li>{{ invoice_form }}<input type="submit" /></li>
|
||||||
|
</ul>
|
||||||
|
</form>
|
||||||
|
|
|
@ -8,5 +8,11 @@ urlpatterns = [
|
||||||
path(
|
path(
|
||||||
"transaction/<uuid>/update", views.update_transaction, name="update_transaction"
|
"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"),
|
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 django.http import HttpResponse
|
||||||
|
|
||||||
|
|
||||||
from .models import Transaction, TransactionForm, Invoice
|
from .models import Transaction, TransactionForm, Invoice, InvoiceForm
|
||||||
|
|
||||||
|
|
||||||
def index(request):
|
def index(request):
|
||||||
|
@ -23,6 +23,7 @@ def transaction(request, uuid):
|
||||||
"transaction": _transaction,
|
"transaction": _transaction,
|
||||||
"form": TransactionForm(instance=_transaction),
|
"form": TransactionForm(instance=_transaction),
|
||||||
"invoices": _invoices,
|
"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)
|
_invoice = get_object_or_404(Invoice, id=uuid)
|
||||||
with _invoice.file.open() as _file:
|
with _invoice.file.open() as _file:
|
||||||
return HttpResponse(_file.read(), content_type="application/pdf")
|
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