mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-23 16:06:43 -06:00
8356 review changes
This commit is contained in:
parent
7e08c3474a
commit
2718700c74
@ -321,7 +321,7 @@ class VirtualDiskFilterSet(NetBoxModelFilterSet):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = VirtualDisk
|
model = VirtualDisk
|
||||||
fields = ['id', 'name', 'size',]
|
fields = ['id', 'name', 'size']
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
if not value.strip():
|
if not value.strip():
|
||||||
|
@ -229,10 +229,16 @@ class VirtualDiskFilterForm(NetBoxModelFilterSetForm):
|
|||||||
fieldsets = (
|
fieldsets = (
|
||||||
(None, ('q', 'filter_id', 'tag')),
|
(None, ('q', 'filter_id', 'tag')),
|
||||||
(_('Virtual Machine'), ('virtual_machine_id',)),
|
(_('Virtual Machine'), ('virtual_machine_id',)),
|
||||||
|
(_('Attributes'), ('size',)),
|
||||||
)
|
)
|
||||||
virtual_machine_id = DynamicModelMultipleChoiceField(
|
virtual_machine_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=VirtualMachine.objects.all(),
|
queryset=VirtualMachine.objects.all(),
|
||||||
required=False,
|
required=False,
|
||||||
label=_('Virtual machine')
|
label=_('Virtual machine')
|
||||||
)
|
)
|
||||||
|
size = forms.IntegerField(
|
||||||
|
label=_('Size (GB)'),
|
||||||
|
required=False,
|
||||||
|
min_value=1
|
||||||
|
)
|
||||||
tag = TagFilterField(model)
|
tag = TagFilterField(model)
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
# Generated by Django 4.2.5 on 2023-10-19 21:51
|
# Generated by Django 4.2.5 on 2023-10-23 15:13
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
import django.db.models.functions.text
|
||||||
import taggit.managers
|
import taggit.managers
|
||||||
import utilities.fields
|
import utilities.fields
|
||||||
import utilities.json
|
import utilities.json
|
||||||
@ -40,7 +41,7 @@ class Migration(migrations.Migration):
|
|||||||
'name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize
|
'name', blank=True, max_length=100, naturalize_function=utilities.ordering.naturalize
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
('size', models.PositiveIntegerField(blank=True, null=True)),
|
('size', models.PositiveIntegerField()),
|
||||||
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
||||||
(
|
(
|
||||||
'virtual_machine',
|
'virtual_machine',
|
||||||
@ -58,4 +59,12 @@ class Migration(migrations.Migration):
|
|||||||
},
|
},
|
||||||
bases=(models.Model, utilities.tracking.TrackingModelMixin),
|
bases=(models.Model, utilities.tracking.TrackingModelMixin),
|
||||||
),
|
),
|
||||||
|
migrations.AddConstraint(
|
||||||
|
model_name='virtualdisk',
|
||||||
|
constraint=models.UniqueConstraint(
|
||||||
|
django.db.models.functions.text.Lower('name'),
|
||||||
|
models.F('virtual_machine'),
|
||||||
|
name='virtualization_virtualdisk_unique_name_virtual_machine',
|
||||||
|
),
|
||||||
|
),
|
||||||
]
|
]
|
@ -396,12 +396,16 @@ class VirtualDisk(NetBoxModel, TrackingModelMixin):
|
|||||||
)
|
)
|
||||||
size = models.PositiveIntegerField(
|
size = models.PositiveIntegerField(
|
||||||
verbose_name=_('size (GB)'),
|
verbose_name=_('size (GB)'),
|
||||||
blank=True,
|
|
||||||
null=True,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering = ('_name', 'pk') # Name may be non-unique
|
ordering = ('_name', 'pk') # Name may be non-unique
|
||||||
|
constraints = (
|
||||||
|
models.UniqueConstraint(
|
||||||
|
Lower('name'), 'virtual_machine',
|
||||||
|
name='%(app_label)s_%(class)s_unique_name_virtual_machine'
|
||||||
|
),
|
||||||
|
)
|
||||||
verbose_name = _('virtual disk')
|
verbose_name = _('virtual disk')
|
||||||
verbose_name_plural = _('virtual disks')
|
verbose_name_plural = _('virtual disks')
|
||||||
|
|
||||||
|
@ -191,12 +191,8 @@ class VirtualMachineVirtualDiskTable(VirtualDiskTable):
|
|||||||
actions=('edit', 'delete'),
|
actions=('edit', 'delete'),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(VirtualDiskTable.Meta):
|
||||||
model = VirtualDisk
|
|
||||||
fields = (
|
fields = (
|
||||||
'pk', 'id', 'name', 'size', 'tags', 'actions',
|
'pk', 'id', 'name', 'size', 'tags', 'actions',
|
||||||
)
|
)
|
||||||
default_columns = ('pk', 'name', 'size')
|
default_columns = ('pk', 'name', 'size')
|
||||||
row_attrs = {
|
|
||||||
'data-name': lambda record: record.name,
|
|
||||||
}
|
|
||||||
|
@ -6,7 +6,7 @@ from tenancy.models import Tenant, TenantGroup
|
|||||||
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
|
from utilities.testing import ChangeLoggedFilterSetTests, create_test_device
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.filtersets import *
|
from virtualization.filtersets import *
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
|
from virtualization.models import *
|
||||||
|
|
||||||
|
|
||||||
class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests):
|
class ClusterTypeTestCase(TestCase, ChangeLoggedFilterSetTests):
|
||||||
|
@ -7,7 +7,7 @@ from dcim.models import DeviceRole, Platform, Site
|
|||||||
from ipam.models import VLAN, VRF
|
from ipam.models import VLAN, VRF
|
||||||
from utilities.testing import ViewTestCases, create_tags, create_test_device
|
from utilities.testing import ViewTestCases, create_tags, create_test_device
|
||||||
from virtualization.choices import *
|
from virtualization.choices import *
|
||||||
from virtualization.models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
|
from virtualization.models import *
|
||||||
|
|
||||||
|
|
||||||
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
class ClusterGroupTestCase(ViewTestCases.OrganizationalObjectViewTestCase):
|
||||||
|
@ -22,13 +22,13 @@ from tenancy.views import ObjectContactsView
|
|||||||
from utilities.utils import count_related
|
from utilities.utils import count_related
|
||||||
from utilities.views import ViewTab, register_model_view
|
from utilities.views import ViewTab, register_model_view
|
||||||
from . import filtersets, forms, tables
|
from . import filtersets, forms, tables
|
||||||
from .models import Cluster, ClusterGroup, ClusterType, VirtualDisk, VirtualMachine, VMInterface
|
from .models import *
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cluster types
|
# Cluster types
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
class ClusterTypeListView(generic.ObjectListView):
|
class ClusterTypeListView(generic.ObjectListView):
|
||||||
queryset = ClusterType.objects.annotate(
|
queryset = ClusterType.objects.annotate(
|
||||||
cluster_count=count_related(Cluster, 'type')
|
cluster_count=count_related(Cluster, 'type')
|
||||||
@ -391,19 +391,17 @@ class VirtualMachineVirtualDisksView(generic.ObjectChildrenView):
|
|||||||
permission='virtualization.view_virtual_disk',
|
permission='virtualization.view_virtual_disk',
|
||||||
weight=500
|
weight=500
|
||||||
)
|
)
|
||||||
actions = ('add', 'import', 'export', 'bulk_edit', 'bulk_delete', 'bulk_rename')
|
actions = {
|
||||||
action_perms = defaultdict(set, **{
|
|
||||||
'add': {'add'},
|
'add': {'add'},
|
||||||
'import': {'add'},
|
'import': {'add'},
|
||||||
|
'export': {'view'},
|
||||||
'bulk_edit': {'change'},
|
'bulk_edit': {'change'},
|
||||||
'bulk_delete': {'delete'},
|
'bulk_delete': {'delete'},
|
||||||
'bulk_rename': {'change'},
|
'bulk_rename': {'change'},
|
||||||
})
|
}
|
||||||
|
|
||||||
def get_children(self, request, parent):
|
def get_children(self, request, parent):
|
||||||
return parent.virtualdisks.restrict(request.user, 'view').prefetch_related(
|
return parent.virtualdisks.restrict(request.user, 'view').prefetch_related('tags',)
|
||||||
'tags',
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@register_model_view(VirtualMachine, 'configcontext', path='config-context')
|
@register_model_view(VirtualMachine, 'configcontext', path='config-context')
|
||||||
|
Loading…
Reference in New Issue
Block a user