Housekeeping
This commit is contained in:
@@ -19,7 +19,9 @@ from netbox_topology_views.views import get_topology_data
|
|||||||
from netbox_topology_views.utils import get_image_from_url, export_data_to_xml, get_query_settings
|
from netbox_topology_views.utils import get_image_from_url, export_data_to_xml, get_query_settings
|
||||||
from netbox_topology_views.filters import DeviceFilterSet
|
from netbox_topology_views.filters import DeviceFilterSet
|
||||||
|
|
||||||
class SaveCoordsViewSet(ReadOnlyModelViewSet):
|
class SaveCoordsViewSet(PermissionRequiredMixin, ReadOnlyModelViewSet):
|
||||||
|
permission_required = 'netbox_topology_views.change_coordinate'
|
||||||
|
|
||||||
queryset = Device.objects.none()
|
queryset = Device.objects.none()
|
||||||
serializer_class = TopologyDummySerializer
|
serializer_class = TopologyDummySerializer
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
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 Coordinate, CoordinateGroup
|
|
||||||
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
|
||||||
from utilities.filters import TreeNodeMultipleChoiceFilter
|
from utilities.filters import TreeNodeMultipleChoiceFilter
|
||||||
|
from netbox_topology_views.models import CoordinateGroup, Coordinate
|
||||||
|
|
||||||
class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
class DeviceFilterSet(TenancyFilterSet, NetBoxModelFilterSet):
|
||||||
q = django_filters.CharFilter(
|
q = django_filters.CharFilter(
|
||||||
@@ -75,4 +74,4 @@ class CoordinatesFilterSet(NetBoxModelFilterSet):
|
|||||||
return queryset.filter(
|
return queryset.filter(
|
||||||
Q(group__name__icontains=value) |
|
Q(group__name__icontains=value) |
|
||||||
Q(device__name__icontains=value)
|
Q(device__name__icontains=value)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -15,13 +15,11 @@ from django.conf import settings
|
|||||||
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm
|
from netbox.forms import NetBoxModelFilterSetForm, NetBoxModelForm
|
||||||
from utilities.forms.fields import (
|
from utilities.forms.fields import (
|
||||||
TagFilterField,
|
TagFilterField,
|
||||||
DynamicModelChoiceField,
|
|
||||||
DynamicModelMultipleChoiceField,
|
DynamicModelMultipleChoiceField,
|
||||||
MultipleChoiceField
|
MultipleChoiceField
|
||||||
)
|
)
|
||||||
|
|
||||||
|
from netbox_topology_views.models import IndividualOptions, CoordinateGroup, Coordinate
|
||||||
from .models import IndividualOptions, CoordinateGroup, Coordinate
|
|
||||||
|
|
||||||
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
||||||
model = Device
|
model = Device
|
||||||
@@ -31,6 +29,11 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
(
|
(
|
||||||
"q",
|
"q",
|
||||||
"filter_id",
|
"filter_id",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
(
|
||||||
|
None,
|
||||||
|
(
|
||||||
"group",
|
"group",
|
||||||
"save_coords",
|
"save_coords",
|
||||||
"show_unconnected",
|
"show_unconnected",
|
||||||
@@ -63,7 +66,8 @@ class DeviceFilterForm(TenancyFilterForm, NetBoxModelFilterSetForm):
|
|||||||
)
|
)
|
||||||
group = forms.ModelChoiceField(
|
group = forms.ModelChoiceField(
|
||||||
queryset=CoordinateGroup.objects.all(),
|
queryset=CoordinateGroup.objects.all(),
|
||||||
required=False
|
required=False,
|
||||||
|
label=_("Coordinate group"),
|
||||||
)
|
)
|
||||||
region_id = DynamicModelMultipleChoiceField(
|
region_id = DynamicModelMultipleChoiceField(
|
||||||
queryset=Region.objects.all(), required=False, label=_("Region")
|
queryset=Region.objects.all(), required=False, label=_("Region")
|
||||||
|
|||||||
@@ -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 CoordinateGroup, Coordinate
|
from netbox_topology_views.models import CoordinateGroup, Coordinate
|
||||||
|
|
||||||
class CoordinateGroupListTable(NetBoxTable):
|
class CoordinateGroupListTable(NetBoxTable):
|
||||||
name = tables.Column(
|
name = tables.Column(
|
||||||
|
|||||||
@@ -55,7 +55,6 @@
|
|||||||
{# Applied filters #}
|
{# Applied filters #}
|
||||||
{% if filter_form %}
|
{% if filter_form %}
|
||||||
{% applied_filters model filter_form request.GET %}
|
{% applied_filters model filter_form request.GET %}
|
||||||
<hr style="margin-top: 0px;">
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<div class="tab-pane show active" id="networks" role="tabpanel" aria-labelledby="network-tab">
|
<div class="tab-pane show active" id="networks" role="tabpanel" aria-labelledby="network-tab">
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ def create_node(
|
|||||||
if group_id is None or group_id == "default":
|
if group_id is None or group_id == "default":
|
||||||
group_id = Coordinate.get_or_create_default_group(group_id)
|
group_id = Coordinate.get_or_create_default_group(group_id)
|
||||||
if not group_id:
|
if not group_id:
|
||||||
|
print('Exception occured while handling default group. Setting node to 0;0.')
|
||||||
node["x"] = 0
|
node["x"] = 0
|
||||||
node["y"] = 0
|
node["y"] = 0
|
||||||
return node
|
return node
|
||||||
@@ -855,7 +856,7 @@ class CoordinateGroupChangeLogView(PermissionRequiredMixin, ObjectChangeLogView)
|
|||||||
queryset = CoordinateGroup.objects.all()
|
queryset = CoordinateGroup.objects.all()
|
||||||
|
|
||||||
class TopologyIndividualOptionsView(PermissionRequiredMixin, View):
|
class TopologyIndividualOptionsView(PermissionRequiredMixin, View):
|
||||||
permission_required = 'netbox_topology_views.change_individualoption'
|
permission_required = 'netbox_topology_views.change_individualoptions'
|
||||||
|
|
||||||
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