def post(self, request, username=None, mode=None): context = {} if username is not None: return self.get(request, username, mode) context['detailsform'] = DetailsForm(instance=request.user.details) context['userform'] = UserForm(instance=request.user) context['settingsform'] = SettingsForm(instance=request.user.settings) if mode == "details": form = DetailsForm(request.POST, instance=request.user.details) if form.is_valid(): form.save() messages.success(request, "Persoonsgegevens veranderd") return self.get(request) else: messages.warning(request, "Er zijn een paar velden niet goed ingevuld") context['detailsform'] = form elif mode == "profile": user = UserForm(request.POST, instance=request.user) if user.is_valid(): user.save() messages.success(request, "Profiel opgeslagen!") return self.get(request) else: messages.warning(request, "Er zijn een paar velden niet goed ingevuld") context['userform'] = user elif mode == "settings": settings = SettingsForm(request.POST, request.FILES, instance=request.user.settings) if settings.is_valid(): settings.save() messages.success(request, "Intelling gewijzigd") return self.get(request) else: messages.warning(request, "Er zijn een paar velden niet goed ingevuld") context['settingsform'] = settings return render(request, "account/profile.html", context)
def account_settings(request): """ *GET* Allows a user to change an account. *POST* Saves account with selected attributes *TEMPLATES* 'accounts/settings.html' """ from accounts.forms import SettingsForm if request.method == "GET": form = SettingsForm(request.user) redirect_to = "/home/#settings" if "next" in request.GET: redirect_to = request.GET["next"] return render_with_user(request, "accounts/settings.html", {"form": form, "redirect_to": redirect_to}) if request.method == "POST": form = SettingsForm(request.user, request.POST) form_valid = False redirect_to = request.GET.get("next", "/home/#settings") if form.is_valid(): # FORM IS VALID, CREATE USER form_valid = True form.save() return redirect(redirect_to) return render_with_user( request, "accounts/settings.html", {"form": form, "form_valid": form_valid, "redirect_to": redirect_to} )