Skip to content
Snippets Groups Projects
Commit edcada29 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

Merge branch '8-add-my-invoices-view' into 'master'

Resolve "Add "my invoices" view"

Closes #8

See merge request !14
parents 5e691da5 46fc8135
No related branches found
No related tags found
1 merge request!14Resolve "Add "my invoices" view"
Pipeline #61166 canceled
......@@ -23,6 +23,15 @@ MENUS = {
)
],
},
{
"name": _("My invoices"),
"url": "personal_invoices",
"svg_icon": "fa6-solid:file-invoice-dollar",
"validators": [
"menu_generator.validators.is_authenticated",
"aleksis.core.util.core_helpers.has_person",
],
},
],
}
]
......
......@@ -150,3 +150,6 @@ send_invoice_email_predicate = (
| has_object_perm("tezor.send_invoice_email")
)
rules.add_perm("tezor.send_invoice_email_rule", send_invoice_email_predicate)
view_own_invoices_predicate = has_person
rules.add_perm("tezor.view_own_invoices_list_rule", view_own_invoices_predicate)
{% extends "core/base.html" %}
{% load material_form i18n %}
{% load render_table from django_tables2 %}
{% block page_title %}{% blocktrans %}My invoices{% endblocktrans %}{% endblock %}
{% block browser_title %}{% blocktrans %}My invoices{% endblocktrans %}{% endblock %}
{% block content %}
{% render_table table %}
{% endblock %}
......@@ -51,6 +51,7 @@ urlpatterns = [
views.InvoiceGroupDeleteView.as_view(),
name="delete_invoice_group_by_pk",
),
path("invoices/my/", views.MyInvoicesListView.as_view(), name="personal_invoices"),
path(
"invoice/<str:slug>/",
views.InvoiceDetailView.as_view(),
......
......@@ -34,6 +34,13 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
return context
def has_permission(self):
invoice = Invoice.objects.get(token=self.kwargs["token"])
perms = self.get_permission_required()
return self.request.user.has_perms(perms, invoice)
class DoPaymentView(PermissionRequiredMixin, View):
......@@ -237,3 +244,17 @@ class SendInvoiceEmail(PermissionRequiredMixin, View):
url = Invoice.objects.get(token=token).get_absolute_url()
return redirect(url)
class MyInvoicesListView(PermissionRequiredMixin, SingleTableView):
"""Table of all invoices belonging to a user."""
model = Invoice
table_class = InvoicesTable
permission_required = "tezor.view_own_invoices_list_rule"
template_name = "tezor/invoice/list.html"
def get_queryset(self, *args, **kwargs):
invoices = self.model.objects.filter(person=self.request.user.person)
return invoices
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment