Files
penracourses/generic/filters.py
T
2023-10-23 13:36:41 +01:00

90 lines
2.7 KiB
Python

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