def filter_list_queryset(self, request, queryset, view):
label_filter = request.query_params.get('filter', None)
threshold_date = datetime.datetime.utcnow() - relativedelta(hours=24)
if label_filter == 'upcoming':
queryset = queryset.filter(
due_at__gt=threshold_date, progressreport__isnull=True
)
elif label_filter in ['complete', 'finished']:
queryset = queryset.filter(
progressreport__isnull=False
)
elif label_filter == 'missed':
queryset = queryset.filter(
due_at__lt=threshold_date, progressreport__isnull=True
)
if request.user.is_staff or request.user.is_superuser:
return queryset
return queryset.filter(
Q(created_by=request.user) |
Q(task__user=request.user) |
(
Q(task__participation__user=request.user) &
Q(task__participation__status__in=[STATUS_INITIAL, STATUS_ACCEPTED])
)
)
评论列表
文章目录