1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

review updates to svg rendering

This commit is contained in:
John Anderson
2019-12-11 13:39:10 -05:00
parent c09aefd509
commit 7f788eaa06
7 changed files with 137 additions and 109 deletions

View File

@@ -157,7 +157,7 @@ class RackUnitSerializer(serializers.Serializer):
"""
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(read_only=True)
face = ChoiceField(choices=DeviceFaceChoices, required=False, allow_null=True)
face = ChoiceField(choices=DeviceFaceChoices, read_only=True)
device = NestedDeviceSerializer(read_only=True)
@@ -172,12 +172,14 @@ class RackReservationSerializer(ValidatedModelSerializer):
class RackElevationDetailFilterSerializer(serializers.Serializer):
face = serializers.ChoiceField(choices=['front', 'rear'], default='front')
render_format = serializers.ChoiceField(choices=['json', 'svg'], default='json')
width = serializers.IntegerField(default=230)
unit_height = serializers.IntegerField(default=20)
face = serializers.ChoiceField(choices=DeviceFaceChoices, default=DeviceFaceChoices.FACE_FRONT)
render_format = serializers.ChoiceField(
choices=RackElecationDetailRenderFormatChoices,
default=RackElecationDetailRenderFormatChoices.RENDER_FORMAT_SVG
)
unit_width = serializers.IntegerField(default=RACK_ELEVATION_UNIT_WIDTH_DEFAULT)
unit_height = serializers.IntegerField(default=RACK_ELEVATION_UNIT_HEIGHT_DEFAULT)
exclude = serializers.IntegerField(required=False, default=None)
q = serializers.CharField(required=False, default=None)
expand_devices = serializers.BooleanField(required=False, default=True)

View File

@@ -219,17 +219,17 @@ class RackViewSet(CustomFieldModelViewSet):
data = serializer.validated_data
if data['render_format'] == 'svg':
drawing = rack.get_elevation_svg(data['face'], data['width'], data['unit_height'])
# Render and return the elevation as an SVG drawing with the correct content type
drawing = rack.get_elevation_svg(data['face'], data['unit_width'], data['unit_height'])
return HttpResponse(drawing.tostring(), content_type='image/svg+xml')
else:
# Return a JSON representation of the rack units in the elevation
elevation = rack.get_rack_units(
face=data['face'],
exclude=data['exclude'],
expand_devices=data['expand_devices']
)
if data['q']:
elevation = [u for u in elevation if data['q'] in str(u['id'])]
page = self.paginate_queryset(elevation)
if page is not None: