"""Public portfolio + light mentor helpers."""
from django.shortcuts import get_object_or_404, render
from django.views.generic import DetailView, TemplateView
from django.contrib.auth import get_user_model

from apps.courses.models import ProjectSubmission, SUBMISSION_APPROVED


User = get_user_model()


class PublicPortfolioView(DetailView):
    """
    Shareable portfolio of approved Learning Path projects.
    URL: /portfolio/<username>/
    """
    model = User
    slug_field = 'username'
    slug_url_kwarg = 'username'
    template_name = 'mentorship/portfolio.html'
    context_object_name = 'portfolio_user'

    def get_queryset(self):
        return User.objects.filter(is_active=True)

    def get_context_data(self, **kwargs):
        ctx = super().get_context_data(**kwargs)
        user = self.object
        submissions = (
            ProjectSubmission.objects.filter(
                user=user,
                status=SUBMISSION_APPROVED,
            )
            .select_related('project', 'project__course', 'project__course__category')
            .order_by('project__course__title', 'project__order')
        )
        ctx['submissions'] = submissions
        ctx['by_course'] = {}
        for sub in submissions:
            course = sub.project.course
            ctx['by_course'].setdefault(course, []).append(sub)
        return ctx
