mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-13 19:18:16 -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
|
||||
devices = []
|
||||
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
|
||||
devices = [d for d in devices if d.id not in seen]
|
||||
seen.update([d.id for d in devices])
|
||||
@ -488,7 +488,7 @@ class TopologyMap(models.Model):
|
||||
device_superset = Q()
|
||||
for device_set in self.device_sets:
|
||||
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,))
|
||||
|
||||
# Draw edges depending on graph type
|
||||
@ -501,6 +501,13 @@ class TopologyMap(models.Model):
|
||||
|
||||
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):
|
||||
|
||||
from circuits.models import CircuitTermination
|
||||
|
Loading…
Reference in New Issue
Block a user