Browse Source

#6454 changes from PR review

Arthur 3 years ago
parent
commit
a972174706

+ 0 - 1
netbox/dcim/views.py

@@ -570,7 +570,6 @@ class RackRoleBulkDeleteView(generic.BulkDeleteView):
 #
 
 class RackListView(generic.ObjectListView):
-    required_prerequisites = [Site]
     queryset = Rack.objects.annotate(
         device_count=count_related(Device, 'rack')
     )

+ 8 - 12
netbox/netbox/models/__init__.py

@@ -28,6 +28,14 @@ class NetBoxFeatureSet(
     class Meta:
         abstract = True
 
+    @classmethod
+    def get_prerequisite_models(cls):
+        """
+        Return a list of model types that are required to create this model or empty list if none.  This is used for
+        showing prequisite warnings in the UI on the list and detail views.
+        """
+        return []
+
 
 #
 # Base model classes
@@ -53,10 +61,6 @@ class NetBoxModel(NetBoxFeatureSet, models.Model):
     class Meta:
         abstract = True
 
-    @classmethod
-    def get_prerequisite_models(cls):
-        return []
-
     def clone(self):
         """
         Return a dictionary of attributes suitable for creating a copy of the current instance. This is used for pre-
@@ -109,10 +113,6 @@ class NestedGroupModel(NetBoxFeatureSet, MPTTModel):
     def __str__(self):
         return self.name
 
-    @classmethod
-    def get_prerequisite_models(cls):
-        return []
-
     def clean(self):
         super().clean()
 
@@ -150,7 +150,3 @@ class OrganizationalModel(NetBoxFeatureSet, models.Model):
     class Meta:
         abstract = True
         ordering = ('name',)
-
-    @classmethod
-    def get_prerequisite_models(cls):
-        return []

+ 1 - 14
netbox/netbox/views/generic/bulk_views.py

@@ -172,12 +172,10 @@ class ObjectListView(BaseMultiObjectView, ActionsMixin, TableMixin):
             'table': table,
             'actions': actions,
             'filter_form': self.filterset_form(request.GET, label_suffix='') if self.filterset_form else None,
+            'prerequisite_model': requirement if requirement else None,
             **self.get_extra_context(request),
         }
 
-        if requirement:
-            context['required_model'] = requirement
-
         return render(request, self.template_name, context)
 
 
@@ -235,17 +233,6 @@ class BulkCreateView(GetReturnURLMixin, BaseMultiObjectView):
         form = self.form()
         model_form = self.model_form(initial=initial)
 
-        context = {
-            'obj_type': self.model_form._meta.model._meta.verbose_name,
-            'form': form,
-            'model_form': model_form,
-            'return_url': self.get_return_url(request),
-            **self.get_extra_context(request),
-        }
-
-        if requirement:
-            context['required_model'] = requirement
-
         return render(request, self.template_name, {
             'obj_type': self.model_form._meta.model._meta.verbose_name,
             'form': form,

+ 6 - 9
netbox/netbox/views/generic/object_views.py

@@ -341,24 +341,21 @@ class ObjectEditView(GetReturnURLMixin, BaseObjectView):
         """
         obj = self.get_object(**kwargs)
         obj = self.alter_object(obj, request, args, kwargs)
+        model = self.queryset.model
 
         initial_data = normalize_querydict(request.GET)
         form = self.form(instance=obj, initial=initial_data)
         restrict_form_fields(form, request.user)
 
-        context = {
+        requirement = get_prerequisite_model(self.queryset)
+        return render(request, self.template_name, {
+            'model': model,
             'object': obj,
             'form': form,
             'return_url': self.get_return_url(request, obj),
+            'prerequisite_model': requirement if requirement else None,
             **self.get_extra_context(request, obj),
-        }
-
-        requirement = get_prerequisite_model(self.queryset)
-        if requirement:
-            context['required_model'] = requirement
-            context['model'] = self.queryset.model
-
-        return render(request, self.template_name, context)
+        })
 
     def post(self, request, *args, **kwargs):
         """

+ 2 - 2
netbox/netbox/views/generic/utils.py

@@ -1,12 +1,12 @@
 def get_prerequisite_model(queryset):
     model = queryset.model
 
-    if not queryset.count():
+    if not queryset.exists():
         if hasattr(model, 'get_prerequisite_models'):
             prerequisites = model.get_prerequisite_models()
             if prerequisites:
                 for prereq in prerequisites:
-                    if not prereq.objects.count():
+                    if not prereq.objects.exists():
                         return prereq
 
     return None

+ 1 - 1
netbox/templates/generic/object_edit.html

@@ -40,7 +40,7 @@ Context:
         </div>
       {% endif %}
 
-      {% if required_model %}
+      {% if prerequisite_model %}
         {% include 'inc/missing_prerequisites.html' %}
       {% endif %}
 

+ 1 - 1
netbox/templates/generic/object_list.html

@@ -101,7 +101,7 @@ Context:
 
         {# Object table #}
 
-            {% if required_model %}
+            {% if prerequisite_model %}
               {% include 'inc/missing_prerequisites.html' %}
             {% endif %}
 

+ 2 - 2
netbox/templates/inc/missing_prerequisites.html

@@ -1,6 +1,6 @@
 {% load buttons %}
 
 <div class="alert alert-warning" role="alert">
-  <i class="mdi mdi-alert"></i> <strong>Note:</strong> Before you can add a {{ model|meta:"verbose_name" }} you must first create a
-    <strong>{{ required_model|meta:"verbose_name"|title }}</strong> which can be added here: {% add_button required_model %}
+  <i class="mdi mdi-alert"></i> Before you can add a {{ model|meta:"verbose_name" }} you must first create a
+    <strong>{{ prerequisite_model|meta:"verbose_name"|title }}</strong> which can be added here: {% add_button prerequisite_model %}
 </div>