from django.views.generic import CreateView, UpdateView from django.urls import reverse_lazy from django.shortcuts import redirect from django.contrib import messages from .models import ClientProfile from localauth.mixins import LoginRequiredMixin from public.mixins import InConstructionMixin class ClientRegistrationView(InConstructionMixin, LoginRequiredMixin, CreateView): model = ClientProfile exclude = ["user"] template_name = "clients/signup.html" fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"] def form_valid(self, form): form.instance.user = self.request.user return super().form_valid(form) def get_success_url(self): messages.success(self.request, "Profil erfolgreich angelegt!") return reverse_lazy("clients:profile") def get_initial(self): try: partner = self.request.user.partnerprofile return { "company": partner.company, "vat_id": partner.vat_id, "first_name": partner.first_name, "last_name": partner.last_name, "street": partner.street, "city": partner.city, "zip": partner.zip, "state": partner.state, "country": partner.country } except: return {} class ClientProfileView(InConstructionMixin, LoginRequiredMixin, UpdateView): model = ClientProfile exclude = ["user"] template_name = "clients/profile.html" fields = ["company", "vat_id", "first_name", "last_name", "street", "city", "zip", "state", "country"] def get_success_url(self): return reverse_lazy("clients:profile") def get_object(self, queryset=None): return self.request.user.clientprofile def get(self, request, *args, **kwargs): try: return super().get(request, *args, **kwargs) except ClientProfile.DoesNotExist: return redirect("clients:register")