from django.views.generic import ListView, DetailView
from .models import Project, ProjectCategory

class ProjectListView(ListView):
    """
    Affiche la grille des projets.
    Gère le filtrage par catégorie via ?category=slug
    """
    model = Project
    template_name = 'projects/project_list.html' # Sera généré par l'IA Front
    context_object_name = 'projects'
    paginate_by = 9  # Pagination automatique (9 projets par page)

    def get_queryset(self):
        queryset = super().get_queryset()
        # Gestion du filtre ?category=...
        category_slug = self.request.GET.get('category')
        if category_slug:
            queryset = queryset.filter(category__slug=category_slug)
        return queryset

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # On passe toutes les catégories pour afficher les boutons de filtre
        context['categories'] = ProjectCategory.objects.all()
        # On renvoie la catégorie active pour le surlignage CSS
        context['active_category'] = self.request.GET.get('category', '')
        return context


class ProjectDetailView(DetailView):
    """
    Affiche la page complète d'un projet.
    """
    model = Project
    template_name = 'projects/project_detail.html'
    context_object_name = 'project'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        # Ajout de projets similaires (même catégorie, excluant l'actuel)
        if self.object.category:
            context['related_projects'] = Project.objects.filter(
                category=self.object.category
            ).exclude(id=self.object.id)[:3]
        return context