import django_filters from .models import Rapid, CidUserAnswer, Exam from django.contrib.auth.models import User def get_exams(request): if request is None: return Exam.objects.none() if not request.user.groups.filter(name="rapid_checker").exists(): queryset = Exam.objects.filter(author__id=request.user.id) else: queryset = Exam.objects.all() return queryset def get_authors(request): if request is None: return User.objects.none() if not request.user.groups.filter(name="rapid_checker").exists(): queryset = User.objects.filter(id=request.user.id) else: queryset = User.objects.all() return queryset class RapidFilter(django_filters.FilterSet): exams = django_filters.ModelMultipleChoiceFilter(queryset=get_exams, null_label="No exam") author = django_filters.ModelMultipleChoiceFilter(queryset=get_authors, null_label="No author") class Meta: model = Rapid fields = ("normal", "abnormality", "region", "examination", "laterality", #"site", "created_date", "open_access") def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): if not request.user.groups.filter(name="rapid_checker").exists(): queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) super(RapidFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) pass class RapidUserAnswerFilter(django_filters.FilterSet): class Meta: model = CidUserAnswer fields = ( "cid", "normal", "answer", #"answer_compare", "exam", "created", "updated", ) def __init__(self, data=None, queryset=None, prefix=None, strict=None, user=None, request=None): if not request.user.groups.filter(name="rapid_checker").exists(): queryset = queryset.filter(open_access=True) | queryset.filter(author__id=request.user.id) super(RapidUserAnswerFilter, self).__init__(data=data, queryset=queryset, prefix=prefix, request=request) pass