def racks(self, request, *args, **kwargs): if self.get_object().is_offline: return Response( {'Error': 'Cannot get racks of an offline storage site.'}, status=status.HTTP_400_BAD_REQUEST) matches = self.get_object( ).rack_set # Rack.objects.filter(datacenter=self.get_object()) rs = RackOfAssetSerializer(matches, many=True, context={'request': request}) return Response(sorted(rs.data, key=lambda k: k['id']))
class AssetSeedForGraphSerializer(serializers.ModelSerializer): rack = RackOfAssetSerializer() network_ports = NetworkPortForSeedSerializer(source='network_port_set', many=True) class Meta: model = Asset fields = [ 'id', 'url', 'hostname', 'rack', 'rack_u', 'network_ports', 'asset_number' ]
class AssetOneLevelAwaySerializer(serializers.ModelSerializer): rack = RackOfAssetSerializer() network_ports = NetworkPortOneDegreeAwaySerializer( source='network_port_set', many=True) class Meta: model = Asset fields = [ 'id', 'url', 'hostname', 'rack', 'rack_u', 'network_ports', 'asset_number' ]
class AssetOfModelSerializer(serializers.HyperlinkedModelSerializer): datacenter = DatacenterSerializer() rack = RackOfAssetSerializer() class Meta: model = Asset fields = [ 'id', 'url', 'hostname', 'asset_number', 'datacenter', 'rack', 'rack_u', 'ovr_color', 'ovr_storage', 'ovr_cpu', 'ovr_memory', 'owner' ]
class AssetShortSerializer(AssetSerializer): model = ModelAssetSerializer() rack = RackOfAssetSerializer() owner = UserOfAssetSerializer() datacenter = DatacenterSerializer() class Meta: model = Asset fields = [ 'id', 'model', 'hostname', 'datacenter', 'rack', 'rack_u', 'ovr_color', 'ovr_storage', 'ovr_cpu', 'ovr_memory', 'asset_number', 'owner' ]
class AssetCPFetchSerializer(serializers.ModelSerializer): model = ModelAssetSerializer() datacenter = DatacenterSerializer() rack = RackOfAssetSerializer() owner = UserOfAssetSerializer() nps_cp = NPCPSerializer(source='npcp_set', many=True, read_only=True) pps_cp = PPCPSerializer(source='ppcp_set', many=True, read_only=True) class Meta: model = AssetCP fields = [ 'id', 'id_ref', 'hostname', 'cp', 'model', 'datacenter', 'rack', 'rack_u', 'nps_cp', 'pps_cp', 'owner', 'comment' ]
class AssetFetchSerializer(AssetSerializer): model = ModelAssetSerializer() rack = RackOfAssetSerializer() owner = UserOfAssetSerializer() datacenter = DatacenterSerializer() network_ports = NetworkPortSerializer(source='network_port_set', many=True) power_ports = PowerPortSerializer(source='power_port_set', many=True) class Meta: model = Asset fields = [ 'id', 'model', 'hostname', 'datacenter', 'rack', 'rack_u', 'owner', 'comment', 'network_ports', 'power_ports', 'ovr_color', 'ovr_storage', 'ovr_cpu', 'ovr_memory', 'asset_number' ]
class AssetTwoLevelsAwaySerializer(serializers.ModelSerializer): rack = RackOfAssetSerializer() class Meta: model = Asset fields = ['id', 'hostname', 'rack', 'rack_u']