Fixes #1502: Fixed CSV export for clusters and virtual machines

This commit is contained in:
Jeremy Stretch 2017-09-18 13:12:58 -04:00
parent e5e169f476
commit 9927ce14d3
2 changed files with 34 additions and 3 deletions

View File

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

View File

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