mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Remove obsolete to_csv() methods
This commit is contained in:
@ -34,7 +34,7 @@ class Foo(models.Model):
|
|||||||
|
|
||||||
## 3. Add CSV helpers
|
## 3. Add CSV helpers
|
||||||
|
|
||||||
Add the name of the new field to `csv_headers` and included a CSV-friendly representation of its data in the model's `to_csv()` method. These will be used when exporting objects in CSV format.
|
Add the name of the new field to `csv_headers`. This will be used when exporting objects in CSV format.
|
||||||
|
|
||||||
## 4. Update relevant querysets
|
## 4. Update relevant querysets
|
||||||
|
|
||||||
|
@ -79,18 +79,6 @@ class Provider(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('circuits:provider', args=[self.pk])
|
return reverse('circuits:provider', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.asn,
|
|
||||||
self.account,
|
|
||||||
self.portal_url,
|
|
||||||
self.noc_contact,
|
|
||||||
self.admin_contact,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Provider networks
|
# Provider networks
|
||||||
@ -140,14 +128,6 @@ class ProviderNetwork(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('circuits:providernetwork', args=[self.pk])
|
return reverse('circuits:providernetwork', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.provider.name,
|
|
||||||
self.name,
|
|
||||||
self.description,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks')
|
||||||
class CircuitType(OrganizationalModel):
|
class CircuitType(OrganizationalModel):
|
||||||
@ -181,13 +161,6 @@ class CircuitType(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('circuits:circuittype', args=[self.pk])
|
return reverse('circuits:circuittype', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Circuit(PrimaryModel):
|
class Circuit(PrimaryModel):
|
||||||
@ -276,19 +249,6 @@ class Circuit(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('circuits:circuit', args=[self.pk])
|
return reverse('circuits:circuit', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.cid,
|
|
||||||
self.provider.name,
|
|
||||||
self.type.name,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.install_date,
|
|
||||||
self.commit_rate,
|
|
||||||
self.description,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return CircuitStatusChoices.CSS_CLASSES.get(self.status)
|
return CircuitStatusChoices.CSS_CLASSES.get(self.status)
|
||||||
|
|
||||||
|
@ -289,20 +289,6 @@ class Cable(PrimaryModel):
|
|||||||
# Update the private pk used in __str__ in case this is a new object (i.e. just got its pk)
|
# Update the private pk used in __str__ in case this is a new object (i.e. just got its pk)
|
||||||
self._pk = self.pk
|
self._pk = self.pk
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
'{}.{}'.format(self.termination_a_type.app_label, self.termination_a_type.model),
|
|
||||||
self.termination_a_id,
|
|
||||||
'{}.{}'.format(self.termination_b_type.app_label, self.termination_b_type.model),
|
|
||||||
self.termination_b_id,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.get_status_display(),
|
|
||||||
self.label,
|
|
||||||
self.color,
|
|
||||||
self.length,
|
|
||||||
self.length_unit,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return CableStatusChoices.CSS_CLASSES.get(self.status)
|
return CableStatusChoices.CSS_CLASSES.get(self.status)
|
||||||
|
|
||||||
|
@ -238,17 +238,6 @@ class ConsolePort(ComponentModel, CableTermination, PathEndpoint):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:consoleport', kwargs={'pk': self.pk})
|
return reverse('dcim:consoleport', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.type,
|
|
||||||
self.speed,
|
|
||||||
self.mark_connected,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Console server ports
|
# Console server ports
|
||||||
@ -281,17 +270,6 @@ class ConsoleServerPort(ComponentModel, CableTermination, PathEndpoint):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:consoleserverport', kwargs={'pk': self.pk})
|
return reverse('dcim:consoleserverport', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.type,
|
|
||||||
self.speed,
|
|
||||||
self.mark_connected,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Power ports
|
# Power ports
|
||||||
@ -332,18 +310,6 @@ class PowerPort(ComponentModel, CableTermination, PathEndpoint):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:powerport', kwargs={'pk': self.pk})
|
return reverse('dcim:powerport', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.mark_connected,
|
|
||||||
self.maximum_draw,
|
|
||||||
self.allocated_draw,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -442,18 +408,6 @@ class PowerOutlet(ComponentModel, CableTermination, PathEndpoint):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:poweroutlet', kwargs={'pk': self.pk})
|
return reverse('dcim:poweroutlet', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.mark_connected,
|
|
||||||
self.power_port.name if self.power_port else None,
|
|
||||||
self.get_feed_leg_display(),
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -582,23 +536,6 @@ class Interface(ComponentModel, BaseInterface, CableTermination, PathEndpoint):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:interface', kwargs={'pk': self.pk})
|
return reverse('dcim:interface', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier if self.device else None,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.parent.name if self.parent else None,
|
|
||||||
self.lag.name if self.lag else None,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.enabled,
|
|
||||||
self.mark_connected,
|
|
||||||
self.mac_address,
|
|
||||||
self.mtu,
|
|
||||||
self.mgmt_only,
|
|
||||||
self.description,
|
|
||||||
self.get_mode_display(),
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -719,18 +656,6 @@ class FrontPort(ComponentModel, CableTermination):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:frontport', kwargs={'pk': self.pk})
|
return reverse('dcim:frontport', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.mark_connected,
|
|
||||||
self.rear_port.name,
|
|
||||||
self.rear_port_position,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -785,17 +710,6 @@ class RearPort(ComponentModel, CableTermination):
|
|||||||
f"({frontport_count})"
|
f"({frontport_count})"
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.get_type_display(),
|
|
||||||
self.mark_connected,
|
|
||||||
self.positions,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Device bays
|
# Device bays
|
||||||
@ -823,15 +737,6 @@ class DeviceBay(ComponentModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:devicebay', kwargs={'pk': self.pk})
|
return reverse('dcim:devicebay', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.identifier,
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.installed_device.identifier if self.installed_device else None,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -917,16 +822,3 @@ class InventoryItem(MPTTModel, ComponentModel):
|
|||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:inventoryitem', kwargs={'pk': self.pk})
|
return reverse('dcim:inventoryitem', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.name or '{{{}}}'.format(self.device.pk),
|
|
||||||
self.name,
|
|
||||||
self.label,
|
|
||||||
self.manufacturer.name if self.manufacturer else None,
|
|
||||||
self.part_id,
|
|
||||||
self.serial,
|
|
||||||
self.asset_tag,
|
|
||||||
self.discovered,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
@ -67,13 +67,6 @@ class Manufacturer(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:manufacturer', args=[self.pk])
|
return reverse('dcim:manufacturer', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.description
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class DeviceType(PrimaryModel):
|
class DeviceType(PrimaryModel):
|
||||||
@ -390,15 +383,6 @@ class DeviceRole(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:devicerole', args=[self.pk])
|
return reverse('dcim:devicerole', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.color,
|
|
||||||
self.vm_role,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'webhooks')
|
||||||
class Platform(OrganizationalModel):
|
class Platform(OrganizationalModel):
|
||||||
@ -453,16 +437,6 @@ class Platform(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:platform', args=[self.pk])
|
return reverse('dcim:platform', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.manufacturer.name if self.manufacturer else None,
|
|
||||||
self.napalm_driver,
|
|
||||||
self.napalm_args,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Device(PrimaryModel, ConfigContextModel):
|
class Device(PrimaryModel, ConfigContextModel):
|
||||||
@ -816,25 +790,6 @@ class Device(PrimaryModel, ConfigContextModel):
|
|||||||
device.rack = self.rack
|
device.rack = self.rack
|
||||||
device.save()
|
device.save()
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name or '',
|
|
||||||
self.device_role.name,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.device_type.manufacturer.name,
|
|
||||||
self.device_type.model,
|
|
||||||
self.platform.name if self.platform else None,
|
|
||||||
self.serial,
|
|
||||||
self.asset_tag,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.site.name,
|
|
||||||
self.rack.location.name if self.rack and self.rack.location else None,
|
|
||||||
self.rack.name if self.rack else None,
|
|
||||||
self.position,
|
|
||||||
self.get_face_display(),
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def identifier(self):
|
def identifier(self):
|
||||||
"""
|
"""
|
||||||
@ -967,10 +922,3 @@ class VirtualChassis(PrimaryModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return super().delete(*args, **kwargs)
|
return super().delete(*args, **kwargs)
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.domain,
|
|
||||||
self.master.name if self.master else None,
|
|
||||||
)
|
|
||||||
|
@ -54,13 +54,6 @@ class PowerPanel(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:powerpanel', args=[self.pk])
|
return reverse('dcim:powerpanel', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.site.name,
|
|
||||||
self.location.name if self.location else None,
|
|
||||||
self.name,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
@ -152,24 +145,6 @@ class PowerFeed(PrimaryModel, PathEndpoint, CableTermination):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:powerfeed', args=[self.pk])
|
return reverse('dcim:powerfeed', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.power_panel.site.name,
|
|
||||||
self.power_panel.name,
|
|
||||||
self.rack.location.name if self.rack and self.rack.location else None,
|
|
||||||
self.rack.name if self.rack else None,
|
|
||||||
self.name,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.get_type_display(),
|
|
||||||
self.mark_connected,
|
|
||||||
self.get_supply_display(),
|
|
||||||
self.get_phase_display(),
|
|
||||||
self.voltage,
|
|
||||||
self.amperage,
|
|
||||||
self.max_utilization,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
|
@ -69,14 +69,6 @@ class RackRole(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:rackrole', args=[self.pk])
|
return reverse('dcim:rackrole', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.color,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Rack(PrimaryModel):
|
class Rack(PrimaryModel):
|
||||||
@ -251,27 +243,6 @@ class Rack(PrimaryModel):
|
|||||||
'location': f"Location must be from the same site, {self.site}."
|
'location': f"Location must be from the same site, {self.site}."
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.site.name,
|
|
||||||
self.location.name if self.location else None,
|
|
||||||
self.name,
|
|
||||||
self.facility_id,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.role.name if self.role else None,
|
|
||||||
self.get_type_display() if self.type else None,
|
|
||||||
self.serial,
|
|
||||||
self.asset_tag,
|
|
||||||
self.width,
|
|
||||||
self.u_height,
|
|
||||||
self.desc_units,
|
|
||||||
self.outer_width,
|
|
||||||
self.outer_depth,
|
|
||||||
self.outer_unit,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def units(self):
|
def units(self):
|
||||||
if self.desc_units:
|
if self.desc_units:
|
||||||
@ -531,17 +502,6 @@ class RackReservation(PrimaryModel):
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.rack.site.name,
|
|
||||||
self.rack.location if self.rack.location else None,
|
|
||||||
self.rack.name,
|
|
||||||
','.join([str(u) for u in self.units]),
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.user.username,
|
|
||||||
self.description
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def unit_list(self):
|
def unit_list(self):
|
||||||
return array_to_string(self.units)
|
return array_to_string(self.units)
|
||||||
|
@ -59,14 +59,6 @@ class Region(NestedGroupModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:region', args=[self.pk])
|
return reverse('dcim:region', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.parent.name if self.parent else None,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_site_count(self):
|
def get_site_count(self):
|
||||||
return Site.objects.filter(
|
return Site.objects.filter(
|
||||||
Q(region=self) |
|
Q(region=self) |
|
||||||
@ -111,14 +103,6 @@ class SiteGroup(NestedGroupModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:sitegroup', args=[self.pk])
|
return reverse('dcim:sitegroup', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.parent.name if self.parent else None,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_site_count(self):
|
def get_site_count(self):
|
||||||
return Site.objects.filter(
|
return Site.objects.filter(
|
||||||
Q(group=self) |
|
Q(group=self) |
|
||||||
@ -255,28 +239,6 @@ class Site(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:site', args=[self.pk])
|
return reverse('dcim:site', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.region.name if self.region else None,
|
|
||||||
self.group.name if self.group else None,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.facility,
|
|
||||||
self.asn,
|
|
||||||
self.time_zone,
|
|
||||||
self.description,
|
|
||||||
self.physical_address,
|
|
||||||
self.shipping_address,
|
|
||||||
self.latitude,
|
|
||||||
self.longitude,
|
|
||||||
self.contact_name,
|
|
||||||
self.contact_phone,
|
|
||||||
self.contact_email,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return SiteStatusChoices.CSS_CLASSES.get(self.status)
|
return SiteStatusChoices.CSS_CLASSES.get(self.status)
|
||||||
|
|
||||||
@ -331,15 +293,6 @@ class Location(NestedGroupModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('dcim:location', args=[self.pk])
|
return reverse('dcim:location', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.site,
|
|
||||||
self.parent.name if self.parent else '',
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
|
@ -109,21 +109,5 @@ class ObjectChange(BigIDModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('extras:objectchange', args=[self.pk])
|
return reverse('extras:objectchange', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.time,
|
|
||||||
self.user,
|
|
||||||
self.user_name,
|
|
||||||
self.request_id,
|
|
||||||
self.get_action_display(),
|
|
||||||
self.changed_object_type,
|
|
||||||
self.changed_object_id,
|
|
||||||
self.related_object_type,
|
|
||||||
self.related_object_id,
|
|
||||||
self.object_repr,
|
|
||||||
self.prechange_data,
|
|
||||||
self.postchange_data,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_action_class(self):
|
def get_action_class(self):
|
||||||
return ObjectChangeActionChoices.CSS_CLASSES.get(self.action)
|
return ObjectChangeActionChoices.CSS_CLASSES.get(self.action)
|
||||||
|
@ -41,14 +41,6 @@ class Tag(ChangeLoggedModel, TagBase):
|
|||||||
slug += "_%d" % i
|
slug += "_%d" % i
|
||||||
return slug
|
return slug
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.color,
|
|
||||||
self.description
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class TaggedItem(BigIDModel, GenericTaggedItemBase):
|
class TaggedItem(BigIDModel, GenericTaggedItemBase):
|
||||||
tag = models.ForeignKey(
|
tag = models.ForeignKey(
|
||||||
|
@ -68,14 +68,6 @@ class RIR(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('ipam:rir', args=[self.pk])
|
return reverse('ipam:rir', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.is_private,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Aggregate(PrimaryModel):
|
class Aggregate(PrimaryModel):
|
||||||
@ -160,15 +152,6 @@ class Aggregate(PrimaryModel):
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.prefix,
|
|
||||||
self.rir.name,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.date_added,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def family(self):
|
def family(self):
|
||||||
if self.prefix:
|
if self.prefix:
|
||||||
@ -219,14 +202,6 @@ class Role(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('ipam:role', args=[self.pk])
|
return reverse('ipam:role', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.weight,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Prefix(PrimaryModel):
|
class Prefix(PrimaryModel):
|
||||||
@ -375,21 +350,6 @@ class Prefix(PrimaryModel):
|
|||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.prefix,
|
|
||||||
self.vrf.name if self.vrf else None,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.site.name if self.site else None,
|
|
||||||
self.vlan.group.name if self.vlan and self.vlan.group else None,
|
|
||||||
self.vlan.vid if self.vlan else None,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.role.name if self.role else None,
|
|
||||||
self.is_pool,
|
|
||||||
self.mark_utilized,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def family(self):
|
def family(self):
|
||||||
if self.prefix:
|
if self.prefix:
|
||||||
@ -697,32 +657,6 @@ class IPAddress(PrimaryModel):
|
|||||||
# Annotate the assigned object, if any
|
# Annotate the assigned object, if any
|
||||||
return super().to_objectchange(action, related_object=self.assigned_object)
|
return super().to_objectchange(action, related_object=self.assigned_object)
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
|
|
||||||
# Determine if this IP is primary for a Device
|
|
||||||
is_primary = False
|
|
||||||
if self.address.version == 4 and getattr(self, 'primary_ip4_for', False):
|
|
||||||
is_primary = True
|
|
||||||
elif self.address.version == 6 and getattr(self, 'primary_ip6_for', False):
|
|
||||||
is_primary = True
|
|
||||||
|
|
||||||
obj_type = None
|
|
||||||
if self.assigned_object_type:
|
|
||||||
obj_type = f'{self.assigned_object_type.app_label}.{self.assigned_object_type.model}'
|
|
||||||
|
|
||||||
return (
|
|
||||||
self.address,
|
|
||||||
self.vrf.name if self.vrf else None,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.get_role_display(),
|
|
||||||
obj_type,
|
|
||||||
self.assigned_object_id,
|
|
||||||
is_primary,
|
|
||||||
self.dns_name,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def family(self):
|
def family(self):
|
||||||
if self.address:
|
if self.address:
|
||||||
|
@ -91,16 +91,6 @@ class Service(PrimaryModel):
|
|||||||
if not self.device and not self.virtual_machine:
|
if not self.device and not self.virtual_machine:
|
||||||
raise ValidationError("A service must be associated with either a device or a virtual machine.")
|
raise ValidationError("A service must be associated with either a device or a virtual machine.")
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.device.name if self.device else None,
|
|
||||||
self.virtual_machine.name if self.virtual_machine else None,
|
|
||||||
self.name,
|
|
||||||
self.get_protocol_display(),
|
|
||||||
self.ports,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def port_list(self):
|
def port_list(self):
|
||||||
return array_to_string(self.ports)
|
return array_to_string(self.ports)
|
||||||
|
@ -80,15 +80,6 @@ class VLANGroup(OrganizationalModel):
|
|||||||
if self.scope_id and not self.scope_type:
|
if self.scope_id and not self.scope_type:
|
||||||
raise ValidationError("Cannot set scope_id without scope_type.")
|
raise ValidationError("Cannot set scope_id without scope_type.")
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
f'{self.scope_type.app_label}.{self.scope_type.model}',
|
|
||||||
self.scope_id,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_next_available_vid(self):
|
def get_next_available_vid(self):
|
||||||
"""
|
"""
|
||||||
Return the first available VLAN ID (1-4094) in the group.
|
Return the first available VLAN ID (1-4094) in the group.
|
||||||
@ -187,18 +178,6 @@ class VLAN(PrimaryModel):
|
|||||||
f"site {self.site}."
|
f"site {self.site}."
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.site.name if self.site else None,
|
|
||||||
self.group.name if self.group else None,
|
|
||||||
self.vid,
|
|
||||||
self.name,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.role.name if self.role else None,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_status_class(self):
|
def get_status_class(self):
|
||||||
return VLANStatusChoices.CSS_CLASSES.get(self.status)
|
return VLANStatusChoices.CSS_CLASSES.get(self.status)
|
||||||
|
|
||||||
|
@ -78,15 +78,6 @@ class VRF(PrimaryModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('ipam:vrf', args=[self.pk])
|
return reverse('ipam:vrf', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.rd,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.enforce_unique,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class RouteTarget(PrimaryModel):
|
class RouteTarget(PrimaryModel):
|
||||||
@ -122,10 +113,3 @@ class RouteTarget(PrimaryModel):
|
|||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('ipam:routetarget', args=[self.pk])
|
return reverse('ipam:routetarget', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.description,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
)
|
|
||||||
|
@ -48,14 +48,6 @@ class TenantGroup(NestedGroupModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('tenancy:tenantgroup', args=[self.pk])
|
return reverse('tenancy:tenantgroup', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.parent.name if self.parent else '',
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
@extras_features('custom_fields', 'custom_links', 'export_templates', 'tags', 'webhooks')
|
||||||
class Tenant(PrimaryModel):
|
class Tenant(PrimaryModel):
|
||||||
@ -101,12 +93,3 @@ class Tenant(PrimaryModel):
|
|||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('tenancy:tenant', args=[self.pk])
|
return reverse('tenancy:tenant', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.group.name if self.group else None,
|
|
||||||
self.description,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
@ -61,13 +61,6 @@ class ClusterType(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:clustertype', args=[self.pk])
|
return reverse('virtualization:clustertype', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cluster groups
|
# Cluster groups
|
||||||
@ -104,13 +97,6 @@ class ClusterGroup(OrganizationalModel):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:clustergroup', args=[self.pk])
|
return reverse('virtualization:clustergroup', args=[self.pk])
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.slug,
|
|
||||||
self.description,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Clusters
|
# Clusters
|
||||||
@ -184,16 +170,6 @@ class Cluster(PrimaryModel):
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.type.name,
|
|
||||||
self.group.name if self.group else None,
|
|
||||||
self.site.name if self.site else None,
|
|
||||||
self.tenant.name if self.tenant else None,
|
|
||||||
self.comments,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Virtual machines
|
# Virtual machines
|
||||||
@ -337,20 +313,6 @@ class VirtualMachine(PrimaryModel, ConfigContextModel):
|
|||||||
field: f"The specified IP address ({ip}) is not assigned to this VM.",
|
field: f"The specified IP address ({ip}) is not assigned to this VM.",
|
||||||
})
|
})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.name,
|
|
||||||
self.get_status_display(),
|
|
||||||
self.role.name if self.role else None,
|
|
||||||
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 VirtualMachineStatusChoices.CSS_CLASSES.get(self.status)
|
return VirtualMachineStatusChoices.CSS_CLASSES.get(self.status)
|
||||||
|
|
||||||
@ -440,18 +402,6 @@ class VMInterface(PrimaryModel, BaseInterface):
|
|||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('virtualization:vminterface', kwargs={'pk': self.pk})
|
return reverse('virtualization:vminterface', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
def to_csv(self):
|
|
||||||
return (
|
|
||||||
self.virtual_machine.name,
|
|
||||||
self.name,
|
|
||||||
self.enabled,
|
|
||||||
self.parent.name if self.parent else None,
|
|
||||||
self.mac_address,
|
|
||||||
self.mtu,
|
|
||||||
self.description,
|
|
||||||
self.get_mode_display(),
|
|
||||||
)
|
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
super().clean()
|
super().clean()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user