def details_solution(request, category_name, category_id, problem_name, problem_id): try: item = Problem.objects.active().select_related('translations').get(id=problem_id) except Problem.DoesNotExist: raise Http404 try: solution = Solution.objects.get(user=request.user, problem=item) except Solution.DoesNotExist: raise Http404 form = CodeSolutionFrontForm(initial={'solution': solution.id}) solution_list = CodeSolution.objects.filter(solution__problem__id=problem_id) solution_filter_form = CodeSolutionFilterForm(request.POST or None, initial={'problem': problem_id}) if request.POST and solution_filter_form.is_valid(): language = request.POST.get('language_filter', None) ordering = request.POST.get('ordering', None) if language: solution_list = solution_list.filter(language__code=language) if ordering: solution_list = solution_list.order_by(ordering) paginator = Paginator(solution_list, SOLUTIONS_PER_PAGE) try: items = paginator.page(request.POST.get('page', 1)) except PageNotAnInteger: items = paginator.page(1) except EmptyPage: items = paginator.page(paginator.num_pages) return {'item': item, 'form': form, 'solution': solution, 'items': items, 'solution_filter_form': solution_filter_form, 'menu_position': MENU_POSITION}
def code_solution_list(request): form = CodeSolutionFilterForm(request.POST) if form.is_valid(): items = CodeSolution.objects.filter(problem__id=request.POST['problem']) language_filter = request.POST.get('language_filter', None) if language_filter: items = items.filter(language__code=language_filter) items = items.order_by(request.POST.get('order_filter', 'created')) return { 'status_code': 200, 'items': items, } return { 'status_code': 500, 'error': u'Wystąpił błąd podczas pobierania listy rozwiązań.', }