"""
This module defines the views for the gnuviechadmin customer dashboard.

"""
from django.contrib.auth import get_user_model
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import DetailView, TemplateView
from gvacommon.viewmixins import StaffOrSelfLoginRequiredMixin

from hostingpackages.models import CustomerHostingPackage


class IndexView(LoginRequiredMixin, TemplateView):
    """
    This is the dashboard view.

    """

    template_name = "dashboard/index.html"


class UserDashboardView(StaffOrSelfLoginRequiredMixin, DetailView):
    """
    This is the user dashboard view.

    """

    model = get_user_model()
    context_object_name = "dashboard_user"
    slug_field = "username"
    template_name = "dashboard/user_dashboard.html"

    def get_context_data(self, **kwargs):
        context = super(UserDashboardView, self).get_context_data(**kwargs)
        context["hosting_packages"] = CustomerHostingPackage.objects.filter(
            customer=self.object
        )
        return context

    def get_customer_object(self):
        """
        Returns the customer object.

        """
        return self.get_object()
