plural to singular
This commit is contained in:
@@ -2,7 +2,7 @@ from dcim.models import Device, DeviceRole
|
|||||||
from rest_framework.serializers import ModelSerializer
|
from rest_framework.serializers import ModelSerializer
|
||||||
from netbox.api.serializers import NetBoxModelSerializer
|
from netbox.api.serializers import NetBoxModelSerializer
|
||||||
|
|
||||||
from netbox_topology_views.models import RoleImage, IndividualOptions, CoordinateGroups, Coordinates
|
from netbox_topology_views.models import RoleImage, IndividualOptions, CoordinateGroup, Coordinate
|
||||||
|
|
||||||
|
|
||||||
class TopologyDummySerializer(ModelSerializer):
|
class TopologyDummySerializer(ModelSerializer):
|
||||||
@@ -22,14 +22,14 @@ class DeviceRoleSerializer(ModelSerializer):
|
|||||||
model = DeviceRole
|
model = DeviceRole
|
||||||
fields = ("name", "slug", "color", "vm_role", "description")
|
fields = ("name", "slug", "color", "vm_role", "description")
|
||||||
|
|
||||||
class CoordinateGroupsSerializer(NetBoxModelSerializer):
|
class CoordinateGroupSerializer(NetBoxModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CoordinateGroups
|
model = CoordinateGroup
|
||||||
fields = ("name", "description")
|
fields = ("name", "description")
|
||||||
|
|
||||||
class CoordinatesSerializer(NetBoxModelSerializer):
|
class CoordinateSerializer(NetBoxModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
fields = ("x", "y")
|
fields = ("x", "y")
|
||||||
|
|
||||||
class IndividualOptionsSerializer(NetBoxModelSerializer):
|
class IndividualOptionsSerializer(NetBoxModelSerializer):
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import django_filters
|
import django_filters
|
||||||
from dcim.choices import DeviceStatusChoices
|
from dcim.choices import DeviceStatusChoices
|
||||||
from dcim.models import Device, DeviceRole, Location, Rack, Region, Site
|
from dcim.models import Device, DeviceRole, Location, Rack, Region, Site
|
||||||
from .models import Coordinates
|
from .models import Coordinate
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from netbox.filtersets import NetBoxModelFilterSet
|
from netbox.filtersets import NetBoxModelFilterSet
|
||||||
from tenancy.filtersets import TenancyFilterSet
|
from tenancy.filtersets import TenancyFilterSet
|
||||||
@@ -57,7 +57,7 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
|||||||
|
|
||||||
class CoordinateFilterSet(NetBoxModelFilterSet):
|
class CoordinateFilterSet(NetBoxModelFilterSet):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
fields = ('id', 'group', 'device', 'x', 'y')
|
fields = ('id', 'group', 'device', 'x', 'y')
|
||||||
|
|
||||||
def search(self, queryset, name, value):
|
def search(self, queryset, name, value):
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ from utilities.forms.fields import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
from .models import IndividualOptions, CoordinateGroups, Coordinates
|
from .models import IndividualOptions, CoordinateGroup, Coordinate
|
||||||
|
|
||||||
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
||||||
model = Device
|
model = Device
|
||||||
@@ -148,23 +148,23 @@ class CoordinateGroupsForm(NetBoxModelForm):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = CoordinateGroups
|
model = CoordinateGroup
|
||||||
fields = ('name', 'description')
|
fields = ('name', 'description')
|
||||||
|
|
||||||
class CoordinatesForm(NetBoxModelForm):
|
class CoordinatesForm(NetBoxModelForm):
|
||||||
fieldsets = (
|
fieldsets = (
|
||||||
('Coordinates', ('group', 'device', 'x', 'y')),
|
('Coordinate', ('group', 'device', 'x', 'y')),
|
||||||
)
|
)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
fields = ('group', 'device', 'x', 'y')
|
fields = ('group', 'device', 'x', 'y')
|
||||||
|
|
||||||
class CoordinatesFilterForm(NetBoxModelFilterSetForm):
|
class CoordinatesFilterForm(NetBoxModelFilterSetForm):
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
|
|
||||||
group = forms.ModelMultipleChoiceField(
|
group = forms.ModelMultipleChoiceField(
|
||||||
queryset=CoordinateGroups.objects.all(),
|
queryset=CoordinateGroup.objects.all(),
|
||||||
required=False
|
required=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
# Generated by Django 4.1.8 on 2023-05-01 08:21
|
# Generated by Django 4.1.8 on 2023-05-01 16:13
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
@@ -16,7 +16,7 @@ class Migration(migrations.Migration):
|
|||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='CoordinateGroups',
|
name='CoordinateGroup',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
||||||
@@ -31,7 +31,7 @@ class Migration(migrations.Migration):
|
|||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Coordinates',
|
name='Coordinate',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
|
||||||
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
('created', models.DateTimeField(auto_now_add=True, null=True)),
|
||||||
@@ -40,7 +40,7 @@ class Migration(migrations.Migration):
|
|||||||
('x', models.IntegerField()),
|
('x', models.IntegerField()),
|
||||||
('y', models.IntegerField()),
|
('y', models.IntegerField()),
|
||||||
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dcim.device')),
|
('device', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dcim.device')),
|
||||||
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='netbox_topology_views.coordinategroups')),
|
('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='netbox_topology_views.coordinategroup')),
|
||||||
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
('tags', taggit.managers.TaggableManager(through='extras.TaggedItem', to='extras.Tag')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
@@ -95,7 +95,7 @@ class RoleImage(ChangeLoggingMixin, ExportTemplatesMixin, WebhooksMixin):
|
|||||||
return self.get_default_image(dir)
|
return self.get_default_image(dir)
|
||||||
return static(f"/{self.image}")
|
return static(f"/{self.image}")
|
||||||
|
|
||||||
class CoordinateGroups(NetBoxModel):
|
class CoordinateGroup(NetBoxModel):
|
||||||
"""
|
"""
|
||||||
A coordinate group is used to display the topology for a particular group.
|
A coordinate group is used to display the topology for a particular group.
|
||||||
This allows different visualizations with the same devices.
|
This allows different visualizations with the same devices.
|
||||||
@@ -117,16 +117,16 @@ class CoordinateGroups(NetBoxModel):
|
|||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('plugins:netbox_topology_views:coordinategroups', args=[self.pk])
|
return reverse('plugins:netbox_topology_views:coordinategroup', args=[self.pk])
|
||||||
|
|
||||||
class Coordinates(NetBoxModel):
|
class Coordinate(NetBoxModel):
|
||||||
"""
|
"""
|
||||||
Coordinates are being used to place devices in a topology view onto a certian
|
Coordinates are being used to place devices in a topology view onto a certian
|
||||||
position. Devices belong to one or more coordinate groups. They have to
|
position. Devices belong to one or more coordinate groups. They have to
|
||||||
be unique together.
|
be unique together.
|
||||||
"""
|
"""
|
||||||
device = models.ForeignKey(Device, on_delete=models.CASCADE)
|
device = models.ForeignKey(Device, on_delete=models.CASCADE)
|
||||||
group = models.ForeignKey(CoordinateGroups, on_delete=models.CASCADE)
|
group = models.ForeignKey(CoordinateGroup, on_delete=models.CASCADE)
|
||||||
|
|
||||||
x = models.IntegerField(
|
x = models.IntegerField(
|
||||||
help_text='X-coordinate of the device (horizontal) on the canvas. '
|
help_text='X-coordinate of the device (horizontal) on the canvas. '
|
||||||
@@ -145,7 +145,7 @@ class Coordinates(NetBoxModel):
|
|||||||
return f'{self.x};{self.y}'
|
return f'{self.x};{self.y}'
|
||||||
|
|
||||||
def get_absolute_url(self):
|
def get_absolute_url(self):
|
||||||
return reverse('plugins:netbox_topology_views:coordinates', args=[self.pk])
|
return reverse('plugins:netbox_topology_views:coordinate', args=[self.pk])
|
||||||
|
|
||||||
def set_xy_from_text_coords(self, coords: str):
|
def set_xy_from_text_coords(self, coords: str):
|
||||||
xy = coords.split(';')
|
xy = coords.split(';')
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton
|
from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton
|
||||||
from utilities.choices import ButtonColorChoices
|
from utilities.choices import ButtonColorChoices
|
||||||
|
|
||||||
coordinategroups_buttons = [
|
coordinategroup_buttons = [
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
link='plugins:netbox_topology_views:coordinategroups_add',
|
link='plugins:netbox_topology_views:coordinategroup_add',
|
||||||
title='Add',
|
title='Add',
|
||||||
icon_class='mdi mdi-plus-thick',
|
icon_class='mdi mdi-plus-thick',
|
||||||
color=ButtonColorChoices.GREEN,
|
color=ButtonColorChoices.GREEN,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
coordinates_buttons = [
|
coordinate_buttons = [
|
||||||
PluginMenuButton(
|
PluginMenuButton(
|
||||||
link='plugins:netbox_topology_views:coordinates_add',
|
link='plugins:netbox_topology_views:coordinate_add',
|
||||||
title='Add',
|
title='Add',
|
||||||
icon_class='mdi mdi-plus-thick',
|
icon_class='mdi mdi-plus-thick',
|
||||||
color=ButtonColorChoices.GREEN,
|
color=ButtonColorChoices.GREEN,
|
||||||
@@ -26,8 +26,8 @@ menu = PluginMenu(
|
|||||||
('TOPOLOGY',
|
('TOPOLOGY',
|
||||||
(
|
(
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:home", link_text="Topology"),
|
PluginMenuItem(link="plugins:netbox_topology_views:home", link_text="Topology"),
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:coordinategroups_list", link_text="Coordinate Groups", buttons=coordinategroups_buttons),
|
PluginMenuItem(link="plugins:netbox_topology_views:coordinategroup_list", link_text="Coordinate Groups", buttons=coordinategroup_buttons),
|
||||||
PluginMenuItem(link="plugins:netbox_topology_views:coordinates_list", link_text="Coordinates", buttons=coordinates_buttons),
|
PluginMenuItem(link="plugins:netbox_topology_views:coordinate_list", link_text="Coordinates", buttons=coordinate_buttons),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
('PREFERENCES',
|
('PREFERENCES',
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
from netbox.search import SearchIndex, register_search
|
from netbox.search import SearchIndex, register_search
|
||||||
from .models import CoordinateGroups, Coordinates
|
from .models import CoordinateGroup, Coordinate
|
||||||
|
|
||||||
@register_search
|
@register_search
|
||||||
class CoordinateGroupsIndex(SearchIndex):
|
class CoordinateGroupsIndex(SearchIndex):
|
||||||
model = CoordinateGroups
|
model = CoordinateGroup
|
||||||
fields = (
|
fields = (
|
||||||
('name', 100),
|
('name', 100),
|
||||||
('description', 2000),
|
('description', 2000),
|
||||||
@@ -11,7 +11,7 @@ class CoordinateGroupsIndex(SearchIndex):
|
|||||||
|
|
||||||
@register_search
|
@register_search
|
||||||
class CoordinatesIndex(SearchIndex):
|
class CoordinatesIndex(SearchIndex):
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
fields = (
|
fields = (
|
||||||
('group', 100),
|
('group', 100),
|
||||||
('device', 200),
|
('device', 200),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
|
|
||||||
from netbox.tables import NetBoxTable, ChoiceFieldColumn
|
from netbox.tables import NetBoxTable, ChoiceFieldColumn
|
||||||
from .models import CoordinateGroups, Coordinates
|
from .models import CoordinateGroup, Coordinate
|
||||||
|
|
||||||
class CoordinateGroupListTable(NetBoxTable):
|
class CoordinateGroupListTable(NetBoxTable):
|
||||||
name = tables.Column(
|
name = tables.Column(
|
||||||
@@ -9,7 +9,7 @@ class CoordinateGroupListTable(NetBoxTable):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = CoordinateGroups
|
model = CoordinateGroup
|
||||||
fields = ('pk', 'name', 'description')
|
fields = ('pk', 'name', 'description')
|
||||||
default_columns = ('name', 'description')
|
default_columns = ('name', 'description')
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ class CoordinateListTable(NetBoxTable):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class Meta(NetBoxTable.Meta):
|
class Meta(NetBoxTable.Meta):
|
||||||
model = Coordinates
|
model = Coordinate
|
||||||
fields = ('pk', 'group', 'device', 'x', 'y')
|
fields = ('pk', 'group', 'device', 'x', 'y')
|
||||||
default_columns = ('id', 'group', 'device', 'x', 'y')
|
default_columns = ('id', 'group', 'device', 'x', 'y')
|
||||||
|
|
||||||
|
|||||||
@@ -12,18 +12,18 @@ urlpatterns = (
|
|||||||
path("individualoptions/", views.TopologyIndividualOptionsView.as_view(), name="individualoptions"),
|
path("individualoptions/", views.TopologyIndividualOptionsView.as_view(), name="individualoptions"),
|
||||||
|
|
||||||
# Coordinate Group
|
# Coordinate Group
|
||||||
path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroups_list"),
|
path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroup_list"),
|
||||||
path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroups_add"),
|
path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroup_add"),
|
||||||
path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroups"),
|
path("coordinate-groups/<int:pk>/", views.CoordinateGroupView.as_view(), name="coordinategroup"),
|
||||||
path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroups_edit"),
|
path("coordinate-groups/<int:pk>/edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"),
|
||||||
path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroups_delete"),
|
path("coordinate-groups/<int:pk>/delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"),
|
||||||
path("coordinate-groups/<int:pk>/changelog/", views.CoordinateGroupChangeLogView.as_view(), name="coordinategroups_changelog", kwargs={'model': models.CoordinateGroups}),
|
path("coordinate-groups/<int:pk>/changelog/", views.CoordinateGroupChangeLogView.as_view(), name="coordinategroup_changelog", kwargs={'model': models.CoordinateGroup}),
|
||||||
|
|
||||||
# Coordinate
|
# Coordinate
|
||||||
path("coordinates/", views.CoordinateListView.as_view(), name="coordinates_list"),
|
path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"),
|
||||||
path("coordinates/add/", views.CoordinateAddView.as_view(), name="coordinates_add"),
|
path("coordinate/add/", views.CoordinateAddView.as_view(), name="coordinate_add"),
|
||||||
path("coordinates/<int:pk>/", views.CoordinateView.as_view(), name="coordinates"),
|
path("coordinate/<int:pk>/", views.CoordinateView.as_view(), name="coordinate"),
|
||||||
path("coordinates/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinates_edit"),
|
path("coordinate/<int:pk>/edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"),
|
||||||
path("coordinates/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinates_delete"),
|
path("coordinate/<int:pk>/delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"),
|
||||||
path("coordinates/<int:pk>/changelog/", views.CoordinateChangeLogView.as_view(), name="coordinates_changelog", kwargs={'model': models.Coordinates}),
|
path("coordinate/<int:pk>/changelog/", views.CoordinateChangeLogView.as_view(), name="coordinate_changelog", kwargs={'model': models.Coordinate}),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ from netbox.views.generic import ObjectView, ObjectListView, ObjectEditView, Obj
|
|||||||
|
|
||||||
from netbox_topology_views.filters import DeviceFilterSet, CoordinateFilterSet
|
from netbox_topology_views.filters import DeviceFilterSet, CoordinateFilterSet
|
||||||
from netbox_topology_views.forms import DeviceFilterForm, IndividualOptionsForm, CoordinateGroupsForm, CoordinatesForm, CoordinatesFilterForm
|
from netbox_topology_views.forms import DeviceFilterForm, IndividualOptionsForm, CoordinateGroupsForm, CoordinatesForm, CoordinatesFilterForm
|
||||||
from netbox_topology_views.models import RoleImage, CoordinateGroups, Coordinates, IndividualOptions
|
from netbox_topology_views.models import RoleImage, CoordinateGroup, Coordinate, IndividualOptions
|
||||||
from netbox_topology_views.tables import CoordinateGroupListTable, CoordinateListTable
|
from netbox_topology_views.tables import CoordinateGroupListTable, CoordinateListTable
|
||||||
from netbox_topology_views.utils import (
|
from netbox_topology_views.utils import (
|
||||||
CONF_IMAGE_DIR,
|
CONF_IMAGE_DIR,
|
||||||
@@ -755,81 +755,81 @@ class TopologyImagesView(PermissionRequiredMixin, View):
|
|||||||
)
|
)
|
||||||
|
|
||||||
class CoordinateView(PermissionRequiredMixin, ObjectView):
|
class CoordinateView(PermissionRequiredMixin, ObjectView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinates'
|
permission_required = 'netbox_topology_views.view_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
|
|
||||||
class CoordinateAddView(PermissionRequiredMixin, ObjectEditView):
|
class CoordinateAddView(PermissionRequiredMixin, ObjectEditView):
|
||||||
permission_required = 'netbox_topology_views.add_coordinates'
|
permission_required = 'netbox_topology_views.add_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
form = CoordinatesForm
|
form = CoordinatesForm
|
||||||
template_name = 'netbox_topology_views/coordinates_add.html'
|
template_name = 'netbox_topology_views/coordinate_add.html'
|
||||||
|
|
||||||
class CoordinateListView(PermissionRequiredMixin, ObjectListView):
|
class CoordinateListView(PermissionRequiredMixin, ObjectListView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinates'
|
permission_required = 'netbox_topology_views.view_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
table = CoordinateListTable
|
table = CoordinateListTable
|
||||||
template_name = 'netbox_topology_views/coordinates_list.html'
|
template_name = 'netbox_topology_views/coordinate_list.html'
|
||||||
filterset = CoordinateFilterSet
|
filterset = CoordinateFilterSet
|
||||||
filterset_form = CoordinatesFilterForm
|
filterset_form = CoordinatesFilterForm
|
||||||
|
|
||||||
class CoordinateEditView(PermissionRequiredMixin, ObjectEditView):
|
class CoordinateEditView(PermissionRequiredMixin, ObjectEditView):
|
||||||
permission_required = 'netbox_topology_views.change_coordinates'
|
permission_required = 'netbox_topology_views.change_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
form = CoordinatesForm
|
form = CoordinatesForm
|
||||||
template_name = 'netbox_topology_views/coordinates_edit.html'
|
template_name = 'netbox_topology_views/coordinate_edit.html'
|
||||||
|
|
||||||
class CoordinateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
class CoordinateDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||||
permission_required = 'netbox_topology_views.delete_coordinates'
|
permission_required = 'netbox_topology_views.delete_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
|
|
||||||
class CoordinateChangeLogView(PermissionRequiredMixin, ObjectChangeLogView):
|
class CoordinateChangeLogView(PermissionRequiredMixin, ObjectChangeLogView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinates'
|
permission_required = 'netbox_topology_views.view_coordinate'
|
||||||
|
|
||||||
queryset = Coordinates.objects.all()
|
queryset = Coordinate.objects.all()
|
||||||
|
|
||||||
class CoordinateGroupView(PermissionRequiredMixin, ObjectView):
|
class CoordinateGroupView(PermissionRequiredMixin, ObjectView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinategroups'
|
permission_required = 'netbox_topology_views.view_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
|
|
||||||
class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
|
class CoordinateGroupAddView(PermissionRequiredMixin, ObjectEditView):
|
||||||
permission_required = 'netbox_topology_views.add_coordinategroups'
|
permission_required = 'netbox_topology_views.add_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
form = CoordinateGroupsForm
|
form = CoordinateGroupsForm
|
||||||
template_name = 'netbox_topology_views/coordinategroups_add.html'
|
template_name = 'netbox_topology_views/coordinategroup_add.html'
|
||||||
|
|
||||||
class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView):
|
class CoordinateGroupListView(PermissionRequiredMixin, ObjectListView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinategroups'
|
permission_required = 'netbox_topology_views.view_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
table = CoordinateGroupListTable
|
table = CoordinateGroupListTable
|
||||||
template_name = 'netbox_topology_views/coordinategroups_list.html'
|
template_name = 'netbox_topology_views/coordinategroup_list.html'
|
||||||
|
|
||||||
class CoordinateGroupEditView(PermissionRequiredMixin, ObjectEditView):
|
class CoordinateGroupEditView(PermissionRequiredMixin, ObjectEditView):
|
||||||
permission_required = 'netbox_topology_views.change_coordinategroups'
|
permission_required = 'netbox_topology_views.change_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
form = CoordinateGroupsForm
|
form = CoordinateGroupsForm
|
||||||
template_name = 'netbox_topology_views/coordinategroups_edit.html'
|
template_name = 'netbox_topology_views/coordinategroup_edit.html'
|
||||||
|
|
||||||
class CoordinateGroupDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
class CoordinateGroupDeleteView(PermissionRequiredMixin, ObjectDeleteView):
|
||||||
permission_required = 'netbox_topology_views.delete_coordinategroups'
|
permission_required = 'netbox_topology_views.delete_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
|
|
||||||
class CoordinateGroupChangeLogView(PermissionRequiredMixin, ObjectChangeLogView):
|
class CoordinateGroupChangeLogView(PermissionRequiredMixin, ObjectChangeLogView):
|
||||||
permission_required = 'netbox_topology_views.view_coordinategroups'
|
permission_required = 'netbox_topology_views.view_coordinategroup'
|
||||||
|
|
||||||
queryset = CoordinateGroups.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
|
|
||||||
class TopologyIndividualOptionsView(PermissionRequiredMixin, View):
|
class TopologyIndividualOptionsView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'netbox_topology_views.change_individualoptions'
|
permission_required = 'netbox_topology_views.change_individualoption'
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
instance = IndividualOptions.objects.get(user_id=request.user.id)
|
instance = IndividualOptions.objects.get(user_id=request.user.id)
|
||||||
|
|||||||
Reference in New Issue
Block a user