Beispiel #1
0
def index(request):

    four_digits = 0
    empty_form = DigitsForm()
    
    if(request.GET.__contains__('digits')):
        four_digits = request.GET['digits']

    if(four_digits):
        template_name = 'solved.html'
        incoming_form = DigitsForm({'digits':four_digits})
        if(incoming_form.is_valid() and len(four_digits) == 4):
            digits = Digits(digits = four_digits, counter = 0)

            answer = Answer.objects.filter(digits__digits__exact = four_digits)
            if(answer):
                answer[0].digits.log(request)  # thanks to Denis G./M/Volgograd,RussianFederation for this syntax
            else:
                digits.save()
                digits.log(request)
                digits.solve()
                answer = Answer.objects.filter(digits__digits__exact = four_digits)

            output = beautify(answer)   # prepare for output
            return render_to_response(template_name, {'form':empty_form, 'answer':output})
        else:
            # there was an input error
            return render_to_response(template_name, {'form':incoming_form})
    else:
        # no digits sent
        template_name = 'index.html'
        return render_to_response(template_name, {'form':empty_form})
Beispiel #2
0
def statistics(request):
    sort_by = request.GET.get('by', 'counter')
    sort_dir = request.GET.get('dir', 'descending')

    dir_dic = {'descending':'-','ascending':''}
    dir_dic_keys = dir_dic.keys();
    if(sort_by not in ['digits', 'answer', 'counter']):
        sort_by = 'digits'
    if(sort_dir not in dir_dic_keys):
        sort_dir = 'descending'

    dir_dic_keys.remove(sort_dir)
    other_sort_direction = dir_dic_keys[0]
    
    answer_list = Answer.objects.all().order_by(dir_dic[sort_dir] + 'digits__' + sort_by, dir_dic[sort_dir] + 'digits__digits')    # second sort by digits simulates GROUP BY
    output = beautify(answer_list)   # prepare for output
    paginator = Paginator(output, 25, 5)  # Show 15 answer per page, at least 5 (and less than 20) on the last page

    # Make sure page request is an int. If not, deliver first page.
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    # If page request is an int, but the page DNE, go with the last page
    try:
        answer = paginator.page(page)
    except (EmptyPage, InvalidPage):
        answer = paginator.page(paginator.num_pages)
        
                            
    return render_to_response("statistics.html",{'answer':answer,'other_sort_direction':other_sort_direction})