From 9927ce14d3a439eb5889ad45b5d1f4f0c5a082be Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Mon, 18 Sep 2017 13:12:58 -0400 Subject: [PATCH] Fixes #1502: Fixed CSV export for clusters and virtual machines --- netbox/virtualization/forms.py | 7 ++++--- netbox/virtualization/models.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/netbox/virtualization/forms.py b/netbox/virtualization/forms.py index 7fc033d4c..73d6e7445 100644 --- a/netbox/virtualization/forms.py +++ b/netbox/virtualization/forms.py @@ -76,16 +76,17 @@ class ClusterCSVForm(forms.ModelForm): class Meta: model = Cluster - fields = ['name', 'type', 'group'] + fields = ['name', 'type', 'group', 'comments'] class ClusterBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): pk = forms.ModelMultipleChoiceField(queryset=Cluster.objects.all(), widget=forms.MultipleHiddenInput) type = forms.ModelChoiceField(queryset=ClusterType.objects.all(), required=False) group = forms.ModelChoiceField(queryset=ClusterGroup.objects.all(), required=False) + comments = CommentField(widget=SmallTextarea) class Meta: - nullable_fields = ['group'] + nullable_fields = ['group', 'comments'] class ClusterFilterForm(BootstrapMixin, CustomFieldFilterForm): @@ -252,7 +253,7 @@ class VirtualMachineBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm): comments = CommentField(widget=SmallTextarea) class Meta: - nullable_fields = ['tenant', 'platform', 'vcpus', 'memory', 'disk'] + nullable_fields = ['tenant', 'platform', 'vcpus', 'memory', 'disk', 'comments'] def vm_status_choices(): diff --git a/netbox/virtualization/models.py b/netbox/virtualization/models.py index 1501dabad..8dc241335 100644 --- a/netbox/virtualization/models.py +++ b/netbox/virtualization/models.py @@ -7,6 +7,7 @@ from django.utils.encoding import python_2_unicode_compatible from extras.models import CustomFieldModel, CustomFieldValue from utilities.models import CreatedUpdatedModel +from utilities.utils import csv_format from .constants import STATUS_ACTIVE, STATUS_CHOICES, VM_STATUS_CLASSES @@ -98,6 +99,10 @@ class Cluster(CreatedUpdatedModel, CustomFieldModel): object_id_field='obj_id' ) + csv_headers = [ + 'name', 'type', 'group', 'comments', + ] + class Meta: ordering = ['name'] @@ -107,6 +112,14 @@ class Cluster(CreatedUpdatedModel, CustomFieldModel): def get_absolute_url(self): 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 @@ -185,6 +198,10 @@ class VirtualMachine(CreatedUpdatedModel, CustomFieldModel): object_id_field='obj_id' ) + csv_headers = [ + 'name', 'status', 'cluster', 'tenant', 'platform', 'vcpus', 'memory', 'disk', 'comments', + ] + class Meta: ordering = ['name'] @@ -194,5 +211,18 @@ class VirtualMachine(CreatedUpdatedModel, CustomFieldModel): def get_absolute_url(self): 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): return VM_STATUS_CLASSES[self.status]