jeremystretch 3 лет назад
Родитель
Сommit
d9d25ff4e7

+ 27 - 0
netbox/dcim/forms/bulk_import.py

@@ -23,6 +23,7 @@ __all__ = (
     'DeviceBayCSVForm',
     'DeviceCSVForm',
     'DeviceRoleCSVForm',
+    'DeviceTypeImportForm',
     'FrontPortCSVForm',
     'InterfaceCSVForm',
     'InventoryItemCSVForm',
@@ -31,6 +32,7 @@ __all__ = (
     'ManufacturerCSVForm',
     'ModuleCSVForm',
     'ModuleBayCSVForm',
+    'ModuleTypeImportForm',
     'PlatformCSVForm',
     'PowerFeedCSVForm',
     'PowerOutletCSVForm',
@@ -269,6 +271,31 @@ class ManufacturerCSVForm(NetBoxModelCSVForm):
         fields = ('name', 'slug', 'description', 'tags')
 
 
+class DeviceTypeImportForm(NetBoxModelCSVForm):
+    manufacturer = forms.ModelChoiceField(
+        queryset=Manufacturer.objects.all(),
+        to_field_name='name'
+    )
+
+    class Meta:
+        model = DeviceType
+        fields = [
+            'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow',
+            'description', 'comments',
+        ]
+
+
+class ModuleTypeImportForm(NetBoxModelCSVForm):
+    manufacturer = forms.ModelChoiceField(
+        queryset=Manufacturer.objects.all(),
+        to_field_name='name'
+    )
+
+    class Meta:
+        model = ModuleType
+        fields = ['manufacturer', 'model', 'part_number', 'description', 'comments']
+
+
 class DeviceRoleCSVForm(NetBoxModelCSVForm):
     slug = SlugField()
 

+ 0 - 27
netbox/dcim/forms/object_import.py

@@ -9,43 +9,16 @@ __all__ = (
     'ConsolePortTemplateImportForm',
     'ConsoleServerPortTemplateImportForm',
     'DeviceBayTemplateImportForm',
-    'DeviceTypeImportForm',
     'FrontPortTemplateImportForm',
     'InterfaceTemplateImportForm',
     'InventoryItemTemplateImportForm',
     'ModuleBayTemplateImportForm',
-    'ModuleTypeImportForm',
     'PowerOutletTemplateImportForm',
     'PowerPortTemplateImportForm',
     'RearPortTemplateImportForm',
 )
 
 
-class DeviceTypeImportForm(BootstrapMixin, forms.ModelForm):
-    manufacturer = forms.ModelChoiceField(
-        queryset=Manufacturer.objects.all(),
-        to_field_name='name'
-    )
-
-    class Meta:
-        model = DeviceType
-        fields = [
-            'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'subdevice_role', 'airflow',
-            'description', 'comments',
-        ]
-
-
-class ModuleTypeImportForm(BootstrapMixin, forms.ModelForm):
-    manufacturer = forms.ModelChoiceField(
-        queryset=Manufacturer.objects.all(),
-        to_field_name='name'
-    )
-
-    class Meta:
-        model = ModuleType
-        fields = ['manufacturer', 'model', 'part_number', 'description', 'comments']
-
-
 #
 # Component template import forms
 #

+ 4 - 0
netbox/netbox/forms/base.py

@@ -63,6 +63,10 @@ class NetBoxModelCSVForm(CSVModelForm, NetBoxModelForm):
     """
     Base form for creating a NetBox objects from CSV data. Used for bulk importing.
     """
+    id = forms.IntegerField(
+        required=False,
+        help_text='Numeric ID of an existing object to update (if not creating a new object)'
+    )
     tags = CSVModelMultipleChoiceField(
         queryset=Tag.objects.all(),
         required=False,

+ 0 - 23
netbox/templates/generic/object_import.html

@@ -1,23 +0,0 @@
-{% extends 'base/layout.html' %}
-{% load helpers %}
-{% load form_helpers %}
-
-{% block title %}{{ obj_type|bettertitle }} Import{% endblock %}
-
-{% block content %}
-  <div class="row mb-3">
-    <div class="col col-md-12 col-xl-8 offset-xl-2">
-      <form action="" method="post" class="form form-horizontal">
-        {% csrf_token %}
-        {% render_form form %}
-        <div class="col col-md-12 text-end">
-          <button type="submit" name="_create" class="btn btn-primary">Submit</button>
-          <button type="submit" name="_addanother" class="btn btn-outline-primary">Submit & Import Another</button>
-          {% if return_url %}
-            <a href="{{ return_url }}" class="btn btn-outline-danger">Cancel</a>
-          {% endif %}
-        </div>
-      </form>
-    </div>
-  </div>
-{% endblock content %}