def get_queryset(self): qry = AssignmentGroup.active_where_is_candidate(self.request.user) qry = qry.filter(is_open=True) qry = qry.filter( parentnode__delivery_types=0 ) # Only include ELECTRONIC - for now this makes sense, and if we need NON-ELECTRONIC, we make a new API, or add an option to this API. qry = qry.annotate(newest_deadline=Max("deadlines__deadline")) qry = qry.annotate(deadline_count=Count("deadlines__deadline")) qry = qry.filter(deadline_count__gt=0) # Only include assignments with one of: # - SOFT deadline handling # - deadline has NOT expired qry = qry.filter(Q(parentnode__deadline_handling=0) | Q(newest_deadline__gt=datetime.now())) only = self.request.GET.get("only", "") if only: if only == "deadline_not_expired": qry = qry.filter(newest_deadline__gte=datetime.now()) elif only == "deadline_expired": qry = qry.filter(newest_deadline__lt=datetime.now()) else: raise BadRequestError( "Invalid value for ``only``. Specify one of ``deadline_not_expired`` or ``deadline_expired``." ) qry = qry.order_by("newest_deadline") return qry
def get(self, request): devilry_qualifiesforexam_enabled = 'devilry_qualifiesforexam' in settings.INSTALLED_APPS if self.request.GET.get('activeonly', False) == 'true': qry = AssignmentGroup.active_where_is_candidate(self.request.user) else: qry = AssignmentGroup.published_where_is_candidate(self.request.user) return GroupedBySubjectSerialize(qry, devilry_qualifiesforexam_enabled, request.user).serialize()
def get_queryset(self): qry = AssignmentGroup.active_where_is_candidate(self.request.user) qry = qry.filter(is_open=True) qry = qry.annotate(newest_deadline=Max('deadlines__deadline')) qry = qry.annotate(deadline_count=Count('deadlines__deadline')) qry = qry.filter(deadline_count__gt=0) # Only include assignments with one of: # - SOFT deadline handling # - deadline has NOT expired qry = qry.filter(Q(parentnode__deadline_handling=0) | Q(newest_deadline__gt=datetime.now())) only = self.request.GET.get('only', '') if only: if only == 'deadline_not_expired': qry = qry.filter(newest_deadline__gte=datetime.now()) elif only == 'deadline_expired': qry = qry.filter(newest_deadline__lt=datetime.now()) else: raise BadRequestError('Invalid value for ``only``. Specify one of ``deadline_not_expired`` or ``deadline_expired``.') qry = qry.order_by('newest_deadline') return qry