This commit is contained in:
parent
4e44b283b1
commit
6e644dfe44
2 changed files with 42 additions and 1 deletions
|
@ -457,3 +457,12 @@ class ServiceInstance(ServalaModelMixin, models.Model):
|
|||
class urls(urlman.Urls):
|
||||
base = "{self.organization.urls.instances}{self.name}/"
|
||||
|
||||
@classmethod
|
||||
def create_instance(cls, organization, context, created_by, spec_data):
|
||||
name = spec_data.get("spec.name")
|
||||
return cls.objects.create(
|
||||
name=name,
|
||||
organization=organization,
|
||||
created_by=created_by,
|
||||
context=context,
|
||||
)
|
||||
|
|
|
@ -1,7 +1,14 @@
|
|||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from django.utils.functional import cached_property
|
||||
from django.views.generic import DetailView, ListView
|
||||
|
||||
from servala.core.models import Service, ServiceOffering, ServiceOfferingControlPlane
|
||||
from servala.core.models import (
|
||||
Service,
|
||||
ServiceInstance,
|
||||
ServiceOffering,
|
||||
ServiceOfferingControlPlane,
|
||||
)
|
||||
from servala.frontend.forms.service import ControlPlaneSelectForm, ServiceFilterForm
|
||||
from servala.frontend.views.mixins import HtmxViewMixin, OrganizationViewMixin
|
||||
|
||||
|
@ -107,3 +114,28 @@ class ServiceOfferingDetailView(OrganizationViewMixin, HtmxViewMixin, DetailView
|
|||
context["selected_plane"] = self.selected_plane
|
||||
context["service_form"] = self.get_instance_form()
|
||||
return context
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
self.object = self.get_object()
|
||||
context = self.get_context_data(object=self.object)
|
||||
|
||||
if not self.context_object:
|
||||
context["form_error"] = True
|
||||
return self.render_to_response(context)
|
||||
|
||||
form = self.get_instance_form()
|
||||
if form.is_valid():
|
||||
try:
|
||||
service_instance = ServiceInstance.create_instance(
|
||||
organization=self.organization,
|
||||
context=self.context_object,
|
||||
created_by=request.user,
|
||||
spec_data=form.get_nested_data(),
|
||||
)
|
||||
return redirect(service_instance.urls.base)
|
||||
except Exception as e:
|
||||
messages.error(self.request, str(e))
|
||||
|
||||
# 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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue