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

#6454 changes from PR review

This commit is contained in:
Arthur
2022-08-22 11:46:41 -07:00
parent c65a291698
commit a972174706
8 changed files with 21 additions and 42 deletions

View File

@ -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')
)

View File

@ -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 []

View File

@ -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,

View File

@ -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):
"""

View File

@ -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

View File

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

View File

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

View File

@ -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>