From a972174706c2b4e857ca7019b4524c7216520fac Mon Sep 17 00:00:00 2001 From: Arthur Date: Mon, 22 Aug 2022 11:46:41 -0700 Subject: [PATCH] #6454 changes from PR review --- netbox/dcim/views.py | 1 - netbox/netbox/models/__init__.py | 20 ++++++++----------- netbox/netbox/views/generic/bulk_views.py | 15 +------------- netbox/netbox/views/generic/object_views.py | 15 ++++++-------- netbox/netbox/views/generic/utils.py | 4 ++-- netbox/templates/generic/object_edit.html | 2 +- netbox/templates/generic/object_list.html | 2 +- .../templates/inc/missing_prerequisites.html | 4 ++-- 8 files changed, 21 insertions(+), 42 deletions(-) diff --git a/netbox/dcim/views.py b/netbox/dcim/views.py index c807176d4..a31eabc5e 100644 --- a/netbox/dcim/views.py +++ b/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') ) diff --git a/netbox/netbox/models/__init__.py b/netbox/netbox/models/__init__.py index c36d36f46..4c65094ca 100644 --- a/netbox/netbox/models/__init__.py +++ b/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 [] diff --git a/netbox/netbox/views/generic/bulk_views.py b/netbox/netbox/views/generic/bulk_views.py index d30d67468..8fe0ad518 100644 --- a/netbox/netbox/views/generic/bulk_views.py +++ b/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, diff --git a/netbox/netbox/views/generic/object_views.py b/netbox/netbox/views/generic/object_views.py index 7c63b2ec6..c9ff738d7 100644 --- a/netbox/netbox/views/generic/object_views.py +++ b/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): """ diff --git a/netbox/netbox/views/generic/utils.py b/netbox/netbox/views/generic/utils.py index c682181a1..61c6dc242 100644 --- a/netbox/netbox/views/generic/utils.py +++ b/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 diff --git a/netbox/templates/generic/object_edit.html b/netbox/templates/generic/object_edit.html index 73e9727bb..8047dc59d 100644 --- a/netbox/templates/generic/object_edit.html +++ b/netbox/templates/generic/object_edit.html @@ -40,7 +40,7 @@ Context: {% endif %} - {% if required_model %} + {% if prerequisite_model %} {% include 'inc/missing_prerequisites.html' %} {% endif %} diff --git a/netbox/templates/generic/object_list.html b/netbox/templates/generic/object_list.html index 6910aa116..9d3952a28 100644 --- a/netbox/templates/generic/object_list.html +++ b/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 %} diff --git a/netbox/templates/inc/missing_prerequisites.html b/netbox/templates/inc/missing_prerequisites.html index 04043fc9c..5814b72eb 100644 --- a/netbox/templates/inc/missing_prerequisites.html +++ b/netbox/templates/inc/missing_prerequisites.html @@ -1,6 +1,6 @@ {% load buttons %}