Exemplo n.º 1
0
def search(request, page_number=1):
	if 'search' in request.session:
		login = check_sign_in(request)
		categories = Category.objects.all()
		data = request.session['search']
		args = {'login': login, 'categories': categories, 'tests_category': data.get('category','all'), 'url': '/tests/search/page/'}
		args.update(csrf(request))

		if request.method == 'POST':
			request.session['search']['text'] = request.POST.get('search','')

		#Проверка категории
		if data['category'] == 'all':
			tests = Test.objects.filter(public_access=True, title__icontains=data['text'])
			search_category_test = "Все"
		else:
			search_category_test = get_object_or_404(Category, url=data['category'])
			tests = Test.objects.filter(public_access=True, category=search_category_test, title__icontains=data['text'])
			
		
		args['search'] = {'text': data['text'], 'count': tests.count, 'category': search_category_test}
		current_page = Paginator(tests, 15)
		if int(page_number) > current_page.num_pages or int(page_number) < 1:
			raise Http404('Такой страницы нет')

		args['pages_count'] = get_number_name(current_page.num_pages + 2)
		args['tests'] = current_page.page(page_number)
		return render_to_response('tests.html', args)
	else:
		raise Http404('Что-то пошло не так')
Exemplo n.º 2
0
def tests(request, category = 'all', page_number = 1):
	login = check_sign_in(request)
	categories = Category.objects.all()
	args = {'login': login, 'categories': categories, 'tests_category': category}
	args.update(csrf(request))

	#удаляем сессию поиска, если присутствует
	if 'search' in request.session:
		del request.session['search']

	if request.method == 'GET':
		#Проверка категории
		if category == 'all':
			tests = Test.objects.filter(public_access=True)
			args['url'] = '/tests/page/'
		else:
			tests = Test.objects.filter(public_access=True, category__url=category)
			args['url'] = '/tests/category/%s/page/' % category
	elif request.method == 'POST':
		title = request.POST.get('search', '')
		request.session['search'] = {'text': title, 'category': category}
		return redirect('/tests/search/')
	#Пагинация
	current_page = Paginator(tests, 15)
	if int(page_number) > current_page.num_pages or int(page_number) < 1:
		raise Http404('Такой страницы нет')

	args['tests'] = current_page.page(page_number)
	args['pages_count'] = get_number_name(current_page.num_pages + 2)
	return render_to_response('tests.html', args)