From bef41ac4f013575a4d1d0f4901cf86184e8afbf4 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Fri, 4 Apr 2025 13:56:26 +0200 Subject: [PATCH] Add very bare service instance list --- .../organizations/service_instances.html | 13 +++++++++++++ src/servala/frontend/urls.py | 5 +++++ src/servala/frontend/views/__init__.py | 8 +++++++- src/servala/frontend/views/service.py | 16 ++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src/servala/frontend/templates/frontend/organizations/service_instances.html diff --git a/src/servala/frontend/templates/frontend/organizations/service_instances.html b/src/servala/frontend/templates/frontend/organizations/service_instances.html new file mode 100644 index 0000000..b09b579 --- /dev/null +++ b/src/servala/frontend/templates/frontend/organizations/service_instances.html @@ -0,0 +1,13 @@ +{% extends "frontend/base.html" %} +{% block content %} +

Service Instances for {{ organization.name }}

+ +{% endblock %} diff --git a/src/servala/frontend/urls.py b/src/servala/frontend/urls.py index d6c7c3a..f02fd1c 100644 --- a/src/servala/frontend/urls.py +++ b/src/servala/frontend/urls.py @@ -40,6 +40,11 @@ urlpatterns = [ views.OrganizationDashboardView.as_view(), name="organization.dashboard", ), + path( + "instances/", + views.ServiceInstanceListView.as_view(), + name="organization.instances", + ), ] ), ), diff --git a/src/servala/frontend/views/__init__.py b/src/servala/frontend/views/__init__.py index 1a180a1..f7d9daa 100644 --- a/src/servala/frontend/views/__init__.py +++ b/src/servala/frontend/views/__init__.py @@ -5,7 +5,12 @@ from .organization import ( OrganizationDashboardView, OrganizationUpdateView, ) -from .service import ServiceDetailView, ServiceListView, ServiceOfferingDetailView +from .service import ( + ServiceDetailView, + ServiceInstanceListView, + ServiceListView, + ServiceOfferingDetailView, +) __all__ = [ "IndexView", @@ -14,6 +19,7 @@ __all__ = [ "OrganizationDashboardView", "OrganizationUpdateView", "ServiceDetailView", + "ServiceInstanceListView", "ServiceListView", "ServiceOfferingDetailView", "ProfileView", diff --git a/src/servala/frontend/views/service.py b/src/servala/frontend/views/service.py index edf889a..c955cde 100644 --- a/src/servala/frontend/views/service.py +++ b/src/servala/frontend/views/service.py @@ -143,3 +143,19 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView # If the form is not valid or if the service creation failed, we render it again context["service_form"] = form return self.render_to_response(context) + + +class ServiceInstanceListView(OrganizationViewMixin, ListView): + template_name = "frontend/organizations/service_instances.html" + context_object_name = "instances" + model = ServiceInstance + permission_type = "view" + + def get_queryset(self): + """Return all service instances for the current organization.""" + return ServiceInstance.objects.filter(organization=self.request.organization) + + def get_context_data(self, **kwargs): + context = super().get_context_data(**kwargs) + context["organization"] = self.request.organization + return context