diff --git a/netbox_topology_views/api/serializers.py b/netbox_topology_views/api/serializers.py index 5aa3054..c864ee0 100644 --- a/netbox_topology_views/api/serializers.py +++ b/netbox_topology_views/api/serializers.py @@ -2,7 +2,7 @@ from dcim.models import Device, DeviceRole from rest_framework.serializers import ModelSerializer 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): @@ -22,14 +22,14 @@ class DeviceRoleSerializer(ModelSerializer): model = DeviceRole fields = ("name", "slug", "color", "vm_role", "description") -class CoordinateGroupsSerializer(NetBoxModelSerializer): +class CoordinateGroupSerializer(NetBoxModelSerializer): class Meta: - model = CoordinateGroups + model = CoordinateGroup fields = ("name", "description") -class CoordinatesSerializer(NetBoxModelSerializer): +class CoordinateSerializer(NetBoxModelSerializer): class Meta: - model = Coordinates + model = Coordinate fields = ("x", "y") class IndividualOptionsSerializer(NetBoxModelSerializer): diff --git a/netbox_topology_views/filters.py b/netbox_topology_views/filters.py index 324c298..0c081e7 100644 --- a/netbox_topology_views/filters.py +++ b/netbox_topology_views/filters.py @@ -1,7 +1,7 @@ import django_filters from dcim.choices import DeviceStatusChoices 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 netbox.filtersets import NetBoxModelFilterSet from tenancy.filtersets import TenancyFilterSet @@ -57,7 +57,7 @@ class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet): class CoordinateFilterSet(NetBoxModelFilterSet): class Meta: - model = Coordinates + model = Coordinate fields = ('id', 'group', 'device', 'x', 'y') def search(self, queryset, name, value): diff --git a/netbox_topology_views/forms.py b/netbox_topology_views/forms.py index 38bf126..b3dab90 100644 --- a/netbox_topology_views/forms.py +++ b/netbox_topology_views/forms.py @@ -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): model = Device @@ -148,23 +148,23 @@ class CoordinateGroupsForm(NetBoxModelForm): ) class Meta: - model = CoordinateGroups + model = CoordinateGroup fields = ('name', 'description') class CoordinatesForm(NetBoxModelForm): fieldsets = ( - ('Coordinates', ('group', 'device', 'x', 'y')), + ('Coordinate', ('group', 'device', 'x', 'y')), ) class Meta: - model = Coordinates + model = Coordinate fields = ('group', 'device', 'x', 'y') class CoordinatesFilterForm(NetBoxModelFilterSetForm): - model = Coordinates + model = Coordinate group = forms.ModelMultipleChoiceField( - queryset=CoordinateGroups.objects.all(), + queryset=CoordinateGroup.objects.all(), required=False ) diff --git a/netbox_topology_views/migrations/0004_coordinategroups_coordinates.py b/netbox_topology_views/migrations/0004_coordinategroup_coordinate.py similarity index 94% rename from netbox_topology_views/migrations/0004_coordinategroups_coordinates.py rename to netbox_topology_views/migrations/0004_coordinategroup_coordinate.py index 8d7c295..ed5668b 100644 --- a/netbox_topology_views/migrations/0004_coordinategroups_coordinates.py +++ b/netbox_topology_views/migrations/0004_coordinategroup_coordinate.py @@ -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 import django.db.models.deletion @@ -16,7 +16,7 @@ class Migration(migrations.Migration): operations = [ migrations.CreateModel( - name='CoordinateGroups', + name='CoordinateGroup', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True, null=True)), @@ -31,7 +31,7 @@ class Migration(migrations.Migration): }, ), migrations.CreateModel( - name='Coordinates', + name='Coordinate', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)), ('created', models.DateTimeField(auto_now_add=True, null=True)), @@ -40,7 +40,7 @@ class Migration(migrations.Migration): ('x', models.IntegerField()), ('y', models.IntegerField()), ('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')), ], options={ diff --git a/netbox_topology_views/models.py b/netbox_topology_views/models.py index 7eb239e..98f902d 100644 --- a/netbox_topology_views/models.py +++ b/netbox_topology_views/models.py @@ -95,7 +95,7 @@ class RoleImage(ChangeLoggingMixin, ExportTemplatesMixin, WebhooksMixin): return self.get_default_image(dir) return static(f"/{self.image}") -class CoordinateGroups(NetBoxModel): +class CoordinateGroup(NetBoxModel): """ A coordinate group is used to display the topology for a particular group. This allows different visualizations with the same devices. @@ -117,16 +117,16 @@ class CoordinateGroups(NetBoxModel): return self.name 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 position. Devices belong to one or more coordinate groups. They have to be unique together. """ 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( help_text='X-coordinate of the device (horizontal) on the canvas. ' @@ -145,7 +145,7 @@ class Coordinates(NetBoxModel): return f'{self.x};{self.y}' 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): xy = coords.split(';') diff --git a/netbox_topology_views/navigation.py b/netbox_topology_views/navigation.py index 25b6c90..3d1a88a 100644 --- a/netbox_topology_views/navigation.py +++ b/netbox_topology_views/navigation.py @@ -1,18 +1,18 @@ from extras.plugins import PluginMenu, PluginMenuItem, PluginMenuButton from utilities.choices import ButtonColorChoices -coordinategroups_buttons = [ +coordinategroup_buttons = [ PluginMenuButton( - link='plugins:netbox_topology_views:coordinategroups_add', + link='plugins:netbox_topology_views:coordinategroup_add', title='Add', icon_class='mdi mdi-plus-thick', color=ButtonColorChoices.GREEN, ) ] -coordinates_buttons = [ +coordinate_buttons = [ PluginMenuButton( - link='plugins:netbox_topology_views:coordinates_add', + link='plugins:netbox_topology_views:coordinate_add', title='Add', icon_class='mdi mdi-plus-thick', color=ButtonColorChoices.GREEN, @@ -26,8 +26,8 @@ menu = PluginMenu( ('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:coordinates_list", link_text="Coordinates", buttons=coordinates_buttons), + PluginMenuItem(link="plugins:netbox_topology_views:coordinategroup_list", link_text="Coordinate Groups", buttons=coordinategroup_buttons), + PluginMenuItem(link="plugins:netbox_topology_views:coordinate_list", link_text="Coordinates", buttons=coordinate_buttons), ), ), ('PREFERENCES', diff --git a/netbox_topology_views/search.py b/netbox_topology_views/search.py index 9bae850..725aa5a 100644 --- a/netbox_topology_views/search.py +++ b/netbox_topology_views/search.py @@ -1,9 +1,9 @@ from netbox.search import SearchIndex, register_search -from .models import CoordinateGroups, Coordinates +from .models import CoordinateGroup, Coordinate @register_search class CoordinateGroupsIndex(SearchIndex): - model = CoordinateGroups + model = CoordinateGroup fields = ( ('name', 100), ('description', 2000), @@ -11,7 +11,7 @@ class CoordinateGroupsIndex(SearchIndex): @register_search class CoordinatesIndex(SearchIndex): - model = Coordinates + model = Coordinate fields = ( ('group', 100), ('device', 200), diff --git a/netbox_topology_views/tables.py b/netbox_topology_views/tables.py index abcb507..35e4c3a 100644 --- a/netbox_topology_views/tables.py +++ b/netbox_topology_views/tables.py @@ -1,7 +1,7 @@ import django_tables2 as tables from netbox.tables import NetBoxTable, ChoiceFieldColumn -from .models import CoordinateGroups, Coordinates +from .models import CoordinateGroup, Coordinate class CoordinateGroupListTable(NetBoxTable): name = tables.Column( @@ -9,7 +9,7 @@ class CoordinateGroupListTable(NetBoxTable): ) class Meta(NetBoxTable.Meta): - model = CoordinateGroups + model = CoordinateGroup fields = ('pk', 'name', 'description') default_columns = ('name', 'description') @@ -23,7 +23,7 @@ class CoordinateListTable(NetBoxTable): ) class Meta(NetBoxTable.Meta): - model = Coordinates + model = Coordinate fields = ('pk', 'group', 'device', 'x', 'y') default_columns = ('id', 'group', 'device', 'x', 'y') diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinates.html b/netbox_topology_views/templates/netbox_topology_views/coordinate.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinates.html rename to netbox_topology_views/templates/netbox_topology_views/coordinate.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinates_add.html b/netbox_topology_views/templates/netbox_topology_views/coordinate_add.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinates_add.html rename to netbox_topology_views/templates/netbox_topology_views/coordinate_add.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinates_edit.html b/netbox_topology_views/templates/netbox_topology_views/coordinate_edit.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinates_edit.html rename to netbox_topology_views/templates/netbox_topology_views/coordinate_edit.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinates_list.html b/netbox_topology_views/templates/netbox_topology_views/coordinate_list.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinates_list.html rename to netbox_topology_views/templates/netbox_topology_views/coordinate_list.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinategroups.html b/netbox_topology_views/templates/netbox_topology_views/coordinategroup.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinategroups.html rename to netbox_topology_views/templates/netbox_topology_views/coordinategroup.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinategroups_add.html b/netbox_topology_views/templates/netbox_topology_views/coordinategroup_add.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinategroups_add.html rename to netbox_topology_views/templates/netbox_topology_views/coordinategroup_add.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinategroups_edit.html b/netbox_topology_views/templates/netbox_topology_views/coordinategroup_edit.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinategroups_edit.html rename to netbox_topology_views/templates/netbox_topology_views/coordinategroup_edit.html diff --git a/netbox_topology_views/templates/netbox_topology_views/coordinategroups_list.html b/netbox_topology_views/templates/netbox_topology_views/coordinategroup_list.html similarity index 100% rename from netbox_topology_views/templates/netbox_topology_views/coordinategroups_list.html rename to netbox_topology_views/templates/netbox_topology_views/coordinategroup_list.html diff --git a/netbox_topology_views/urls.py b/netbox_topology_views/urls.py index f344c67..1b96f58 100644 --- a/netbox_topology_views/urls.py +++ b/netbox_topology_views/urls.py @@ -12,18 +12,18 @@ urlpatterns = ( path("individualoptions/", views.TopologyIndividualOptionsView.as_view(), name="individualoptions"), # Coordinate Group - path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroups_list"), - path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroups_add"), - path("coordinate-groups//", views.CoordinateGroupView.as_view(), name="coordinategroups"), - path("coordinate-groups//edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroups_edit"), - path("coordinate-groups//delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroups_delete"), - path("coordinate-groups//changelog/", views.CoordinateGroupChangeLogView.as_view(), name="coordinategroups_changelog", kwargs={'model': models.CoordinateGroups}), + path("coordinate-groups/", views.CoordinateGroupListView.as_view(), name="coordinategroup_list"), + path("coordinate-groups/add/", views.CoordinateGroupAddView.as_view(), name="coordinategroup_add"), + path("coordinate-groups//", views.CoordinateGroupView.as_view(), name="coordinategroup"), + path("coordinate-groups//edit/", views.CoordinateGroupEditView.as_view(), name="coordinategroup_edit"), + path("coordinate-groups//delete/", views.CoordinateGroupDeleteView.as_view(), name="coordinategroup_delete"), + path("coordinate-groups//changelog/", views.CoordinateGroupChangeLogView.as_view(), name="coordinategroup_changelog", kwargs={'model': models.CoordinateGroup}), # Coordinate - path("coordinates/", views.CoordinateListView.as_view(), name="coordinates_list"), - path("coordinates/add/", views.CoordinateAddView.as_view(), name="coordinates_add"), - path("coordinates//", views.CoordinateView.as_view(), name="coordinates"), - path("coordinates//edit/", views.CoordinateEditView.as_view(), name="coordinates_edit"), - path("coordinates//delete/", views.CoordinateDeleteView.as_view(), name="coordinates_delete"), - path("coordinates//changelog/", views.CoordinateChangeLogView.as_view(), name="coordinates_changelog", kwargs={'model': models.Coordinates}), + path("coordinate/", views.CoordinateListView.as_view(), name="coordinate_list"), + path("coordinate/add/", views.CoordinateAddView.as_view(), name="coordinate_add"), + path("coordinate//", views.CoordinateView.as_view(), name="coordinate"), + path("coordinate//edit/", views.CoordinateEditView.as_view(), name="coordinate_edit"), + path("coordinate//delete/", views.CoordinateDeleteView.as_view(), name="coordinate_delete"), + path("coordinate//changelog/", views.CoordinateChangeLogView.as_view(), name="coordinate_changelog", kwargs={'model': models.Coordinate}), ) diff --git a/netbox_topology_views/views.py b/netbox_topology_views/views.py index f775cc7..4ce3a12 100644 --- a/netbox_topology_views/views.py +++ b/netbox_topology_views/views.py @@ -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.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.utils import ( CONF_IMAGE_DIR, @@ -755,81 +755,81 @@ class TopologyImagesView(PermissionRequiredMixin, View): ) 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): - permission_required = 'netbox_topology_views.add_coordinates' + permission_required = 'netbox_topology_views.add_coordinate' - queryset = Coordinates.objects.all() + queryset = Coordinate.objects.all() form = CoordinatesForm - template_name = 'netbox_topology_views/coordinates_add.html' + template_name = 'netbox_topology_views/coordinate_add.html' 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 - template_name = 'netbox_topology_views/coordinates_list.html' + template_name = 'netbox_topology_views/coordinate_list.html' filterset = CoordinateFilterSet filterset_form = CoordinatesFilterForm 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 - template_name = 'netbox_topology_views/coordinates_edit.html' + template_name = 'netbox_topology_views/coordinate_edit.html' 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): - 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): - 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): - permission_required = 'netbox_topology_views.add_coordinategroups' + permission_required = 'netbox_topology_views.add_coordinategroup' - queryset = CoordinateGroups.objects.all() + queryset = CoordinateGroup.objects.all() form = CoordinateGroupsForm - template_name = 'netbox_topology_views/coordinategroups_add.html' + template_name = 'netbox_topology_views/coordinategroup_add.html' 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 - template_name = 'netbox_topology_views/coordinategroups_list.html' + template_name = 'netbox_topology_views/coordinategroup_list.html' 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 - template_name = 'netbox_topology_views/coordinategroups_edit.html' + template_name = 'netbox_topology_views/coordinategroup_edit.html' 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): - 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): - permission_required = 'netbox_topology_views.change_individualoptions' + permission_required = 'netbox_topology_views.change_individualoption' def post(self, request): instance = IndividualOptions.objects.get(user_id=request.user.id)