import django_filters from django.contrib.auth.models import User from generic.models import CidUser, Examination, Supervisor, UserGrades class CidUserFilter(django_filters.FilterSet): active = django_filters.BooleanFilter( field_name="active", label="CID active", initial=True ) class Meta: model = CidUser # fields = ("cid", "active", "internal_candidate", "group") fields = { "cid": ["contains"], "active": ["exact"], "internal_candidate": ["exact"], "group": ["exact"], "group__name": ["contains"], "email": ["contains"], } @property def qs(self): parent = super().qs # filter_active = getattr(self.request, 'active', True) if "active" not in self.request.GET: return parent.filter(active=True) return parent class UserUserFilter(django_filters.FilterSet): userprofile__grade = django_filters.ModelChoiceFilter(queryset=UserGrades.objects.all(),label="Grade") userprofile__supervisor = django_filters.ModelChoiceFilter(queryset=Supervisor.objects.all(), label="Supervisor") userprofile__peninsula_trainee = django_filters.BooleanFilter(label="Peninsula Trainee") #has_supervisor = django_filters.BooleanFilter(field_name='supervisor', lookup_expr='isnull', exclude=True, label="Has Supervisor") class Meta: model = User # fields = ("cid", "active", "internal_candidate", "group") fields = { "first_name": ["contains"], "last_name": ["contains"], #"active": ["exact"], "user_groups": ["exact"], "user_groups__name": ["contains"], #"userprofile__grade": ["exact"], #"userprofile__supervisor": ["exact"], "email": ["contains"], "is_active": ["exact"], "groups": ["exact"], } @property def qs(self): parent = super().qs ## filter_active = getattr(self.request, 'active', True) if "is_active" not in self.request.GET: return parent.filter(is_active=True) return parent def __init__(self, *args, **kwargs): super(UserUserFilter, self).__init__(*args, **kwargs) self.form.initial['is_active'] = True class ExaminationFilter(django_filters.FilterSet): class Meta: model = Examination fields = {"examination": ["icontains"], "modality": ["exact"]} def __init__( self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None, ): super(ExaminationFilter, self).__init__( data=data, queryset=queryset, prefix=prefix, request=request ) pass class SupervisorFilter(django_filters.FilterSet): class Meta: model = Supervisor fields = { "name": ["contains"], "email": ["contains"], "active": ["exact"], "site": ["exact"], } def __init__( self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None, ): super(SupervisorFilter, self).__init__( data=data, queryset=queryset, prefix=prefix, request=request ) pass