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))