# coding: utf-8 # from orgs.mixins.api import OrgBulkModelViewSet from rest_framework import generics from ..hands import IsOrgAdminOrAppUser, IsOrgAdmin from .. import models, serializers from ..models import Application from assets.models import SystemUser from assets.serializers import SystemUserListSerializer from perms.models import ApplicationPermission from ..const import ApplicationCategoryChoices __all__ = ['ApplicationViewSet', 'ApplicationUserListApi'] class ApplicationViewSet(OrgBulkModelViewSet): model = Application filterset_fields = ('name', 'type', 'category') search_fields = filterset_fields permission_classes = (IsOrgAdminOrAppUser,) serializer_class = serializers.ApplicationSerializer class ApplicationUserListApi(generics.ListAPIView): permission_classes = (IsOrgAdmin, ) filterset_fields = ('name', 'username') search_fields = filterset_fields serializer_class = SystemUserListSerializer def get_application(self): application = None app_id = self.request.query_params.get('application_id') if app_id: application = Application.objects.get(id=app_id) return application def get_queryset(self): queryset = SystemUser.objects.none() application = self.get_application() if not application: return queryset system_user_ids = ApplicationPermission.objects.filter(applications=application)\ .values_list('system_users', flat=True) if not system_user_ids: return queryset queryset = SystemUser.objects.filter(id__in=system_user_ids) return queryset