Programming

people_view

from django.shortcuts import render, redirect,get_object_or_404
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
from django.contrib import messages
from .forms import LoginForm, CreationForm, PasswordChangeForm, UpdateForm
from django.contrib.auth.decorators import login_required
from .models import Profile
from django.contrib.auth.decorators import login_required
from django.contrib.auth import update_session_auth_hash
from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.forms import PasswordChangeForm
from django.contrib.auth.models import User


def user_create(request):
    if request.method == 'POST':
        form = CreationForm(data = request.POST)
        if form.is_valid():
            user = form.save()
            messages.success(request, f'User {user.username} created successfully')
            return redirect('login')       
    else: 
        form = CreationForm()
    return render(request, 'people/register.html', {'form':form})

def user_login(request):
    if request.method == 'POST':
        form = LoginForm(request=request, data=request.POST)  # Pass the request object
        if form.is_valid():
            user = form.get_user()  # Use get_user() method
            login(request, user)
            request.session.save()  # Force saving session
            messages.success(request, 'Login Successful!')

            return redirect('home')
        else:
            messages.error(request, 'Invalid Username or Password')
    else:
        form = LoginForm()
    return render(request, 'people/login.html', {'form':form})

@login_required
def user_logout(request):
    logout(request)
    messages.success(request, 'Logged Out')
    return redirect('login')

@login_required
def user_update(request):
    if request.method == 'POST':
        user_form = UpdateForm(request.POST, request.FILES, instance=request.user)  # Add request.FILES for image upload
        if user_form.is_valid():
            user_form.save()
            messages.success(request, 'Profile updated successfully!')
            return redirect('profile-user', username=request.user.username)
        else:
            messages.error(request, 'Please correct the errors in the form.')
    else:
        user_form = UpdateForm(instance=request.user)
    return render(request, 'people/update_profile.html', {'form': user_form})

@login_required
def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(request.user, request.POST)
        if form.is_valid():
            user = form.save()
            update_session_auth_hash(request, user)  # Prevents logout after password change
            messages.success(request, 'Your password has been changed successfully!')
            return redirect('home')  # Redirect instead of rendering index.html
        else:
            messages.error(request, 'Error: Please check your input.')
            print(form.errors)  # Add this to debug errors

    else:
        form = PasswordChangeForm(request.user)

    return render(request, 'people/password.html', {'form': form})
    
@login_required
def profile_view(request, username):
    user_active = request.user
   
    # Get the target user by username, or return 404 if not found
    user = get_object_or_404(User, username=username)
    # Get the associated profile
    profile = get_object_or_404(Profile, user=user)
    if user_active == user:
        is_own = True
    else:
        is_own = False
    # Pass both the target user and their profile to the template
    return render(request, 'people/profile.html', {'user': user, 'profile': profile, 'is_own':is_own})

@login_required
def profile_list(request):
    user = request.user
    profiles = Profile.objects.all()
    return render(request, 'people/profile_list.html', {'user':user, 'profiles':profiles})

@login_required
def my_profile(request):
    return redirect('profile-user', username=request.user.username)
Helpful? Dislike 0 Log in to react