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,
|