Exemplo n.º 1
0
def home_page(request):
    c = get_common_context(request)
    c['title'] = u'Главная'
    if request.method == "POST":
        c['registration_form'] = RegistrationForm(request.POST)
        if c['registration_form'].is_valid():
            c['registration_form'].save()
            c['registration_form'].send_email(request)
            user_email = c['registration_form'].cleaned_data['email']
            user_password = c['registration_form'].cleaned_data['password']
            user = authenticate(username=user_email, password=user_password)
            login(request, user)
            messages.success(request, u'Вы успешно зарегистрировались.')
            return HttpResponseRedirect('/cabinet/settings/')
        else:
            c['open_registration'] = True
    #c['request_url'] = 'home'


    c['ratings'] = RATING
    c['sizes'] = SIZE
    c['statuses'] = STATUS

    c['fun_title'] = u'Новые Фанфики на сайте'
    c['active_page'] = 'home'

    if request.GET.get('act', '') == 's':
        category = request.GET.get('cat', None)
        fandom = request.GET.get('fan', None)
        size = request.GET.get('size', None)
        status = request.GET.get('status', None)
        rating = request.GET.get('rating', None)
        mark = request.GET.get('mark', None)
        try:
            genre_yes = [int(x) for x in request.GET.getlist('g_yes', [])]
        except:
            genre_yes = None
        try:
            genre_no = [int(x) for x in request.GET.getlist('g_no', [])]
        except:
            genre_no = None
        try:
            warning_yes = [int(x) for x in request.GET.getlist('w_yes', [])]
        except:
            warning_yes = None
        try:
            warning_no = [int(x) for x in request.GET.getlist('w_no', [])]
        except:
            warning_no = None
        funfics = Work.search(category, fandom, size, rating, status, mark, genre_yes, genre_no, warning_yes, warning_no)

    elif request.GET.get('act', '') == 'f':
        category_yes = [int(x) for x in request.GET.getlist('c_yes', [])]
        category_no = [int(x) for x in request.GET.getlist('c_no', [])]
        genre_yes = [int(x) for x in request.GET.getlist('g_yes', [])]
        genre_no = [int(x) for x in request.GET.getlist('g_no', [])]
        funfics = Work.get_by_category_and_genre(category_yes, category_no, genre_yes, genre_no)

    else:
        funfics = Work.objects.all()

    sort_par = request.GET.get('sort', 'time')
    if sort_par == 'vizits':
        funfics = funfics.order_by('-vizits')
        print 'v'
    elif sort_par == 'comments':
        funfics = funfics.order_by('-commetns')
        print 'c'
    elif sort_par == 'rating':
        funfics = funfics.order_by('-mark')
        print 'r'
    else:
        funfics = funfics.order_by('-last_editing_time')
        sort_par = 'time'

    c['sort'] = sort_par

    paginator = Paginator(funfics, FUNCICS_COUNT_ON_PAGE)
    page = int(request.GET.get('page', '1'))
    try:
        funfics = paginator.page(page)
    except PageNotAnInteger:
        page = 1
        funfics = paginator.page(page)
    except EmptyPage:
        page = paginator.num_pages
        funfics = paginator.page(page)
    c['page'] = page
    c['page_range'] = paginator.page_range
    if len(c['page_range']) > 1:
        c['need_pagination'] = True

    c['old_args'] = request.META['QUERY_STRING'].replace('page', 'o').replace('sort', 'o')

    c['funfics'] = funfics
    return render_to_response('home.html', c, context_instance=RequestContext(request))