def get_queryset(self):
date = self._extract_date()
user = self.request.user
queryset = get_user_model().objects.values('id')
queryset = queryset.annotate(
date=Value(date, DateField()),
)
# last_reported_date filter is set, a date can only be calucated
# for users with either at least one absence or report
if date is None:
users_with_reports = Report.objects.values('user').distinct()
users_with_absences = Absence.objects.values('user').distinct()
active_users = users_with_reports.union(users_with_absences)
queryset = queryset.filter(id__in=active_users)
queryset = queryset.annotate(
pk=Concat(
'id',
Value('_'),
'date',
output_field=CharField()
)
)
if not user.is_superuser:
queryset = queryset.filter(
Q(id=user.id) | Q(supervisors=user)
)
return queryset
评论列表
文章目录