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
No related merge requests found
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