from django.contrib import messages
from django.shortcuts import redirect, render

from home.pagination import paginate

from .forms import TestimonialForm
from .models import Testimonial


def testimonials_list(request):
    featured = Testimonial.objects.filter(is_approved=True, is_featured=True).first()
    testimonials_qs = Testimonial.objects.filter(is_approved=True).exclude(
        pk=featured.pk if featured else None
    )
    page_obj, query_string, page_range = paginate(request, testimonials_qs, per_page=9)
    return render(request, 'testimonials/list.html', {
        'featured_testimonial': featured,
        'testimonials': page_obj,
        'page_obj': page_obj,
        'query_string': query_string,
        'page_range': page_range,
        'total_count': page_obj.paginator.count,
    })


def submit_testimonial(request):
    form = TestimonialForm(request.POST or None)
    if request.method == 'POST' and form.is_valid():
        testimonial = form.save(commit=False)
        testimonial.is_approved = False
        testimonial.save()
        messages.success(request, 'Thank you! Your story has been submitted for review.')
        return redirect('testimonials:list')
    return render(request, 'testimonials/submit.html', {'form': form})
