""" Author: Michel Peltriaux Organization: Struktur- und Genehmigungsdirektion Nord, Rhineland-Palatinate, Germany Contact: ksp-servicestelle@sgdnord.rlp.de Created on: 18.08.22 """ from dal_select2.views import Select2QuerySetView from django.db.models import Q from user.models import User, Team class ShareUserAutocomplete(Select2QuerySetView): """ Autocomplete for share with single users """ def get_queryset(self): if self.request.user.is_anonymous: return User.objects.none() qs = User.objects.all() if self.q: # Due to privacy concerns only a full username match will return the proper user entry qs = qs.filter( Q(username=self.q) | Q(email=self.q) ).distinct() qs = qs.order_by("username") return qs class ShareTeamAutocomplete(Select2QuerySetView): """ Autocomplete for share with teams """ def get_queryset(self): if self.request.user.is_anonymous: return Team.objects.none() qs = Team.objects.filter( deleted__isnull=True ) if self.q: # Due to privacy concerns only a full username match will return the proper user entry q_parts = self.q.split(" ") q = Q() for part in q_parts: q &= Q(name__icontains=part) qs = qs.filter(q) qs = qs.order_by( "name" ) return qs