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

Renamed CreatedUpdatedModel to ChangeLoggedModel and applied it to all primary and organizational models

This commit is contained in:
Jeremy Stretch
2018-06-13 15:40:16 -04:00
parent 81258ea35b
commit b556d2d626
14 changed files with 503 additions and 106 deletions

View File

@@ -0,0 +1,135 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-06-13 17:14
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('dcim', '0058_relax_rack_naming_constraints'),
]
operations = [
migrations.AddField(
model_name='devicerole',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='devicerole',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='devicetype',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='devicetype',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='manufacturer',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='manufacturer',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='platform',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='platform',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='rackgroup',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='rackgroup',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='rackreservation',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='rackrole',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='rackrole',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='region',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='region',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AddField(
model_name='virtualchassis',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AddField(
model_name='virtualchassis',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AlterField(
model_name='device',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AlterField(
model_name='device',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AlterField(
model_name='rack',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AlterField(
model_name='rack',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
migrations.AlterField(
model_name='rackreservation',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AlterField(
model_name='site',
name='created',
field=models.DateField(auto_now_add=True, null=True),
),
migrations.AlterField(
model_name='site',
name='last_updated',
field=models.DateTimeField(auto_now=True, null=True),
),
]

View File

@@ -1,27 +0,0 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.12 on 2018-05-30 17:30
from __future__ import unicode_literals
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('dcim', '0058_relax_rack_naming_constraints'),
]
operations = [
migrations.AddField(
model_name='devicetype',
name='created',
field=models.DateField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AddField(
model_name='devicetype',
name='last_updated',
field=models.DateTimeField(auto_now=True),
),
]

View File

@@ -22,7 +22,7 @@ from extras.models import CustomFieldModel
from extras.rpc import RPC_CLIENTS
from utilities.fields import ColorField, NullableCharField
from utilities.managers import NaturalOrderByManager
from utilities.models import CreatedUpdatedModel
from utilities.models import ChangeLoggedModel
from .constants import *
from .fields import ASNField, MACAddressField
from .querysets import InterfaceQuerySet
@@ -33,7 +33,7 @@ from .querysets import InterfaceQuerySet
#
@python_2_unicode_compatible
class Region(MPTTModel):
class Region(ChangeLoggedModel, MPTTModel):
"""
Sites can be grouped within geographic Regions.
"""
@@ -53,6 +53,7 @@ class Region(MPTTModel):
unique=True
)
serializer = 'dcim.api.serializers.RegionSerializer'
csv_headers = ['name', 'slug', 'parent']
class MPTTMeta:
@@ -81,7 +82,7 @@ class SiteManager(NaturalOrderByManager):
@python_2_unicode_compatible
class Site(CreatedUpdatedModel, CustomFieldModel):
class Site(ChangeLoggedModel, CustomFieldModel):
"""
A Site represents a geographic location within a network; typically a building or campus. The optional facility
field can be used to include an external designation, such as a data center name (e.g. Equinix SV6).
@@ -162,13 +163,12 @@ class Site(CreatedUpdatedModel, CustomFieldModel):
objects = SiteManager()
tags = TaggableManager()
serializer = 'dcim.api.serializers.SiteSerializer'
csv_headers = [
'name', 'slug', 'status', 'region', 'tenant', 'facility', 'asn', 'time_zone', 'description', 'physical_address',
'shipping_address', 'contact_name', 'contact_phone', 'contact_email', 'comments',
]
serializer = 'dcim.api.serializers.SiteSerializer'
class Meta:
ordering = ['name']
@@ -231,7 +231,7 @@ class Site(CreatedUpdatedModel, CustomFieldModel):
#
@python_2_unicode_compatible
class RackGroup(models.Model):
class RackGroup(ChangeLoggedModel):
"""
Racks can be grouped as subsets within a Site. The scope of a group will depend on how Sites are defined. For
example, if a Site spans a corporate campus, a RackGroup might be defined to represent each building within that
@@ -247,9 +247,8 @@ class RackGroup(models.Model):
related_name='rack_groups'
)
csv_headers = ['site', 'name', 'slug']
serializer = 'dcim.api.serializers.RackGroupSerializer'
csv_headers = ['site', 'name', 'slug']
class Meta:
ordering = ['site', 'name']
@@ -273,7 +272,7 @@ class RackGroup(models.Model):
@python_2_unicode_compatible
class RackRole(models.Model):
class RackRole(ChangeLoggedModel):
"""
Racks can be organized by functional role, similar to Devices.
"""
@@ -286,6 +285,7 @@ class RackRole(models.Model):
)
color = ColorField()
serializer = 'dcim.api.serializers.RackRoleSerializer'
csv_headers = ['name', 'slug', 'color']
class Meta:
@@ -310,7 +310,7 @@ class RackManager(NaturalOrderByManager):
@python_2_unicode_compatible
class Rack(CreatedUpdatedModel, CustomFieldModel):
class Rack(ChangeLoggedModel, CustomFieldModel):
"""
Devices are housed within Racks. Each rack has a defined height measured in rack units, and a front and rear face.
Each Rack is assigned to a Site and (optionally) a RackGroup.
@@ -392,13 +392,12 @@ class Rack(CreatedUpdatedModel, CustomFieldModel):
objects = RackManager()
tags = TaggableManager()
serializer = 'dcim.api.serializers.RackSerializer'
csv_headers = [
'site', 'group_name', 'name', 'facility_id', 'tenant', 'role', 'type', 'serial', 'width', 'u_height',
'desc_units', 'comments',
]
serializer = 'dcim.api.serializers.RackSerializer'
class Meta:
ordering = ['site', 'group', 'name']
unique_together = [
@@ -570,7 +569,7 @@ class Rack(CreatedUpdatedModel, CustomFieldModel):
@python_2_unicode_compatible
class RackReservation(models.Model):
class RackReservation(ChangeLoggedModel):
"""
One or more reserved units within a Rack.
"""
@@ -582,9 +581,6 @@ class RackReservation(models.Model):
units = ArrayField(
base_field=models.PositiveSmallIntegerField()
)
created = models.DateTimeField(
auto_now_add=True
)
tenant = models.ForeignKey(
to='tenancy.Tenant',
on_delete=models.PROTECT,
@@ -600,6 +596,8 @@ class RackReservation(models.Model):
max_length=100
)
serializer = 'dcim.api.serializers.RackReservationSerializer'
class Meta:
ordering = ['created']
@@ -647,7 +645,7 @@ class RackReservation(models.Model):
#
@python_2_unicode_compatible
class Manufacturer(models.Model):
class Manufacturer(ChangeLoggedModel):
"""
A Manufacturer represents a company which produces hardware devices; for example, Juniper or Dell.
"""
@@ -659,6 +657,7 @@ class Manufacturer(models.Model):
unique=True
)
serializer = 'dcim.api.serializers.ManufacturerSerializer'
csv_headers = ['name', 'slug']
class Meta:
@@ -678,7 +677,7 @@ class Manufacturer(models.Model):
@python_2_unicode_compatible
class DeviceType(CreatedUpdatedModel, CustomFieldModel):
class DeviceType(ChangeLoggedModel, CustomFieldModel):
"""
A DeviceType represents a particular make (Manufacturer) and model of device. It specifies rack height and depth, as
well as high-level functional role(s).
@@ -753,6 +752,7 @@ class DeviceType(CreatedUpdatedModel, CustomFieldModel):
tags = TaggableManager()
serializer = 'dcim.api.serializers.DeviceTypeSerializer'
csv_headers = [
'manufacturer', 'model', 'slug', 'part_number', 'u_height', 'is_full_depth', 'is_console_server',
'is_pdu', 'is_network_device', 'subdevice_role', 'interface_ordering', 'comments',
@@ -998,7 +998,7 @@ class DeviceBayTemplate(models.Model):
#
@python_2_unicode_compatible
class DeviceRole(models.Model):
class DeviceRole(ChangeLoggedModel):
"""
Devices are organized by functional role; for example, "Core Switch" or "File Server". Each DeviceRole is assigned a
color to be used when displaying rack elevations. The vm_role field determines whether the role is applicable to
@@ -1018,6 +1018,7 @@ class DeviceRole(models.Model):
help_text='Virtual machines may be assigned to this role'
)
serializer = 'dcim.api.serializers.DeviceRoleSerializer'
csv_headers = ['name', 'slug', 'color', 'vm_role']
class Meta:
@@ -1039,7 +1040,7 @@ class DeviceRole(models.Model):
@python_2_unicode_compatible
class Platform(models.Model):
class Platform(ChangeLoggedModel):
"""
Platform refers to the software or firmware running on a Device. For example, "Cisco IOS-XR" or "Juniper Junos".
NetBox uses Platforms to determine how to interact with devices when pulling inventory data or other information by
@@ -1073,6 +1074,7 @@ class Platform(models.Model):
verbose_name='Legacy RPC client'
)
serializer = 'dcim.api.serializers.PlatformSerializer'
csv_headers = ['name', 'slug', 'manufacturer', 'napalm_driver']
class Meta:
@@ -1098,7 +1100,7 @@ class DeviceManager(NaturalOrderByManager):
@python_2_unicode_compatible
class Device(CreatedUpdatedModel, CustomFieldModel):
class Device(ChangeLoggedModel, CustomFieldModel):
"""
A Device represents a piece of physical hardware mounted within a Rack. Each Device is assigned a DeviceType,
DeviceRole, and (optionally) a Platform. Device names are not required, however if one is set it must be unique.
@@ -1238,13 +1240,12 @@ class Device(CreatedUpdatedModel, CustomFieldModel):
objects = DeviceManager()
tags = TaggableManager()
serializer = 'dcim.api.serializers.DeviceSerializer'
csv_headers = [
'name', 'device_role', 'tenant', 'manufacturer', 'model_name', 'platform', 'serial', 'asset_tag', 'status',
'site', 'rack_group', 'rack_name', 'position', 'face', 'comments',
]
serializer = 'dcim.api.serializers.DeviceSerializer'
class Meta:
ordering = ['name']
unique_together = [
@@ -2098,7 +2099,7 @@ class InventoryItem(models.Model):
#
@python_2_unicode_compatible
class VirtualChassis(models.Model):
class VirtualChassis(ChangeLoggedModel):
"""
A collection of Devices which operate with a shared control plane (e.g. a switch stack).
"""
@@ -2112,6 +2113,8 @@ class VirtualChassis(models.Model):
blank=True
)
serializer = 'dcim.api.serializers.VirtualChassisSerializer'
class Meta:
ordering = ['master']
verbose_name_plural = 'virtual chassis'