Exemple #1
0
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}
Exemple #2
0
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ń.',
    }