From f5105c624e4632a399f431d84181cb64e859b0e2 Mon Sep 17 00:00:00 2001
From: Frederico Sequeira <frederico.sequeira@ext.ec.europa.eu>
Date: Tue, 31 Dec 2024 16:39:38 +0000
Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Fix=20issue=20with=20domain=20na?=
 =?UTF-8?q?me=20format?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 netbox_sys_plugin/forms/createvm.py | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/netbox_sys_plugin/forms/createvm.py b/netbox_sys_plugin/forms/createvm.py
index 8b78975..bcd51f9 100644
--- a/netbox_sys_plugin/forms/createvm.py
+++ b/netbox_sys_plugin/forms/createvm.py
@@ -284,6 +284,19 @@ class CreateVmForm(NetBoxModelForm):
                 object_id=obj.pk
             )
 
+    @staticmethod
+    def clean_json(json_data):
+        """Clean JSON field"""
+        try:
+            import json
+            data = json.loads(json_data)
+        except (TypeError,ValueError) as e:
+            raise ValueError("Invalid JSON format: Please provide a valid JSON object")
+        
+        cleaned_data = {k.strip(): v.strip() for k, v in data.items() if isinstance(v,str)}
+        return cleaned_data
+
+
     @staticmethod
     def create_virtual_machine(data, cluster):
         """Create and save a VirtualMachine object."""
@@ -402,12 +415,14 @@ class CreateVmForm(NetBoxModelForm):
     def create_domain_names(data, vm):
         """Create and save DomainNames objects for the virtual machine."""
         domain_names_data = data.get('domainnames_new-domain_names', None)
-    
-        if not domain_names_data:
+
+        cleaned_domain_names_data = CreateVmForm.clean_json(domain_names_data)
+        
+        if not cleaned_domain_names_data:
             return None
     
         domain_names_object = DomainNames(
-            domain_names=domain_names_data,
+            domain_names=cleaned_domain_names_data,
             assigned_object_type=ContentType.objects.get_for_model(vm),
             assigned_object_id=vm.id,
         )
-- 
GitLab