def get(self, request, organization): queryset = OrganizationMember.objects.filter( Q(user__is_active=True) | Q(user__isnull=True), organization=organization, ).select_related('user').order_by('email', 'user__email') query = request.GET.get('query') if query: tokens = tokenize_query(query) for key, value in six.iteritems(tokens): if key == 'email': queryset = queryset.filter(Q(email__in=value) | Q(user__email__in=value) | Q(user__emails__email__in=value)) elif key == 'scope': queryset = queryset.filter(role__in=[r.id for r in roles.with_any_scope(value)]) elif key == 'role': queryset = queryset.filter(role__in=value) elif key == 'query': value = ' '.join(value) queryset = queryset.filter(Q(email__icontains=value) | Q(user__email__icontains=value) | Q(user__name__icontains=value)) else: queryset = queryset.none() return self.paginate( request=request, queryset=queryset, on_results=lambda x: serialize(x, request.user), paginator_cls=OffsetPaginator, )
def get(self, request, organization): queryset = (OrganizationMember.objects.filter( Q(user__is_active=True) | Q(user__isnull=True), organization=organization, invite_status=InviteStatus.APPROVED.value, ).select_related("user").order_by("email", "user__email")) query = request.GET.get("query") if query: tokens = tokenize_query(query) for key, value in six.iteritems(tokens): if key == "email": queryset = queryset.filter( Q(email__in=value) | Q(user__email__in=value) | Q(user__emails__email__in=value)) elif key == "scope": queryset = queryset.filter( role__in=[r.id for r in roles.with_any_scope(value)]) elif key == "role": queryset = queryset.filter(role__in=value) elif key == "query": value = " ".join(value) queryset = queryset.filter( Q(email__icontains=value) | Q(user__email__icontains=value) | Q(user__name__icontains=value)) else: queryset = queryset.none() return self.paginate( request=request, queryset=queryset, on_results=lambda x: serialize(x, request.user), paginator_cls=OffsetPaginator, )
def get(self, request, organization): queryset = OrganizationMember.objects.filter( Q(user__is_active=True) | Q(user__isnull=True), organization=organization, ).select_related('user').order_by('email', 'user__email') query = request.GET.get('query') if query: tokens = tokenize_query(query) for key, value in six.iteritems(tokens): if key == 'email': queryset = queryset.filter( Q(email__in=value) | Q(user__email__in=value) | Q(user__emails__email__in=value)) elif key == 'scope': queryset = queryset.filter( role__in=[r.id for r in roles.with_any_scope(value)]) elif key == 'role': queryset = queryset.filter(role__in=value) elif key == 'query': value = ' '.join(value) queryset = queryset.filter( Q(email__icontains=value) | Q(user__email__icontains=value) | Q(user__name__icontains=value)) else: queryset = queryset.none() return self.paginate( request=request, queryset=queryset, on_results=lambda x: serialize(x, request.user), paginator_cls=OffsetPaginator, )
def get(self, request, organization): queryset = (OrganizationMember.objects.filter( Q(user__is_active=True) | Q(user__isnull=True), organization=organization, invite_status=InviteStatus.APPROVED.value, ).select_related("user").order_by("email", "user__email")) query = request.GET.get("query") if query: tokens = tokenize_query(query) for key, value in six.iteritems(tokens): if key == "email": queryset = queryset.filter( Q(email__in=value) | Q(user__email__in=value) | Q(user__emails__email__in=value)) elif key == "scope": queryset = queryset.filter( role__in=[r.id for r in roles.with_any_scope(value)]) elif key == "role": queryset = queryset.filter(role__in=value) elif key == "isInvited": isInvited = "true" in value queryset = queryset.filter(user__isnull=isInvited) elif key == "ssoLinked": ssoFlag = OrganizationMember.flags["sso:linked"] ssoLinked = "true" in value if ssoLinked: queryset = queryset.filter( flags=F("flags").bitor(ssoFlag)) else: queryset = queryset.filter( flags=F("flags").bitand(~ssoFlag)) elif key == "has2fa": has2fa = "true" in value if has2fa: types = [ a.type for a in available_authenticators( ignore_backup=True) ] queryset = queryset.filter( user__authenticator__isnull=False, user__authenticator__type__in=types) else: queryset = queryset.filter( user__authenticator__isnull=True) elif key == "query": value = " ".join(value) queryset = queryset.filter( Q(email__icontains=value) | Q(user__email__icontains=value) | Q(user__name__icontains=value)) else: queryset = queryset.none() return self.paginate( request=request, queryset=queryset, on_results=lambda x: serialize(x, request.user), paginator_cls=OffsetPaginator, )