Просмотр исходного кода

Support specification of image width when rendering cable traces as SVG

jeremystretch 4 лет назад
Родитель
Сommit
8cf9f0d5bc
2 измененных файлов с 11 добавлено и 3 удалено
  1. 6 1
      netbox/dcim/api/views.py
  2. 5 2
      netbox/dcim/models/device_components.py

+ 6 - 1
netbox/dcim/api/views.py

@@ -52,8 +52,13 @@ class PathEndpointMixin(object):
 
         if request.GET.get('render', None) == 'svg':
             # Render SVG
+            try:
+                width = min(int(request.GET.get('width')), 1600)
+            except ValueError:
+                width = None
             drawing = obj.get_trace_svg(
-                base_url=request.build_absolute_uri('/')
+                base_url=request.build_absolute_uri('/'),
+                width=width
             )
             return HttpResponse(drawing.tostring(), content_type='image/svg+xml')
 

+ 5 - 2
netbox/dcim/models/device_components.py

@@ -194,8 +194,11 @@ class PathEndpoint(models.Model):
         # Return the path as a list of three-tuples (A termination, cable, B termination)
         return list(zip(*[iter(path)] * 3))
 
-    def get_trace_svg(self, base_url=None):
-        trace = CableTraceSVG(self, base_url=base_url)
+    def get_trace_svg(self, base_url=None, width=None):
+        if width is not None:
+            trace = CableTraceSVG(self, base_url=base_url, width=width)
+        else:
+            trace = CableTraceSVG(self, base_url=base_url)
         return trace.render()
 
     @property