From 5fc3eac0f669fccd0fae89ce84aa862bbcbe9af2 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Oct 2017 10:13:39 +0000 Subject: [PATCH] Avoid creating repeated graph nodes where device matches multiple regexps Fixes #1498 --- netbox/extras/models.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/netbox/extras/models.py b/netbox/extras/models.py index 5181e88e9..1e7a73166 100644 --- a/netbox/extras/models.py +++ b/netbox/extras/models.py @@ -274,6 +274,7 @@ class TopologyMap(models.Model): # Construct the graph graph = graphviz.Graph() graph.graph_attr['ranksep'] = '1' + seen = set() for i, device_set in enumerate(self.device_sets): subgraph = graphviz.Graph(name='sg{}'.format(i)) @@ -288,6 +289,9 @@ class TopologyMap(models.Model): devices = [] for query in device_set.strip(';').split(';'): # Split regexes on semicolons devices += Device.objects.filter(name__regex=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]) for d in devices: bg_color = '#{}'.format(d.device_role.color) fg_color = '#{}'.format(foreground_color(d.device_role.color))