from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import DetailView, UpdateView from django.urls import reverse_lazy from django.contrib import messages from . import models class ProfileDetail(LoginRequiredMixin, DetailView): model = models.Profile template_name = "profile_detail.html" active_menu = "profile" def get_object(self, queryset=None): return models.Profile.objects.get(user=self.request.user) class ProfileUpdate(LoginRequiredMixin, UpdateView): model = models.Profile fields = ["name", "description", "public_credit_name", "nickserv_username"] success_url = reverse_lazy("profiles:detail") template_name = "profile_form.html" def get_object(self, queryset=None): return models.Profile.objects.get(user=self.request.user) def form_valid(self, form, **kwargs): if ( "public_credit_name" in form.changed_data and form.cleaned_data["public_credit_name"] ): # user changed the name (to something non blank) form.instance.public_credit_name_approved = False form.instance.save() messages.success(self.request, "Your profile has been updated.") return super().form_valid(form, **kwargs)