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 aleksis.core.mixins import ExtensibleForm
from .models.base import Client from .models.base import Client
class EditEventForm(ExtensibleForm): class EditClientForm(ExtensibleForm):
"""Form to create or edit clients.""" """Form to create or edit clients."""
layout = Layout("name")
class Meta: class Meta:
model = Client model = Client
exclude = [] exclude = []
...@@ -11,3 +11,6 @@ class Client(ExtensibleModel): ...@@ -11,3 +11,6 @@ class Client(ExtensibleModel):
constraints = [ constraints = [
models.UniqueConstraint(fields=["name", "site"], name="uniq_client_per_site") 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 _ from django.utils.translation import gettext_lazy as _
import django_tables2 as tables import django_tables2 as tables
from django_tables2.utils import A
class PurchasedItemsTable(tables.Table): class PurchasedItemsTable(tables.Table):
...@@ -46,3 +47,9 @@ class ClientsTable(tables.Table): ...@@ -46,3 +47,9 @@ class ClientsTable(tables.Table):
verbose_name=_("Edit"), verbose_name=_("Edit"),
text=_("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 ...@@ -4,7 +4,7 @@ from . import views
urlpatterns = [ urlpatterns = [
path("payments/", include("payments.urls")), 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( path(
"clients/list", "clients/list",
views.ClientListView.as_view(), views.ClientListView.as_view(),
...@@ -20,4 +20,9 @@ urlpatterns = [ ...@@ -20,4 +20,9 @@ urlpatterns = [
views.ClientEditView.as_view(), views.ClientEditView.as_view(),
name="edit_client_by_pk", 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.views.generic import View
from django.shortcuts import render 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 rules.contrib.views import PermissionRequiredMixin
from django_tables2.views import SingleTableView
from aleksis.core.views import RenderPDFView from aleksis.core.views import RenderPDFView
from aleksis.core.mixins import AdvancedCreateView, AdvancedDeleteView, AdvancedEditView
from .tables import ClientsTable from .tables import ClientsTable
from .forms import EditClientForm from .forms import EditClientForm
...@@ -29,8 +37,8 @@ class ClientListView(PermissionRequiredMixin, SingleTableView): ...@@ -29,8 +37,8 @@ class ClientListView(PermissionRequiredMixin, SingleTableView):
model = Client model = Client
table_class = ClientsTable table_class = ClientsTable
permission_required = "teor.view_clients" permission_required = "tezor.view_clients"
template_name = "teor/client/list.html" template_name = "tezor/client/list.html"
@method_decorator(never_cache, name="dispatch") @method_decorator(never_cache, name="dispatch")
...@@ -39,8 +47,8 @@ class ClientCreateView(PermissionRequiredMixin, AdvancedCreateView): ...@@ -39,8 +47,8 @@ class ClientCreateView(PermissionRequiredMixin, AdvancedCreateView):
model = Client model = Client
form_class = EditClientForm form_class = EditClientForm
permission_required = "teor.add_clients" permission_required = "tezor.add_clients"
template_name = "teor/client/create.html" template_name = "tezor/client/create.html"
success_url = reverse_lazy("clients") success_url = reverse_lazy("clients")
success_message = _("The client has been created.") success_message = _("The client has been created.")
...@@ -51,7 +59,17 @@ class ClientEditView(PermissionRequiredMixin, AdvancedEditView): ...@@ -51,7 +59,17 @@ class ClientEditView(PermissionRequiredMixin, AdvancedEditView):
model = Client model = Client
form_class = EditClientForm form_class = EditClientForm
permission_required = "teor.edit_clients" permission_required = "tezor.edit_clients"
template_name = "teor/client/edit.html" template_name = "tezor/client/edit.html"
success_url = reverse_lazy("clients") success_url = reverse_lazy("clients")
success_message = _("The client has been saved.") 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