from django.shortcuts import render, get_object_or_404
from django.core.paginator import Paginator
from taggit.models import Tag
from .models import BlogPage, BlogCategory


def search_view(request):
    """Search blog posts."""
    search_query = request.GET.get('q', '')
    page_num = request.GET.get('page', 1)

    if search_query:
        # Search using Wagtail's search backend
        results = BlogPage.objects.live().search(search_query)
    else:
        results = BlogPage.objects.none()

    # Paginate results
    paginator = Paginator(results, 10)
    page = paginator.get_page(page_num)

    return render(request, 'blog/search_results.html', {
        'search_query': search_query,
        'results': page,
    })


def tag_view(request, tag_slug):
    """Display all blog posts with a specific tag."""
    tag = get_object_or_404(Tag, slug=tag_slug)
    posts = BlogPage.objects.live().filter(tags__slug=tag_slug).order_by('-first_published_at')

    return render(request, 'blog/tag_page.html', {
        'tag': tag,
        'posts': posts,
    })


def category_view(request, category_slug):
    """Display all blog posts in a specific category."""
    category = get_object_or_404(BlogCategory, slug=category_slug)
    posts = BlogPage.objects.live().filter(categories=category).order_by('-first_published_at')

    return render(request, 'blog/category_page.html', {
        'category': category,
        'posts': posts,
    })
