def find_book(request): """ Generates list with books of data which user entered. At first it check full equality in name, after tries to check if contains some part of entered data. """ validate_api_secret_key(request.data.get('app_key')) request_serializer = FindBookRequest(data=request.data) if request_serializer.is_valid(): user = get_object_or_404(TheUser, auth_token=request.data.get('user_token')) search_data = request.data.get('search_term') filtered_books = Book.exclude_private_books( user.id_user, Book.fetch_books(search_data)) paginator = Paginator(filtered_books, OUTPUT_BOOKS_PER_PAGE) page = paginator.page(request.data.get('page')) next_page = page.has_next() page_books = page.object_list return Response( { 'detail': 'successful', 'data': { 'books': [BookSerializer(book).data for book in page_books], 'next_page': page.next_page_number() if next_page else 0 } }, status=status.HTTP_200_OK) else: return invalid_data_response(request_serializer)
def selected_category(request): """ Returns books from selected category. """ validate_api_secret_key(request.data.get('app_key')) request_serializer = SelectedCategoryRequest(data=request.data) if request_serializer.is_valid(): user = get_object_or_404(TheUser, auth_token=request.data.get('user_token')) category = get_object_or_404(Category, id=request.data.get('category_id')) books = Book.objects.filter(id_category=category).order_by('book_name') filtered_books = Book.exclude_private_books(user.id_user, books) paginator = Paginator(filtered_books, OUTPUT_BOOKS_PER_PAGE) page = paginator.page(request.data.get('page')) next_page = page.has_next() page_books = page.object_list return Response( { 'detail': 'successful', 'data': { 'books': [BookSerializer(book).data for book in page_books], 'next_page': page.next_page_number() if next_page else 0 } }, status=status.HTTP_200_OK) else: return invalid_data_response(request_serializer)