ソースを参照

Merge pull request #19357 from netbox-community/17319-device-and-module-type-behind-tabs

Fixes #17319: Arrange device and module type fields behind tab in com…
bctiemann 9 ヶ月 前
コミット
fadc358329
2 ファイル変更55 行追加18 行削除
  1. 47 16
      netbox/dcim/forms/model_forms.py
  2. 8 2
      netbox/dcim/forms/object_create.py

+ 47 - 16
netbox/dcim/forms/model_forms.py

@@ -899,7 +899,7 @@ class ComponentTemplateForm(forms.ModelForm):
 class ModularComponentTemplateForm(ComponentTemplateForm):
     device_type = DynamicModelChoiceField(
         label=_('Device type'),
-        queryset=DeviceType.objects.all().all(),
+        queryset=DeviceType.objects.all(),
         required=False,
         context={
             'parent': 'manufacturer',
@@ -914,6 +914,16 @@ class ModularComponentTemplateForm(ComponentTemplateForm):
         }
     )
 
+    fieldsets = (
+        FieldSet(
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'description'
+        ),
+    )
+
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
 
@@ -930,10 +940,6 @@ class ModularComponentTemplateForm(ComponentTemplateForm):
 
 
 class ConsolePortTemplateForm(ModularComponentTemplateForm):
-    fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'type', 'description'),
-    )
-
     class Meta:
         model = ConsolePortTemplate
         fields = [
@@ -942,10 +948,6 @@ class ConsolePortTemplateForm(ModularComponentTemplateForm):
 
 
 class ConsoleServerPortTemplateForm(ModularComponentTemplateForm):
-    fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'type', 'description'),
-    )
-
     class Meta:
         model = ConsoleServerPortTemplate
         fields = [
@@ -956,7 +958,11 @@ class ConsoleServerPortTemplateForm(ModularComponentTemplateForm):
 class PowerPortTemplateForm(ModularComponentTemplateForm):
     fieldsets = (
         FieldSet(
-            'device_type', 'module_type', 'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description',
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'maximum_draw', 'allocated_draw', 'description',
         ),
     )
 
@@ -978,7 +984,13 @@ class PowerOutletTemplateForm(ModularComponentTemplateForm):
     )
 
     fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'type', 'power_port', 'feed_leg', 'description'),
+        FieldSet(
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'power_port', 'feed_leg', 'description',
+        ),
     )
 
     class Meta:
@@ -1001,7 +1013,11 @@ class InterfaceTemplateForm(ModularComponentTemplateForm):
 
     fieldsets = (
         FieldSet(
-            'device_type', 'module_type', 'name', 'label', 'type', 'enabled', 'mgmt_only', 'description', 'bridge',
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'enabled', 'mgmt_only', 'description', 'bridge',
         ),
         FieldSet('poe_mode', 'poe_type', name=_('PoE')),
         FieldSet('rf_role', name=_('Wireless')),
@@ -1028,8 +1044,11 @@ class FrontPortTemplateForm(ModularComponentTemplateForm):
 
     fieldsets = (
         FieldSet(
-            'device_type', 'module_type', 'name', 'label', 'type', 'color', 'rear_port', 'rear_port_position',
-            'description',
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'color', 'rear_port', 'rear_port_position', 'description',
         ),
     )
 
@@ -1043,7 +1062,13 @@ class FrontPortTemplateForm(ModularComponentTemplateForm):
 
 class RearPortTemplateForm(ModularComponentTemplateForm):
     fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'type', 'color', 'positions', 'description'),
+        FieldSet(
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'color', 'positions', 'description',
+        ),
     )
 
     class Meta:
@@ -1055,7 +1080,13 @@ class RearPortTemplateForm(ModularComponentTemplateForm):
 
 class ModuleBayTemplateForm(ModularComponentTemplateForm):
     fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'position', 'description'),
+        FieldSet(
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'position', 'description',
+        ),
     )
 
     class Meta:

+ 8 - 2
netbox/dcim/forms/object_create.py

@@ -4,7 +4,7 @@ from django.utils.translation import gettext_lazy as _
 from dcim.models import *
 from netbox.forms import NetBoxModelForm
 from utilities.forms.fields import DynamicModelChoiceField, DynamicModelMultipleChoiceField, ExpandableNameField
-from utilities.forms.rendering import FieldSet
+from utilities.forms.rendering import FieldSet, TabbedGroups
 from utilities.forms.widgets import APISelect
 from . import model_forms
 
@@ -118,7 +118,13 @@ class FrontPortTemplateCreateForm(ComponentCreateForm, model_forms.FrontPortTemp
 
     # Override fieldsets from FrontPortTemplateForm to omit rear_port_position
     fieldsets = (
-        FieldSet('device_type', 'module_type', 'name', 'label', 'type', 'color', 'rear_port', 'description'),
+        FieldSet(
+            TabbedGroups(
+                FieldSet('device_type', name=_('Device Type')),
+                FieldSet('module_type', name=_('Module Type')),
+            ),
+            'name', 'label', 'type', 'color', 'rear_port', 'description',
+        ),
     )
 
     class Meta(model_forms.FrontPortTemplateForm.Meta):