|
@@ -7,7 +7,7 @@ from django.contrib.contenttypes.models import ContentType
|
|
|
from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, ValidationError
|
|
from django.core.exceptions import FieldDoesNotExist, ObjectDoesNotExist, ValidationError
|
|
|
from django.db import transaction, IntegrityError
|
|
from django.db import transaction, IntegrityError
|
|
|
from django.db.models import ManyToManyField, ProtectedError
|
|
from django.db.models import ManyToManyField, ProtectedError
|
|
|
-from django.forms import Form, ModelMultipleChoiceField, MultipleHiddenInput, Textarea
|
|
|
|
|
|
|
+from django.forms import Form, ModelMultipleChoiceField, MultipleHiddenInput, Textarea, FileField, CharField
|
|
|
from django.http import HttpResponse
|
|
from django.http import HttpResponse
|
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
from django.shortcuts import get_object_or_404, redirect, render
|
|
|
from django.utils.html import escape
|
|
from django.utils.html import escape
|
|
@@ -665,7 +665,10 @@ class BulkImportView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
|
|
from_form=self.model_form,
|
|
from_form=self.model_form,
|
|
|
widget=Textarea(attrs=self.widget_attrs)
|
|
widget=Textarea(attrs=self.widget_attrs)
|
|
|
)
|
|
)
|
|
|
-
|
|
|
|
|
|
|
+ Upload_CSV = FileField(
|
|
|
|
|
+ required=False
|
|
|
|
|
+ )
|
|
|
|
|
+ # this is where the import form is created -- add csv upload here or create new form?
|
|
|
return ImportForm(*args, **kwargs)
|
|
return ImportForm(*args, **kwargs)
|
|
|
|
|
|
|
|
def _save_obj(self, obj_form, request):
|
|
def _save_obj(self, obj_form, request):
|
|
@@ -690,6 +693,7 @@ class BulkImportView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
|
|
logger = logging.getLogger('netbox.views.BulkImportView')
|
|
logger = logging.getLogger('netbox.views.BulkImportView')
|
|
|
new_objs = []
|
|
new_objs = []
|
|
|
form = self._import_form(request.POST)
|
|
form = self._import_form(request.POST)
|
|
|
|
|
+ # this is where the csv data is handled
|
|
|
|
|
|
|
|
if form.is_valid():
|
|
if form.is_valid():
|
|
|
logger.debug("Form validation was successful")
|
|
logger.debug("Form validation was successful")
|
|
@@ -697,6 +701,9 @@ class BulkImportView(GetReturnURLMixin, ObjectPermissionRequiredMixin, View):
|
|
|
try:
|
|
try:
|
|
|
# Iterate through CSV data and bind each row to a new model form instance.
|
|
# Iterate through CSV data and bind each row to a new model form instance.
|
|
|
with transaction.atomic():
|
|
with transaction.atomic():
|
|
|
|
|
+ # some prints trying to figure out how the form works
|
|
|
|
|
+ print(type(form["Upload_CSV"]))
|
|
|
|
|
+ print(form["Upload_CSV"].data)
|
|
|
headers, records = form.cleaned_data['csv']
|
|
headers, records = form.cleaned_data['csv']
|
|
|
for row, data in enumerate(records, start=1):
|
|
for row, data in enumerate(records, start=1):
|
|
|
obj_form = self.model_form(data, headers=headers)
|
|
obj_form = self.model_form(data, headers=headers)
|