mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-23 17:08:41 -06:00
Fixes #1502: Fixed CSV export for clusters and virtual machines
This commit is contained in:
parent
e5e169f476
commit
9927ce14d3
@ -76,16 +76,17 @@ class ClusterCSVForm(forms.ModelForm):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Cluster
|
model = Cluster
|
||||||
fields = ['name', 'type', 'group']
|
fields = ['name', 'type', 'group', 'comments']
|
||||||
|
|
||||||
|
|
||||||
class ClusterBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
class ClusterBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
||||||
pk = forms.ModelMultipleChoiceField(queryset=Cluster.objects.all(), widget=forms.MultipleHiddenInput)
|
pk = forms.ModelMultipleChoiceField(queryset=Cluster.objects.all(), widget=forms.MultipleHiddenInput)
|
||||||
type = forms.ModelChoiceField(queryset=ClusterType.objects.all(), required=False)
|
type = forms.ModelChoiceField(queryset=ClusterType.objects.all(), required=False)
|
||||||
group = forms.ModelChoiceField(queryset=ClusterGroup.objects.all(), required=False)
|
group = forms.ModelChoiceField(queryset=ClusterGroup.objects.all(), required=False)
|
||||||
|
comments = CommentField(widget=SmallTextarea)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
nullable_fields = ['group']
|
nullable_fields = ['group', 'comments']
|
||||||
|
|
||||||
|
|
||||||
class ClusterFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
class ClusterFilterForm(BootstrapMixin, CustomFieldFilterForm):
|
||||||
@ -252,7 +253,7 @@ class VirtualMachineBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
|
|||||||
comments = CommentField(widget=SmallTextarea)
|
comments = CommentField(widget=SmallTextarea)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
nullable_fields = ['tenant', 'platform', 'vcpus', 'memory', 'disk']
|
nullable_fields = ['tenant', 'platform', 'vcpus', 'memory', 'disk', 'comments']
|
||||||
|
|
||||||
|
|
||||||
def vm_status_choices():
|
def vm_status_choices():
|
||||||
|
@ -7,6 +7,7 @@ from django.utils.encoding import python_2_unicode_compatible
|
|||||||
|
|
||||||
from extras.models import CustomFieldModel, CustomFieldValue
|
from extras.models import CustomFieldModel, CustomFieldValue
|
||||||
from utilities.models import CreatedUpdatedModel
|
from utilities.models import CreatedUpdatedModel
|
||||||
|
from utilities.utils import csv_format
|
||||||
from .constants import STATUS_ACTIVE, STATUS_CHOICES, VM_STATUS_CLASSES
|
from .constants import STATUS_ACTIVE, STATUS_CHOICES, VM_STATUS_CLASSES
|
||||||
|
|
||||||
|
|
||||||
@ -98,6 +99,10 @@ class Cluster(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
object_id_field='obj_id'
|
object_id_field='obj_id'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
csv_headers = [
|
||||||
|
'name', 'type', 'group', 'comments',
|
||||||
|
]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
|
|
||||||
@ -107,6 +112,14 @@ class Cluster(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:cluster', args=[self.pk])
|
return reverse('virtualization:cluster', args=[self.pk])
|
||||||
|
|
||||||
|
def to_csv(self):
|
||||||
|
return csv_format([
|
||||||
|
self.name,
|
||||||
|
self.type.name,
|
||||||
|
self.group.name if self.group else None,
|
||||||
|
self.comments,
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Virtual machines
|
# Virtual machines
|
||||||
@ -185,6 +198,10 @@ class VirtualMachine(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
object_id_field='obj_id'
|
object_id_field='obj_id'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
csv_headers = [
|
||||||
|
'name', 'status', 'cluster', 'tenant', 'platform', 'vcpus', 'memory', 'disk', 'comments',
|
||||||
|
]
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ['name']
|
ordering = ['name']
|
||||||
|
|
||||||
@ -194,5 +211,18 @@ class VirtualMachine(CreatedUpdatedModel, CustomFieldModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:virtualmachine', args=[self.pk])
|
return reverse('virtualization:virtualmachine', args=[self.pk])
|
||||||
|
|
||||||
|
def to_csv(self):
|
||||||
|
return csv_format([
|
||||||
|
self.name,
|
||||||
|
self.get_status_display(),
|
||||||
|
self.cluster.name,
|
||||||
|
self.tenant.name if self.tenant else None,
|
||||||
|
self.platform.name if self.platform else None,
|
||||||
|
self.vcpus,
|
||||||
|
self.memory,
|
||||||
|
self.disk,
|
||||||
|
self.comments,
|
||||||
|
])
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return VM_STATUS_CLASSES[self.status]
|
return VM_STATUS_CLASSES[self.status]
|
||||||
|
Loading…
Reference in New Issue
Block a user