from django.contrib.auth.mixins import LoginRequiredMixin
from django.views import generic

from collector.utils.mixins import ExtraContextMixin

from .forms import UserProfileForm
from .models import User


class DetailProfile(LoginRequiredMixin, ExtraContextMixin, generic.DetailView):
    model = User
    template_name = 'account/profile_info.html'
    context_object_name = 'profile'

    def get_title(self, **kwargs):
        return f'{self.title} - {self.request.user}'

    def get_object(self):
        return self.model.objects.get(username=self.request.user)


class UpdateProfile(LoginRequiredMixin, ExtraContextMixin, generic.UpdateView):
    model = User
    template_name = 'account/profile_update.html'
    context_object_name = 'profile'
    form_class = UserProfileForm

    def get_object(self):
        return self.model.objects.get(username=self.request.user)

    def get_title(self, **kwargs):
        return f'{self.title} - {self.kwargs.get("username", "account")}'