Parcourir la source

Fixes #1919: Prevent exception when attempting to create a virtual machine without selecting devices

Jeremy Stretch il y a 7 ans
Parent
commit
1cc135f01f
1 fichiers modifiés avec 4 ajouts et 5 suppressions
  1. 4 5
      netbox/dcim/views.py

+ 4 - 5
netbox/dcim/views.py

@@ -7,7 +7,7 @@ from django.contrib.auth.mixins import PermissionRequiredMixin
 from django.core.paginator import EmptyPage, PageNotAnInteger
 from django.core.paginator import EmptyPage, PageNotAnInteger
 from django.db import transaction
 from django.db import transaction
 from django.db.models import Count, Q
 from django.db.models import Count, Q
-from django.forms import ModelChoiceField, ModelForm, modelformset_factory
+from django.forms import modelformset_factory
 from django.http import HttpResponseRedirect
 from django.http import HttpResponseRedirect
 from django.shortcuts import get_object_or_404, redirect, render
 from django.shortcuts import get_object_or_404, redirect, render
 from django.urls import reverse
 from django.urls import reverse
@@ -2082,14 +2082,13 @@ class VirtualChassisCreateView(PermissionRequiredMixin, View):
         # Get the list of devices being added to a VirtualChassis
         # Get the list of devices being added to a VirtualChassis
         pk_form = forms.DeviceSelectionForm(request.POST)
         pk_form = forms.DeviceSelectionForm(request.POST)
         pk_form.full_clean()
         pk_form.full_clean()
+        if not pk_form.cleaned_data.get('pk'):
+            messages.warning(request, "No devices were selected.")
+            return redirect('dcim:device_list')
         device_queryset = Device.objects.filter(
         device_queryset = Device.objects.filter(
             pk__in=pk_form.cleaned_data.get('pk')
             pk__in=pk_form.cleaned_data.get('pk')
         ).select_related('rack').order_by('vc_position')
         ).select_related('rack').order_by('vc_position')
 
 
-        if not device_queryset:
-            messages.warning(request, "No devices were selected.")
-            return redirect('dcim:device_list')
-
         VCMemberFormSet = modelformset_factory(
         VCMemberFormSet = modelformset_factory(
             model=Device,
             model=Device,
             formset=forms.BaseVCMemberFormSet,
             formset=forms.BaseVCMemberFormSet,