mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-15 12:08:17 -06:00
Allow definition of topo levels by tag.
This commit is contained in:
parent
7294f43fa3
commit
366f38056f
@ -469,7 +469,7 @@ class TopologyMap(models.Model):
|
|||||||
# Add each device to the graph
|
# Add each device to the graph
|
||||||
devices = []
|
devices = []
|
||||||
for query in device_set.strip(';').split(';'): # Split regexes on semicolons
|
for query in device_set.strip(';').split(';'): # Split regexes on semicolons
|
||||||
devices += Device.objects.filter(name__regex=query).select_related('device_role')
|
devices += Device.objects.filter(**self.get_filter(query)).select_related('device_role')
|
||||||
# Remove duplicate devices
|
# Remove duplicate devices
|
||||||
devices = [d for d in devices if d.id not in seen]
|
devices = [d for d in devices if d.id not in seen]
|
||||||
seen.update([d.id for d in devices])
|
seen.update([d.id for d in devices])
|
||||||
@ -488,7 +488,7 @@ class TopologyMap(models.Model):
|
|||||||
device_superset = Q()
|
device_superset = Q()
|
||||||
for device_set in self.device_sets:
|
for device_set in self.device_sets:
|
||||||
for query in device_set.split(';'): # Split regexes on semicolons
|
for query in device_set.split(';'): # Split regexes on semicolons
|
||||||
device_superset = device_superset | Q(name__regex=query)
|
device_superset = device_superset | Q(**self.get_filter(query))
|
||||||
devices = Device.objects.filter(*(device_superset,))
|
devices = Device.objects.filter(*(device_superset,))
|
||||||
|
|
||||||
# Draw edges depending on graph type
|
# Draw edges depending on graph type
|
||||||
@ -501,6 +501,13 @@ class TopologyMap(models.Model):
|
|||||||
|
|
||||||
return self.graph.pipe(format=img_format)
|
return self.graph.pipe(format=img_format)
|
||||||
|
|
||||||
|
def get_filter(self, splitq):
|
||||||
|
if splitq.startswith('@tag:'):
|
||||||
|
q = splitq[5:]
|
||||||
|
return {"tags__name__in": q.split(',')}
|
||||||
|
else:
|
||||||
|
return {"name__regex": splitq}
|
||||||
|
|
||||||
def add_network_connections(self, devices):
|
def add_network_connections(self, devices):
|
||||||
|
|
||||||
from circuits.models import CircuitTermination
|
from circuits.models import CircuitTermination
|
||||||
|
Loading…
Reference in New Issue
Block a user