def edit_user(request): user = request.user rater = user.rater profile = user.profile if request.method == "POST": if "user_edit" in request.POST: user_form = UserForm(request.POST) if user_form.is_valid(): user_form.save(commit=False) password = user_form.password user.set_password(password) user.save() messages.add_message(request, messages.SUCCESS, "You have updated your account") elif "rater_edit" in request.POST: rater_form = RaterForm(request.POST) if rater_form.is_valid(): rater_form.save() messages.add_message(request, messages.SUCCESS, "You have updated your demographic info") elif "profile_edit" in request.POST: profile_form = ProfileForm(request.POST) if profile_form.is_valid(): profile_form.save() messages.add_message(request, messages.SUCCESS, "You have updated your profile") user_form = UserForm(request.POST or None, instance=request.user) rater_form = RaterForm(request.POST or None, instance=request.user.rater) profile_form = ProfileForm(request.POST or None, instance=request.user.profile) return render(request, "user_edit.html", {'user_form': user_form, 'rater_form': rater_form, 'profile_form':profile_form})
def view_dashboard(request): user = request.user rater = user.rater if request.method == "GET": pass elif request.method == "POST": if "user_edit" in request.POST: user_form = UserForm(request.POST) if user_form.is_valid(): user.username = requet.POST.get('username') user.email = requet.POST.get('email') user.save() messages.add_message(request, messages.SUCCESS, "You have updated your account") elif "rater_edit" in request.POST: rater_form = RaterForm(request.POST) if rater_form.is_valid(): rater.age = request.POST.get('age') rater.gender = request.POST.get('gender') rater.occupation = request.POST.get('occupation') rater.zip_code = request.POST.get('zip_code') rater.save() messages.add_message(request, messages.SUCCESS, "You have updated your profile") elif "delete_button" in request.POST: idx = int(request.POST.get('rating')) rating = Rating.objects.get(pk=idx) sometext = "Sucessfully deleted rating of {}".format(rating.movie.title) Rating.objects.get(pk=idx).delete() messages.add_message(request, messages.SUCCESS, sometext) user_form = UserForm(initial={'username':user.username, 'email':user.email}) rater_form = RaterForm(initial = {'age':rater.age, 'gender':rater.gender, 'occupation':rater.occupation, 'zip_code':rater.zip_code}) return render(request, "movies/dashboard.html", {'user_form': user_form, 'rater_form': rater_form})
def view_register(request): if request.method == "GET": user_form = UserForm() profile_form = ProfileForm() rater_form = RaterForm() elif request.method == "POST": user_form = UserForm(request.POST) rater_form = RaterForm(request.POST) profile_form = ProfileForm(request.POST) if user_form.is_valid() and rater_form.is_valid(): user = user_form.save() rater = rater_form.save(commit=False) rater.user = user profile = profile_form.save(commit=False) profile.user = user profile.age = rater.age profile.gender = rater.gender profile.save() rater.save() password = user.password # The form doesn't know to call this special method on user. user.set_password(password) user.save() # You must call authenticate before login. :( user = authenticate(username=user.username, password=password) login(request, user) messages.add_message( request, messages.SUCCESS, "Congratulations, {}, on creating your new account! You are now logged in.".format( user.username)) return redirect('/') return render(request, "profiles/register.html", {'user_form': user_form, 'rater_form': rater_form})