def get_normal_queryset(self): queryset = Problem.problems_list(self.request.user) if self.profile is not None and self.hide_solved: queryset = queryset.exclude(id__in=Submission.objects.filter(user=self.profile, points=F('problem__points')) .values_list('problem__id', flat=True)) if self.show_types: queryset = queryset.prefetch_related('types') if self.category is not None: queryset = queryset.filter(group__id=self.category) if self.request.user.has_perm('judge.see_private_problem'): filter = None see_restricted = self.request.user.has_perm('judge.see_restricted_problem') if self.problem_visibility == 1: filter = Q(is_public=True) elif self.problem_visibility == 2: filter = Q(is_public=False) if see_restricted: filter &= Q(is_restricted=False) elif self.problem_visibility == 3 and see_restricted: filter = Q(is_restricted=True, is_public=False) elif see_restricted: filter = Q(is_restricted=False) | Q(is_public=True) if filter is not None: queryset = queryset.filter(filter) if self.selected_types: queryset = queryset.filter(types__in=self.selected_types) if 'search' in self.request.GET: self.search_query = query = ' '.join(self.request.GET.getlist('search')).strip() if query: if settings.ENABLE_FTS and self.full_text: queryset = queryset.search(query, queryset.BOOLEAN).extra(order_by=['-relevance']) else: queryset = queryset.filter( Q(code__icontains=query) | Q(name__icontains=query) | Q(translations__name__icontains=query, translations__language=self.request.LANGUAGE_CODE)) self.prepoint_queryset = queryset if self.point_start is not None: queryset = queryset.filter(points__gte=self.point_start) if self.point_end is not None: queryset = queryset.filter(points__lte=self.point_end) return queryset.distinct()
def api_v1_problem_list(request): user = get_request_user(request) if not user.is_authenticated: return JsonResponse({}) queryset = Problem.problems_list(user) if settings.ENABLE_FTS and 'search' in request.GET: query = ' '.join(request.GET.getlist('search')).strip() if query: queryset = queryset.search(query) queryset = queryset.values_list('code', 'points', 'partial', 'name', 'group__full_name') return JsonResponse({ code: { 'points': points, 'partial': partial, 'name': name, 'group': group } for code, points, partial, name, group in queryset })
def items(self): return Problem.problems_list(AnonymousUser()).order_by('-date', '-id')[:25]
def items(self): return Problem.problems_list(AnonymousUser()).values_list('code')
def get_queryset(self): return Problem.problems_list(self.request.user).filter(Q(code__icontains=self.term) | Q(name__icontains=self.term))