Skip to content
Snippets Groups Projects
Commit d32d285a authored by Tom Teichler's avatar Tom Teichler :beers:
Browse files

Fix UI for creating clients

parent 8bddbc52
No related branches found
No related tags found
1 merge request!4Resolve "Add UI for invoice management"
Pipeline #58860 failed
from material import Layout
from aleksis.core.mixins import ExtensibleForm
from .models.base import Client
class EditEventForm(ExtensibleForm):
class EditClientForm(ExtensibleForm):
"""Form to create or edit clients."""
layout = Layout("name")
class Meta:
model = Client
exclude = []
......@@ -11,3 +11,6 @@ class Client(ExtensibleModel):
constraints = [
models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site")
]
def __str__(self) -> str:
return self.name
from django.utils.translation import gettext_lazy as _
import django_tables2 as tables
from django_tables2.utils import A
class PurchasedItemsTable(tables.Table):
......@@ -46,3 +47,9 @@ class ClientsTable(tables.Table):
verbose_name=_("Edit"),
text=_("Edit"),
)
delete = tables.LinkColumn(
"delete_client_by_pk",
args=[A("id")],
verbose_name=_("Delete"),
text=_("Delete"),
)
......@@ -4,7 +4,7 @@ from . import views
urlpatterns = [
path("payments/", include("payments.urls")),
path("invoice/<int:pk>/print", views.GetInvoicePDF.as_view(), name="get_invoice_by_pk")
path("invoice/<int:pk>/print", views.GetInvoicePDF.as_view(), name="get_invoice_by_pk"),
path(
"clients/list",
views.ClientListView.as_view(),
......@@ -20,4 +20,9 @@ urlpatterns = [
views.ClientEditView.as_view(),
name="edit_client_by_pk",
),
path(
"clients/<int:pk>/delete",
views.ClientDeleteView.as_view(),
name="delete_client_by_pk",
),
]
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
......@@ -29,8 +37,8 @@ class ClientListView(PermissionRequiredMixin, SingleTableView):
model = Client
table_class = ClientsTable
permission_required = "teor.view_clients"
template_name = "teor/client/list.html"
permission_required = "tezor.view_clients"
template_name = "tezor/client/list.html"
@method_decorator(never_cache, name="dispatch")
......@@ -39,8 +47,8 @@ class ClientCreateView(PermissionRequiredMixin, AdvancedCreateView):
model = Client
form_class = EditClientForm
permission_required = "teor.add_clients"
template_name = "teor/client/create.html"
permission_required = "tezor.add_clients"
template_name = "tezor/client/create.html"
success_url = reverse_lazy("clients")
success_message = _("The client has been created.")
......@@ -51,7 +59,17 @@ class ClientEditView(PermissionRequiredMixin, AdvancedEditView):
model = Client
form_class = EditClientForm
permission_required = "teor.edit_clients"
template_name = "teor/client/edit.html"
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.")
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