diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index 846b24e..43c9023 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -578,7 +578,7 @@ class ServiceInstance(ServalaModelMixin, models.Model): } class urls(urlman.Urls): - base = "{self.organization.urls.instances}{self.name}-{self.pk}/" + base = "{self.organization.urls.instances}{self.name}/" update = "{base}update/" delete = "{base}delete/" diff --git a/src/servala/frontend/templates/frontend/organizations/dashboard.html b/src/servala/frontend/templates/frontend/organizations/dashboard.html index 167c806..b58b720 100644 --- a/src/servala/frontend/templates/frontend/organizations/dashboard.html +++ b/src/servala/frontend/templates/frontend/organizations/dashboard.html @@ -96,7 +96,7 @@ {% for instance in service_instances %} - {{ instance.name }} @@ -117,13 +117,13 @@
- {% if instance.has_change_permission %} - diff --git a/src/servala/frontend/views/service.py b/src/servala/frontend/views/service.py index a8f917c..6a58a0f 100644 --- a/src/servala/frontend/views/service.py +++ b/src/servala/frontend/views/service.py @@ -1,6 +1,6 @@ from django.contrib import messages from django.core.exceptions import ValidationError -from django.http import HttpResponse, Http404 +from django.http import HttpResponse from django.shortcuts import redirect from django.utils.functional import cached_property from django.utils.translation import gettext_lazy as _ @@ -178,7 +178,7 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView class ServiceInstanceMixin: model = ServiceInstance context_object_name = "instance" - pk_url_kwarg = "slug" + slug_field = "name" def dispatch(self, *args, **kwargs): self._has_warned = False @@ -195,25 +195,7 @@ class ServiceInstanceMixin: ) def get_object(self, **kwargs): - queryset = kwargs.get("queryset") or self.get_queryset() - - # Get the slug from URL (format: "my-instance-123") - slug = self.kwargs.get(self.pk_url_kwarg) - if slug is None: - raise Http404("No slug provided in URL") - - # Extract pk from the slug (everything after the last dash) - try: - pk_str = slug.rsplit("-", 1)[-1] - pk = int(pk_str) - except (ValueError, IndexError): - raise Http404(f"Invalid slug format: {slug}") - - try: - instance = queryset.get(pk=pk) - except ServiceInstance.DoesNotExist: - raise Http404("Service instance not found") - + instance = super().get_object(**kwargs) if not instance.kubernetes_object and not self._has_warned: messages.warning( self.request,