1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Closes #181: Implemented support for bulk IP address creation

This commit is contained in:
Jeremy Stretch
2016-12-20 15:39:22 -05:00
parent f0d8e02d63
commit 9fd9719d0b
8 changed files with 106 additions and 8 deletions

View File

@@ -3,7 +3,7 @@ from django_tables2 import RequestConfig
from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
from django.core.exceptions import ImproperlyConfigured
from django.core.exceptions import ImproperlyConfigured, ValidationError
from django.core.urlresolvers import reverse
from django.db import transaction, IntegrityError
from django.db.models import ProtectedError
@@ -254,6 +254,57 @@ class ObjectDeleteView(View):
})
class BulkAddView(View):
form = None
model = None
template_name = None
redirect_url = None
def get(self, request):
form = self.form()
return render(request, self.template_name, {
'obj_type': self.model._meta.verbose_name,
'form': form,
'cancel_url': reverse(self.redirect_url),
})
def post(self, request):
form = self.form(request.POST)
if form.is_valid():
# The first field will be used as the pattern
pattern_field = form.fields.keys()[0]
pattern = form.cleaned_data[pattern_field]
# All other fields will be copied as object attributes
kwargs = {k: form.cleaned_data[k] for k in form.fields.keys()[1:]}
new_objs = []
try:
with transaction.atomic():
for value in pattern:
obj = self.model(**kwargs)
setattr(obj, pattern_field, value)
obj.full_clean()
obj.save()
new_objs.append(obj)
except ValidationError as e:
form.add_error(None, e)
if not form.errors:
messages.success(request, u"Added {} {}.".format(len(new_objs), self.model._meta.verbose_name_plural))
return redirect(self.redirect_url)
return render(request, self.template_name, {
'form': form,
'obj_type': self.model._meta.verbose_name,
'cancel_url': reverse(self.redirect_url),
})
class BulkImportView(View):
form = None
table = None