# -*- coding: utf-8 -*- # import itertools from rest_framework import generics from rest_framework.views import Response from common.permissions import IsValidUser from common.utils import get_request_os, is_true, distinct from terminal import serializers from terminal.connect_methods import ConnectMethodUtil __all__ = ['ConnectMethodListApi'] class ConnectMethodListApi(generics.ListAPIView): serializer_class = serializers.ConnectMethodSerializer permission_classes = [IsValidUser] def get_queryset(self): os = self.request.query_params.get('os') or get_request_os(self.request) flat = self.request.query_params.get('flat') if is_true(flat): queryset = ConnectMethodUtil.get_filtered_protocols_connect_methods(os) queryset = itertools.chain.from_iterable(queryset.values()) queryset = distinct(queryset, key=lambda x: x['value']) else: queryset = ConnectMethodUtil.get_user_allowed_connect_methods(os, self.request.user) return queryset def list(self, request, *args, **kwargs): queryset = self.get_queryset() return Response(queryset)